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,9], [0,5,9] ]
Prodotto per uno scalare
def scalare(k, mat): nr=len(mat) nc=len(mat[0]) mm=[] for r in range(nr): riga=[] for c in range(nc): 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,18], # [0,10,18]]
Somma
def somma(mat1, mat2): nr1=len(mat1) nc1=len(mat1[0]) nr2=len(mat2) nc2=len(mat2[0]) if(nr1 != nr2) or (nc1 != nc2): return mm=[] for r in range(nr1): riga=[] for c in range(nc1): 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)) # None print(somma(matB, matC)) # None
Prodotto
def prodotto(mat1, mat2): nr1=len(mat1) nc1=len(mat1[0]) nr2=len(mat2) nc2=len(mat2[0]) if(nc1 != nr2): return mm=[] for r in range(nr1): riga=[] for c in range(nc1): x=0 for k in range(nc1): 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,81], [1,8,9] ] print(prodotto(matB, matC)) # [[1,18,27], [0,20,36]] print(prodotto(matC, matA)) # None
Matrice nulla
Crea una matrice piena di zeri di dimensione nr x nc
def creaZeri(nr, nc): mm=[] for r in range(nr): riga=nc*[0] mm.append(riga) return mm
Utilizza la matrice nulla come griglia da riempire successivamente
Prodotto per uno scalare
def scalare(k, mat): nr=len(mat) nc=len(mat[0]) mm=creaZeri(nr, nc) for r in range(nr): for c in range(nc): mm[r]=k*mat[r] return mm print(scalare(2, matA)) # [[4,14], # [2, 0]] print(scalare(2, matB)) # [[2, 4], # [0, 8]] print(scalare(2, matC)) # [[2,16,18], # [0,10,18]]
Somma
def somma(mat1, mat2): nr1=len(mat1) nc1=len(mat1[0]) nr2=len(mat2) nc2=len(mat2[0]) if(nr1 != nr2) or (nc1 != nc2): return mm=creaZeri(nr1, nc1) for r in range(nr1): for c in range(nc1): x=mat1[r]+mat2[r] mm[r]=x return mm print(somma(matA, matB)) # [[3, 9], [1, 4]] print(somma(matA, matC)) # None print(somma(matB, matC)) # None
Prodotto
def prodotto(mat1, mat2): nr1=len(mat1) nc1=len(mat1[0]) nr2=len(mat2) nc2=len(mat2[0]) if(nc1 != nr2): return mm=creaZeri(nr1, nc2) for r in range(nr1): for c in range(nc2): x=0 for k in range(nc1): x += mat1[r][k]*mat2[k] mm[r]=x return mm print(prodotto(matA, matB)) # [[2,32] , [1,2] ] print(prodotto(matA, matC)) # [[2,51,81], [1,8,9] ] print(prodotto(matB, matC)) # [[1,18,27], [0,20,36]] print(prodotto(matC, matA)) # None