Matrici quadrate

Considera le tre matrici seguenti come parametri attuali nelle chiamate delle funzioni

A = [ [2, 7], [1, 0] ]
B = [ [1, 2], [0, 4] ]
C = [ [1, 8], [0, 5] ]

Copia

def copia(m1):
    m2=[]
    n=len(m1)  
    for r in range(n): 
        riga=[] 
        for c in range(n): 
            riga.append(m1[r][c]) 
        m2.append(riga) 
    return m2
def copia(m1):
    m2=[] 
    for r1 in m1: 
        r2=[] 
        for x in r1: 
            r2.append(x) 
        m2.append(r2) 
    return m2

Sottomatrice

Crea una sottomatrice di m
Copia tutto tranne la riga er e la colonna ec

def sottoMatrice(m, er, ec):      
    n=len(m)

    mm=[]
    for r in range(n):
        if(r != er): 
            riga=[]
            for c in range(n):
                if(c != ec):
                    riga.append(m[r][c])
            mm.append(riga)   

    return mm

Trasposta

def trasposta(m1):
    m2=[]
    n=len(m1)
    for r in range(n):
        riga=[]
        for c in range(n):
            riga.append(m1[c][r])
        m2.append(riga)
    return m2

Prodotto per uno scalare

def scalare(k, m1): 
    m2=[] 
    n=len(m1) 
    for r in range(n): 
        riga=[] 
        for c in range(n): 
            riga.append(k*m1[r][c] ) 
        m2.append(riga) 
    return m2 
def scalare(k, m1):
    m2=[] 
    for r1 in m1: 
        r2=[] 
        for x in r1: 
            r2.append(k*x) 
        m2.append(r2) 
    return m2
print(scalare(2, A))  # [[4,14], [2, 0]]
print(scalare(2, B))  # [[2, 4], [0, 8]]
print(scalare(2, C))  # [[2,16], [0,10]]

Somma

def somma(m1, m2):   
    m3=[]
    n=len(mat1)
    for r in range(n): 
        riga=[] 
        for c in range(n): 
            riga.append(m1[r][c]+m2[r][c]) 
        m3.append(riga) 
    return m3
def somma(m1, m2):   
    m3=[] 
    for r1, r2 in zip(m1, m2): 
        r3=[] 
        for x1, x2 in zip(r1, r2): 
            r3.append(x1+x2) 
        m3.append(r3) 
    return m3
print(somma(A, B))  # [[3,  9], [1, 4]]
print(somma(A, C))  # [[3, 15], [1, 5]]
print(somma(B, C))  # [[2, 10], [0, 9]]

Prodotto

def prodotto(m1, m2):   
    m3=[] 
    n=len(m1)
    for r in range(n): 
        riga=[] 
        for c in range(n): 
            x=0
            for k in range(n): 
                x += m1[r][k] * m2[k][c]
            riga.append(x) 
        m3.append(riga) 
    return m3 
def prodotto(m1, m2):   
    m3=[]
    m2t=trasposta(m2)
    for r1 in m1: 
        r3=[]
        for r2 in m2t:
            x=0
            for x1, x2 in zip(r1, r2):
                x += x1*x2 
            r3.append(x) 
        m3.append(r3) 
    return m3
print(prodotto(A, B))  # [[2, 32], [1,  2]]
print(prodotto(A, C))  # [[2, 51], [1,  8]]
print(prodotto(B, C))  # [[1, 18], [0, 20]]


Matrice nulla

Una matrice quadrata, piena di zeri, di dimensione n

def nulla(n):
    m=[]
    for r in range(n):
        riga=n*[0] 
        m.append(riga)   
    return m

D=creaZeri(3)

Utilizza la funzione precedente per creare la struttura della matrice e poi modifica solo gli elementi diversi da zero

Copia

def copia(m1):
    n=len(mat) 
    m2=nulla(n)
    for r in range(n): 
        for c in range(n): 
            m2[r][c]=m1[r][c]
    return m2

D=copia(matA)

Prodotto per uno scalare

def scalare(k, m1):   
    n=len(m1)
    m2=nulla(n)
    for r in range(n):
        for c in range(n):
            m2[r][c]=k*m1[r][c] 
    return m2 

D=scalare(2, A)  # [[4,14], [2, 0]]
D=scalare(2, B)  # [[2, 4], [0, 8]]
D=scalare(2, C)  # [[2,16], [0,10]]

Somma

def somma(m1, m2):   
    n=len(m1) 
    m3=nulla(n)
    for r in range(n):
        for c in range(n):
            m3[r][c]=m1[r][c]+m2[r][c]
    return m3

D=somma(A, B)  # [[3,  9], [1, 4]]
D=somma(A, C)  # [[3, 15], [1, 5]]
D=somma(B, C)  # [[2, 10], [0, 9]]

Prodotto

def prodotto(m1, m2):   
    n=len(m1) 
    m3=nulla(n, n)
    for r in range(n):
        for c in range(n):
            x=0  
            for k in range(n):
                x += m1[r][k]*m2[k][c]
            m3[r][c]=x   
    return m3

D=prodotto(A, B)  # [[2, 32], [1,  2]]
D=prodotto(A, C)  # [[2, 51], [1,  8]]
D=prodotto(B, C)  # [[1, 18], [0, 20]]

Continua…

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