Determinante (regola di Sarrus)

Vedi la discussione

Soluzione 1

def determinante(m):
    #------------------------------------- Matrice di Sarrus
    sarrus=[]
    for r in range(3):
        riga=[]
        for c in range(3):
            riga.append(m[r][c])
        riga.append(m[r][0])
        riga.append(m[r][1])
        sarrus.append(riga)
    #------------------------------------- Determinante
    somma = 0

    for c in range(0,3):
        prod=1
        for k in range(3):
            prod *= sarrus[k][c+k]
        somma += prod

    for c in range(3):
        prod=1
        for k in range(3):
            prod *= sarrus[2-k][c+k]
        somma -= prod

    return somma

Soluzione 2

Non è necessario generare una nuova matrice.
L’indice della colonna viene ridotto all’intervallo 0..2 con %

def determinante(m):
    somma = 0

    for c in range(0,3):
        prod=1
        for k in range(3):
            prod *= sarrus[k][(c+k)%3]
        somma += prod

    for c in range(3):
        prod=1
        for k in range(3):
            prod *= sarrus[2-k][(c+k)%3]
        somma -= prod

    return somma

Soluzione 3

Si tratta di 6 prodotti… si potrebbero scrivere esplicitamente…

def determinante(m):
    return ...