Sistemi lineari (Cramer e Laplace)

Il codice seguente è poco strutturato…

Risolve il sistema lineare con la regola di Cramer e

def cramer(A, b):
    n  = len(A)    
    dA = determinante(A)             # Determinante di A
    x  = []                          # Vettore soluzione, vuoto
    for colonna in range(n):         # Per ogni colonna di A...
        cA = copia(A)                # Calcola il det. di A con b nella colonna c
        for riga in range(n):
            cA[riga][colonna] = b[riga]
        dcA = determinante(cA)  
        xc = dcA/dA                  # Calcola xc come rapporto tra ...
        x.append(xc)                 # Aggiunge xc al vettore soluzione x
    return x

Prova

A = [ [2,7], [1,0] ]
b = [ 27, 10 ]

x = cramer(A, b)
  
for i, xi in enumerate(x):
    print("x%i = %f" %(i+1, xi))     

# x1 = 10.000000
# x2 = 1.000000