Matrici quadrate

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…

  1. Matrice unitaria (tutti i valori sono nulli tranne sulla diagonale principale che contiene solo 1)
  2. Matrice 101 (tutti i valori sono 1 tranne sulla diagonale principale che contiene solo 0)
  3. Diagonale superiore (dalla diagonale principale in su tutti 1)
  4. Diagonale inferiore (dalla diagonale principale in giù tutti 1)