Python: il prodotto di matrici

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
python esercizi

Moltiplicazione di una matrice per uno scalare

La moltiplicazione per uno scalare è un’operazione che, data una matrice A ed un numero c (detto scalare), costruisce una nuova matrice cA, il cui elemento è ottenuto moltiplicando l’elemento corrispondente di A per c

(cA)ij = cAi,j

Esempio

moltiplicazione di una matrice per uno scalare

Prodotto tra matrici AxB

È definito soltanto se il numero di righe di B coincide con il numero n di colonne di A.

Il risultato è una matrice con lo stesso numero di righe di A e lo stesso numero di colonne di B.

  • Se A è una matrice mxn e B una matrice nxl, C = A x B sarà una matrice mxl
  • L’elemento di posizione (i,j) in C è dato dalla somma

prodotto di due matrici

Esempio 1

Moltiplicando una matrice 2 x 3 per una matrice 3 x 3 si ottiene una matrice 2 x 3 

prodotto di due matrici esempio

Il risultato è una matrice 2 x 3


Matrici quadrate

  • Una matrice si dice quadrata se ha lo stesso numero di righe e colonne.
  • Una matrice quadrata ha una diagonale principale, quella formata da tutti gli elementi ai,i con indici uguali. La somma di questi elementi è chiamata traccia. L’operazione di trasposizione trasforma una matrice quadrata A nella matrice At ottenuta scambiando ogni ai,j con aj,i, in altre parole ribaltando la matrice intorno alla sua diagonale principale.
  • Una matrice tale che ai,j = aj,i è una matrice simmetrica. In altre parole, A è simmetrica se A = At
  • Se tutti gli elementi che non stanno nella diagonale principale sono nulli, la matrice è detta diagonale.

Il prodotto di matrici in Python

Implementare il prodotto di matrici in Python che richiede un po’  più di operazioni rispetto al codice che abbiamo visto per l’addizione:

Forse potrebbe interessarti anche:  Python: Somma di matrici.
A =[[2,3],[5,-8]]
B = [[1,-4],[8,-6]]
Def multmatrix(a,b):
#Restituisce il prodotto della matrice a per la matrice b
  m = len(a) #numero di righe della prima matrice
  n = len(b[0]) #numero di colonne della seconda matrice
  newmatrix = []
  for i in range(m):
    row = []
    # per ogni colonna di b...
    for j in range(n):
      sum1 = 0
      # per ogni elemento nella colonna
      for k in range(len(b)):
        sum1 += a[i][k]*b[k][j]
      row.append(sum1)
    newmatrix.append(row)
  return newmatrix
C =multmatrix(A,B)
print(C)
⇒ [[26, -26], [-59, 28]]
Testiamo ora questo programma moltiplicando una matrice 1 × 4 per una 4 × 2:
A =[[1,2,-3,-1]]
B = [[4,-1],[-2,3],[6,-3],[1,0]]
def multmatrix(a,b):
#Restituisce il prodotto della matricea per la matrice b
  m = len(a) #numero di righe della prima matrice
  n = len(b[0]) #numero di colonne della seconda matrice
  newmatrix = []
  for i in range(m):
    row = []
    # per ogni colonna di b...
    for j in range(n):
      sum1 = 0
      # per ogni elemento nella colonna
      for k in range(len(b)):
        sum1 += a[i][k]*b[k][j]
      row.append(sum1)
    newmatrix.append(row)
  return newmatrix
C =multmatrix(A,B)
print(C)
⇒[[-19, 14]]
Infatti:
python prodotto di due matrici
Quindi il nostro programma funziona!
Facciamo un’ultima prova moltiplicando due matrici 2 x 2:
A = [[1,-2],[2,1]]
B = [[3,-4],[5,6]]
C =multmatrix(A,B)
print(C)
⇒[[-7, -16], [11, -2]]

L’ordine dei fattori nel prodotto di matrici conta!

Una cosa importante da ricordare èche nel prodotto di matrici A xB non necessariamente è uguale a B x A:

Vediamo cosa succede invertendo le matrici dell’ esempio precedente:

A = [[3,-4],[5,6]]
B = [[1,-2],[2,1]]
C =multmatrix(A,B)
print(C)
⇒[[-3, -4], [4, -3]]
Come potete vedere, la matrice risultato è assolutamente differente da quella precedente!