Considera le tre matrici seguenti come parametri attuali nelle chiamate delle funzioni
matA=[ [2,7], [1,0] ] matB=[ [1,2], [0,4] ] matC=[ [1,8], [0,5] ]
Copia
def copia(mat): n=len(mat) mm=[] for r in range(n): riga=[] for c in range(n): riga.append(mat[r]) mm.append(riga) return mm matD=copia(matA)
Prodotto per uno scalare
def scalare(k, mat): n=len(mat) mm=[] for r in range(n): riga=[] for c in range(n): x=k*mat[r] riga.append(x) mm.append(riga) return mm print(scalare(2, matA)) # [[4,14], [2, 0]] print(scalare(2, matB)) # [[2, 4], [0, 8]] print(scalare(2, matC)) # [[2,16], [0,10]]
Somma
def somma(mat1, mat2): n=len(mat1) mm=[] for r in range(n): riga=[] for c in range(n): x=mat1[r]+mat2[r] riga.append(x) mm.append(riga) return mm print(somma(matA, matB)) # [[3, 9], [1, 4]] print(somma(matA, matC)) # [[3, 15], [1, 5]] print(somma(matB, matC)) # [[2, 10], [0, 9]]
Prodotto
def prodotto(mat1, mat2): n=len(mat1) mm=[] for r in range(n): riga=[] for c in range(n): x=0 for k in range(n): x += mat1[r][k]*mat2[k] riga.append(x) mm.append(riga) return mm print(prodotto(matA,matB)) # [[2, 32], [1, 2]] print(prodotto(matA,matC)) # [[2, 51], [1, 8]] print(prodotto(matB,matC)) # [[1, 18], [0, 20]]
Matrice nulla
Una matrice quadrata, piena di zeri, di dimensione n
def creaZeri(n): mm=[] for r in range(n): riga=n*[0] mm.append(riga) return mm matD=creaZeri(3)
Utilizza la funzione precedente per creare la struttura della matrice e poi modifica solo gli elementi diversi da zero
Copia
def copia(mat): n=len(mat) mm=creaZeri(n) for r in range(n): for c in range(n): mm[r]=mat[r] return mm matD=copia(matA)
Prodotto per uno scalare
def scalare(k, mat): n=len(mat) mm=creaZeri(n) for r in range(n): for c in range(n): mm[r]=k*mat[r] return mm matD=scalare(2, matA) # [[4,14], [2, 0]] matD=scalare(2, matB) # [[2, 4], [0, 8]] matD=scalare(2, matC) # [[2,16], [0,10]]
Somma
def somma(mat1, mat2): n=len(mat1) mm=creaZeri(n) for r in range(n): for c in range(n): mm[r]=mat1[r]+mat2[r] return mm matD=somma(matA, matB) # [[3, 9], [1, 4]] matD=somma(matA, matC) # [[3, 15], [1, 5]] matD=somma(matB, matC) # [[2, 10], [0, 9]]
Prodotto
def prodotto(mat1, mat2): n=len(mat1) mm=creaZeri(n, n) for r in range(n): for c in range(n): x=0 for k in range(n): x += mat1[r][k]*mat2[k] mm[r]=x return mm matD=prodotto(matA, matB) # [[2, 32], [1, 2]] matD=prodotto(matA, matC) # [[2, 51], [1, 8]] matD=prodotto(matB, matC) # [[1, 18], [0, 20]]
Continua…
- Matrice unitaria (tutti i valori sono nulli tranne sulla diagonale principale che contiene solo 1)
- Matrice 101 (tutti i valori sono 1 tranne sulla diagonale principale che contiene solo 0)
- Diagonale superiore (dalla diagonale principale in su tutti 1)
- Diagonale inferiore (dalla diagonale principale in giù tutti 1)
- …