Moltiplicazione di matrici

Il disegno mostra il caso in cui A è 4 × 2 e B è 2 × 3, e si voglia calcolare l'elemento (C)12 = (AB)12 della matrice prodotto C = A x B, di dimensioni 4 x 3:
( C ) 12 = r = 1 2 a 1 r b r 2 = a 11 b 12 + a 12 b 22 {\displaystyle (C)_{12}=\sum _{r=1}^{2}a_{1r}b_{r2}=a_{11}b_{12}+a_{12}b_{22}}

In matematica, e più precisamente in algebra lineare, la moltiplicazione di matrici è il prodotto righe per colonne tra due matrici, possibile sotto certe condizioni, che dà luogo ad un'altra matrice. Se una matrice rappresenta una applicazione lineare, il prodotto fra matrici è la traduzione della composizione di due applicazioni lineari. Quindi se due matrici 2 x 2 rappresentano ad esempio due rotazioni nel piano di angoli α e β, il loro prodotto è definito in modo tale da rappresentare una rotazione di angolo α + β.

Definizione

Sia K {\displaystyle K} un anello. Siano date una matrice A {\displaystyle A} di dimensione m × n {\displaystyle m\times n} ed una seconda matrice B {\displaystyle B} di dimensioni n × p {\displaystyle n\times p} a valori in K {\displaystyle K} . Siano a i j {\displaystyle a_{ij}} gli elementi di A {\displaystyle A} e b i j {\displaystyle b_{ij}} gli elementi di B {\displaystyle B} . Si definisce il prodotto matriciale di A {\displaystyle A} per B {\displaystyle B} la matrice C = A B {\displaystyle C=AB} a valori in K {\displaystyle K} e di dimensioni m × p {\displaystyle m\times p} i cui elementi c i j {\displaystyle c_{ij}} sono dati da:[1]

c i j = r = 1 n a i r b r j = a i 1 b 1 j + a i 2 b 2 j + + a i n b n j {\displaystyle c_{ij}=\sum _{r=1}^{n}a_{ir}b_{rj}=a_{i1}b_{1j}+a_{i2}b_{2j}+\cdots +a_{in}b_{nj}}

per ogni valore di riga i {\displaystyle i} e di colonna j . {\displaystyle j.}

Due matrici possono essere moltiplicate fra loro solo se il numero di colonne della prima è uguale al numero di righe della seconda, e il prodotto tra due matrici non è commutativo.[2]

Una matrice può essere moltiplicata con se stessa solo se è quadrata. In questo caso, il prodotto A A {\displaystyle A\cdot A} si denota con A 2 {\displaystyle A^{2}} . Più in generale, la potenza n {\displaystyle n} -esima di una matrice è:

A n = { I , se  n = 0 , A A A n , se  n > 0 , {\displaystyle A^{n}={\begin{cases}I,&{\text{se }}n=0,\\\underbrace {A\cdot A\cdots A} _{n},&{\text{se }}n>0,\end{cases}}}

dove n {\displaystyle n} è un numero naturale e I {\displaystyle I} è la matrice identità. Tuttavia, per esponenti molto maggiori dell'ordine della matrice, è più semplice calcolare le potenze servendosi della teoria delle funzioni di matrice, che permette inoltre di generalizzare la definizione di potenza fino ad ammettere un esponente complesso.

Un'altra definizione informale della moltiplicazione matriciale, atta a permetterne una più rapida e immediata memorizzazione, è "moltiplicazione riga per colonna", infatti, per ottenere l'elemento della i {\displaystyle i} -esima riga e j {\displaystyle j} -esima colonna della matrice prodotto basta porre un indice sulla riga i {\displaystyle i} della prima matrice, l'altro sulla colonna j {\displaystyle j} della seconda e moltiplicare gli elementi indicati, quindi scorrere di un posto con le dita e moltiplicare, fino a raggiungere la fine della colonna e della riga, infine sommare i vari prodotti ottenuti.

Proprietà

  • La moltiplicazione fra matrici è generalmente non commutativa, ovvero A B {\displaystyle AB} e B A {\displaystyle BA} sono due matrici diverse.
  • La moltiplicazione fra matrici è distributiva rispetto alla somma. In altre parole:
A ( B + C ) = A B + A C {\displaystyle A(B+C)=AB+AC}
( A + B ) C = A C + B C {\displaystyle (A+B)C=AC+BC}
  • Per ogni scalare k {\displaystyle k} vale:
k ( A B ) = ( k A ) B = A ( k B ) {\displaystyle k(AB)=(kA)B=A(kB)}
  • La moltiplicazione fra matrici è associativa:
A ( B C ) = ( A B ) C {\displaystyle A(BC)=(AB)C}
  • Le matrici aventi valori in un anello (ad esempio, l'anello dei numeri interi, razionali, reali o complessi) con le operazioni di somma e prodotto formano un altro anello. Per quanto detto sopra, questo anello è generalmente non commutativo anche se quello di partenza lo è.
  • L'elemento neutro per l'operazione di moltiplicazione fra matrici è la matrice identica I {\displaystyle I} . In particolare, se A {\displaystyle A} è quadrata con lo stesso numero di righe di I {\displaystyle I} :
A I = I A = A {\displaystyle AI=IA=A}
  • La matrice nulla 0 con n {\displaystyle n} righe annulla qualsiasi altra matrice. In particolare, se A {\displaystyle A} è quadrata con n {\displaystyle n} righe, si ha:
0 A = A 0 = 0 {\displaystyle 0A=A0=0}
  • Una matrice quadrata A {\displaystyle A} è invertibile se esiste un'altra matrice B {\displaystyle B} tale che A B = B A = I {\displaystyle AB=BA=I} dove I {\displaystyle I} è la matrice identità con lo stesso numero di righe di A {\displaystyle A} . Una matrice è invertibile se e solo se il determinante è non nullo. Molte matrici non sono invertibili; in altre parole, anche se l'insieme dei valori di partenza è un campo, le matrici non formano un campo. Ad esempio la matrice seguente non è invertibile:
[ 0 0 1 1 ] {\displaystyle {\begin{bmatrix}0&0\\1&1\\\end{bmatrix}}}
  • Detta A T {\displaystyle A^{\mathrm {T} }} la trasposta di A {\displaystyle A} , si ha che ( A B ) T = B T A T {\displaystyle (AB)^{\mathrm {T} }=B^{\mathrm {T} }A^{\mathrm {T} }} . Infatti:
[ ( A B ) T ] i j = ( A B ) j i = k ( A ) j k ( B ) k i = k ( A T ) k j ( B T ) i k = k ( B T ) i k ( A T ) k j = {\displaystyle \left[({AB})^{\mathrm {T} }\right]_{ij}=\left({AB}\right)_{ji}=\sum _{k}\left({A}\right)_{jk}\left({B}\right)_{ki}=\sum _{k}\left({A}^{\mathrm {T} }\right)_{kj}\left({B}^{\mathrm {T} }\right)_{ik}=\sum _{k}\left({B}^{\mathrm {T} }\right)_{ik}\left({A}^{\mathrm {T} }\right)_{kj}=}
= [ ( B T ) ( A T ) ] i j {\displaystyle =\left[\left({B}^{\mathrm {T} }\right)\left({A}^{\mathrm {T} }\right)\right]_{ij}}
  • Detta A 1 {\displaystyle A^{-1}} la inversa di A {\displaystyle A} , si ha ( A B ) 1 = B 1 A 1 {\displaystyle (AB)^{-1}=B^{-1}A^{-1}} .
  • Detta A {\displaystyle A^{*}} la complessa coniugata di A {\displaystyle A} , si ha ( A B ) = A B {\displaystyle (AB)^{*}=A^{*}B^{*}} . Infatti:
[ ( A B ) ] i j = [ k ( A ) i k ( B ) k j ] = k ( A ) i k ( B ) k j = k ( A ) i k ( B ) k j = ( A B ) i j {\displaystyle \left[({AB})^{\star }\right]_{ij}=\left[\sum _{k}\left({A}\right)_{ik}\left({B}\right)_{kj}\right]^{\star }=\sum _{k}\left({A}\right)_{ik}^{\star }\left({B}\right)_{kj}^{\star }=\sum _{k}\left({A}^{\star }\right)_{ik}\left({B}^{\star }\right)_{kj}=\left({A}^{\star }{B}^{\star }\right)_{ij}}
  • Detta A {\displaystyle A^{\dagger }} la trasposta complessa coniugata di A {\displaystyle A} , si ha ( A B ) = B A {\displaystyle (AB)^{\dagger }=B^{\dagger }A^{\dagger }} . Infatti:
[ ( A B ) ] i j = [ ( A B ) ] j i = k ( A ) j k ( B ) k i = k ( A ) k j ( B ) i k = k ( B ) i k ( A ) k j = ( B A ) i j {\displaystyle \left[({AB})^{\dagger }\right]_{ij}=\left[\left({AB}\right)^{\star }\right]_{ji}=\sum _{k}\left({A}^{\star }\right)_{jk}\left({B}^{\star }\right)_{ki}=\sum _{k}\left(A^{\dagger }\right)_{kj}\left({B}^{\dagger }\right)_{ik}=\sum _{k}\left({B}^{\dagger }\right)_{ik}\left(A^{\dagger }\right)_{kj}=\left(B^{\dagger }A^{\dagger }\right)_{ij}}
  • La traccia del prodotto A B {\displaystyle AB} è indipendente dall'ordine con cui A {\displaystyle A} e B {\displaystyle B} vengono moltiplicate:
t r ( A B ) = t r ( B A ) {\displaystyle \mathrm {tr} ({AB})=\mathrm {tr} ({BA})}
Infatti:
tr ( A B ) = i = 1 m ( A B ) i i = i = 1 m j = 1 n A i j B j i = j = 1 n i = 1 m B j i A i j = j = 1 n ( B A ) j j = tr ( B A ) {\displaystyle \operatorname {tr} (AB)=\sum _{i=1}^{m}\left(AB\right)_{ii}=\sum _{i=1}^{m}\sum _{j=1}^{n}A_{ij}B_{ji}=\sum _{j=1}^{n}\sum _{i=1}^{m}B_{ji}A_{ij}=\sum _{j=1}^{n}\left(BA\right)_{jj}=\operatorname {tr} (BA)}

Prodotto di una matrice per un vettore

Una matrice con una sola riga, cioè di dimensione 1 × n {\displaystyle 1\times n} , è un vettore riga. Analogamente, una matrice con una sola colonna, cioè di dimensione m × 1 {\displaystyle m\times 1} è un vettore colonna. Nell'operazione di moltiplicazione questi due oggetti si comportano in modo differente.

Siano A = ( a i j ) {\displaystyle A=(a_{ij})} una matrice m × n {\displaystyle m\times n} e v = { v i } {\displaystyle \mathbf {v} =\{v_{i}\}} un vettore colonna n × 1 {\displaystyle n\times 1} . Il prodotto di A {\displaystyle A} per il vettore v {\displaystyle \mathbf {v} } è il prodotto di matrici:

A v = c {\displaystyle A\mathbf {v} =\mathbf {c} }

Le componenti di c {\displaystyle \mathbf {c} } sono:

c i = j = 1 n a i j v j = a i 1 v 1 + a i 2 v 2 + + a i n v n {\displaystyle c_{i}=\sum _{j=1}^{n}a_{ij}v_{j}=a_{i1}v_{1}+a_{i2}v_{2}+\cdots +a_{in}v_{n}}

Algoritmo

Un algoritmo per la moltiplicazione matrice per vettore è:

    /* Moltiplicazione matrice × vettore
       RM = numero di righe della matrice
       CM = numero di colonne della matrice (uguale al numero di righe del vettore)
       M = matrice [RM] × [CM]
       VI = vettore iniziale [CM]
       VR = vettore risultante [CM]
       il vettore risultato sarà VR [RM] con stesso numero di righe della matrice. */
    for (int i = 0; i < RM; i++) {      // scandisco le righe con l'indice i
        VR[i] = 0;                      // inizializzo la coordinata i-esima del vettore a zero
        for (int j = 0; j < CM; j++) {  // e le colonne con j 
            VR[i] = VR[i] + M[i][j] * VI[j];
        }
    }

Questo prodotto è ampiamente usato in algebra lineare perché descrive una applicazione lineare. Ad esempio, il prodotto:

[ cos α sin α sin α cos α ] [ x y ] = [ x cos α y sin α x sin α + y cos α ] {\displaystyle {\begin{bmatrix}\cos \alpha &-\sin \alpha \\\sin \alpha &\cos \alpha \\\end{bmatrix}}{\begin{bmatrix}x\\y\\\end{bmatrix}}={\begin{bmatrix}x\cos \alpha -y\sin \alpha \\x\sin \alpha +y\cos \alpha \\\end{bmatrix}}}

rappresenta una rotazione di angolo α {\displaystyle \alpha } nel piano cartesiano.

In alcuni casi può essere utile effettuare il prodotto v e t t o r e r i g a × M a t r i c e {\displaystyle vettoreriga\times Matrice} : il risultato è un altro vettore riga.

Prodotto di una matrice per uno scalare

La moltiplicazione di una matrice A = ( a i , j ) {\displaystyle A=(a_{i,j})} per uno scalare r {\displaystyle r} , cioè un elemento dell'anello cui appartengono gli a i , j {\displaystyle a_{i,j}} , è ottenuta moltiplicando ogni elemento di A {\displaystyle A} per lo scalare:

r A = ( r a i , j )   {\displaystyle rA=(ra_{i,j})\ }

Se l'anello di partenza non è commutativo, questa viene indicata come moltiplicazione sinistra, e può differire dalla moltiplicazione destra:

A r = ( a i , j r )   {\displaystyle Ar=(a_{i,j}r)\ }

Proprietà

  • Se l'anello di partenza è commutativo (ad esempio se è l'anello dei numeri interi, razionali, reali o complessi) le moltiplicazioni sinistra e destra sono equivalenti e si parla solo di moltiplicazione di una matrice con uno scalare.
  • Se l'anello di partenza è un campo, ad esempio quello dei numeri razionali, reali o complessi, lo spazio delle matrici m × n {\displaystyle m\times n} con le operazioni di somma e prodotto per scalare formano uno spazio vettoriale.
  • Se l'anello di partenza è un anello commutativo, lo spazio delle matrici m × n {\displaystyle m\times n} con le operazioni di somma e di prodotto per scalare forma un modulo.

Se l'anello di partenza non è commutativo, ad esempio se è l'anello dei quaternioni, le due moltiplicazioni non sono equivalenti. Ad esempio:

i [ i 0 0 j ] = [ 1 0 0 k ] [ 1 0 0 k ] = [ i 0 0 j ] i {\displaystyle i{\begin{bmatrix}i&0\\0&j\\\end{bmatrix}}={\begin{bmatrix}-1&0\\0&k\\\end{bmatrix}}\neq {\begin{bmatrix}-1&0\\0&-k\\\end{bmatrix}}={\begin{bmatrix}i&0\\0&j\\\end{bmatrix}}i}

Costruzioni alternative

Sono stati definiti nel tempo altri tipi di prodotto tra matrici, meno fortunati in quanto a utilizzo dell'usuale prodotto righe per colonne. In particolare si può nominare il prodotto di Hadamard o prodotto puntuale, in cui il prodotto di A = ( a i j ) i j {\displaystyle A=(a_{ij})_{ij}} e B = ( b i j ) i j {\displaystyle B=(b_{ij})_{ij}} è dato da A B = ( a i j b i j ) i j {\displaystyle AB=(a_{ij}\cdot b_{ij})_{ij}} . Ad esempio:

[ 1 2 3 1 ] [ 3 0 1 4 ] = [ 3 0 3 4 ] {\displaystyle {\begin{bmatrix}1&2\\3&-1\end{bmatrix}}{\begin{bmatrix}-3&0\\1&4\end{bmatrix}}={\begin{bmatrix}-3&0\\3&-4\end{bmatrix}}}

Un'altra costruzione è data dal prodotto di Kronecker, che trova applicazioni nel calcolo tensoriale, dato da:

A B = [ a 11 B a 12 B a 1 n B a m 1 B a m 2 B a m n B ] {\displaystyle AB={\begin{bmatrix}a_{11}B&a_{12}B&\cdots &a_{1n}B\\\vdots &\vdots &\ddots &\vdots \\a_{m1}B&a_{m2}B&\cdots &a_{mn}B\end{bmatrix}}}

espressa sotto forma di matrice a blocchi, in cui ogni blocco i j {\displaystyle ij} -esimo è dato dalla matrice B {\displaystyle B} moltiplicata per lo scalare a i j {\displaystyle a_{ij}} .

Esempi

  • Una matrice 2 × 3 {\displaystyle 2\times 3} moltiplicata per 3 × 3 {\displaystyle 3\times 3} dà una matrice 2 × 3 {\displaystyle 2\times 3} :
[ 1 1 2 0 1 3 ] × [ 1 1 1 2 5 1 0 2 1 ] = {\displaystyle {\begin{bmatrix}1&1&2\\0&1&-3\\\end{bmatrix}}\times {\begin{bmatrix}1&1&1\\2&5&1\\0&-2&1\end{bmatrix}}=}
1ª riga della matrice risultato:
C 11 = [ ( 1 × 1 ) + ( 1 × 2 ) + ( 2 × 0 ) ] = 3 {\displaystyle C_{11}=[(1\times 1)+(1\times 2)+(2\times 0)]=3}
C 12 = [ ( 1 × 1 ) + ( 1 × 5 ) + ( 2 × 2 ) ] = 2 {\displaystyle C_{12}=[(1\times 1)+(1\times 5)+(2\times -2)]=2}
C 13 = [ ( 1 × 1 ) + ( 1 × 1 ) + ( 2 × 1 ) ] = 4 {\displaystyle C_{13}=[(1\times 1)+(1\times 1)+(2\times 1)]=4}
2ª riga della matrice risultato:
C 21 = [ ( 0 × 1 ) + ( 1 × 2 ) + ( 3 × 0 ) ] = 2 {\displaystyle C_{21}=[(0\times 1)+(1\times 2)+(-3\times 0)]=2}
C 22 = [ ( 0 × 1 ) + ( 1 × 5 ) + ( 3 × 2 ) ] = 11 {\displaystyle C_{22}=[(0\times 1)+(1\times 5)+(-3\times -2)]=11}
C 23 = [ ( 0 × 1 ) + ( 1 × 1 ) + ( 3 × 1 ) ] = 2 {\displaystyle C_{23}=[(0\times 1)+(1\times 1)+(-3\times 1)]=-2}
Risultato (matrice 2 × 3 {\displaystyle 2\times 3} ):
[ C 11 C 12 C 13 C 21 C 22 C 23 ] = [ 3 2 4 2 11 2 ] {\displaystyle {\begin{bmatrix}C_{11}&C_{12}&C_{13}\\C_{21}&C_{22}&C_{23}\\\end{bmatrix}}={\begin{bmatrix}3&2&4\\2&11&-2\\\end{bmatrix}}}
  • Si consideri il prodotto:
[ 1 2 0 3 1 4 ] × [ 1 0 1 ] = [ ( 1 × 1 + 2 × 0 + 0 × 1 ) ( 3 × 1 + 1 × 0 + 4 × 1 ) ] = [ 1 1 ] {\displaystyle {\begin{bmatrix}1&2&0\\3&-1&4\\\end{bmatrix}}\times {\begin{bmatrix}1\\0\\-1\\\end{bmatrix}}={\begin{bmatrix}(1\times 1+2\times 0+0\times -1)\\(3\times 1+-1\times 0+4\times -1)\\\end{bmatrix}}={\begin{bmatrix}1\\-1\\\end{bmatrix}}}
Il risultato di questa operazione è un altro vettore colonna, di tipo m × 1 {\displaystyle m\times 1} .

Note

  1. ^ Hoffman e Kunze, p. 17.
  2. ^ Hoffman e Kunze, p. 18.

Bibliografia

  • Serge Lang, Algebra lineare, Torino, Bollati Boringhieri, 1992, ISBN 88-339-5035-2.
  • (EN) Kenneth Hoffman e Ray Kunze, Linear Algebra, 2ª ed., Englewood Cliffs, New Jersey, Prentice - Hall, inc., 1971, ISBN 0-13-536821-9.
  • Marco Abate, Chiara de Fabritiis, Geometria analitica con elementi di algebra lineare, Milano, McGraw-Hill, 2006. ISBN 88-386-6289-4.
  • Edoardo Sernesi, Geometria 1, 2ª ed., Torino, Bollati Boringhieri, 1989. ISBN 88-339-5447-1.
  • (EN) Henry Cohn, Robert Kleinberg, Balazs Szegedy, and Chris Umans. Group-theoretic Algorithms for Matrix Multiplication. arΧiv:math.GR/0511460. Proceedings of the 46th Annual Symposium on Foundations of Computer Science, 23–25 October 2005, Pittsburgh, PA, IEEE Computer Society, pp. 379–388.
  • (EN) Henry Cohn, Chris Umans. A Group-theoretic Approach to Fast Matrix Multiplication. arΧiv:math.GR/0307321. Proceedings of the 44th Annual IEEE Symposium on Foundations of Computer Science, 11–14 October 2003, Cambridge, MA, IEEE Computer Society, pp. 438–449.
  • (EN) Coppersmith, D., Winograd S., Matrix multiplication via arithmetic progressions, J. Symbolic Comput. 9, p. 251-280, 1990.
  • (EN) Robinson, Sara, Toward an Optimal Algorithm for Matrix Multiplication, SIAM News 38(9), November 2005. PDF
  • (EN) Strassen, Volker, Gaussian Elimination is not Optimal, Numer. Math. 13, p. 354-356, 1969.
  • (EN) Vassilevska Williams, Virginia, Multiplying matrices faster than Coppersmith-Winograd, Manuscript, May 2012. PDF Archiviato l'8 ottobre 2013 in Internet Archive.

Voci correlate

Altri progetti

Altri progetti

  • Wikimedia Commons
  • Collabora a Wikimedia Commons Wikimedia Commons contiene immagini o altri file sulla moltiplicazione di matrici

Collegamenti esterni

  • Programma parallelo per moltiplicare le matrici in MPI, su parallelknoppix.info. URL consultato il 14 dicembre 2022 (archiviato dall'url originale il 12 aprile 2013).
  • (EN) Eric W. Weisstein, Moltiplicazione di matrici, su MathWorld, Wolfram Research. Modifica su Wikidata
Controllo di autoritàGND (DE) 4169129-5
  Portale Matematica: accedi alle voci di Wikipedia che trattano di matematica