In algebra lineare, il prodotto diadico o prodotto esterno,[1] di due vettori è una matrice . Se i due vettori hanno dimensioni n e m, il loro prodotto esterno è una matrice n × m.
Il prodotto esterno si può definire in ambito più generale: dati due tensori, il loro prodotto esterno è un tensore. Il prodotto esterno dei tensori è anche chiamato il loro prodotto tensoriale e può essere usato per definire l'algebra tensoriale .
Il prodotto esterno differisce da:
- il prodotto scalare, che a partire da una coppia di vettori produce uno scalare;
- il prodotto di Kronecker, che a partire da una coppia di matrici produce una matrice;
- la classica moltiplicazione di matrici righe per colonne.
Definizione
Dati due vettori di dimensioni
e
rispettivamente
![{\displaystyle \mathbf {u} ={\begin{bmatrix}u_{1}\\u_{2}\\\vdots \\u_{m}\end{bmatrix}},\quad \mathbf {v} ={\begin{bmatrix}v_{1}\\v_{2}\\\vdots \\v_{n}\end{bmatrix}},}](https://wikimedia.org/api/rest_v1/media/math/render/svg/87151b8b2fb16bf59ea2fcb97f9f13bed273c743)
il loro prodotto esterno, denotato
è definito come una matrice
con forma
e il prodotto esterno è ottenuto moltiplicando ogni elemento di
con ogni elemento di
:[2]
![{\displaystyle \mathbf {u} \otimes \mathbf {v} =\mathbf {A} ={\begin{bmatrix}u_{1}v_{1}&u_{1}v_{2}&\dots &u_{1}v_{n}\\u_{2}v_{1}&u_{2}v_{2}&\dots &u_{2}v_{n}\\\vdots &\vdots &\ddots &\vdots \\u_{m}v_{1}&u_{m}v_{2}&\dots &u_{m}v_{n}\end{bmatrix}}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/12d57263c2aa4199b41c20a7f2a0335e4917fd3b)
Alternativamente nella notazione con indici:
![{\displaystyle (\mathbf {u} \otimes \mathbf {v} )_{ij}=u_{i}v_{j}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/7db665138df6a29a5307ea845ad90d010a661a99)
Sia
il prodotto scalare, allora per ogni vettore
di dimensioni
si ha
![{\displaystyle (\mathbf {u} \otimes \mathbf {v} )\mathbf {w} =(\mathbf {v} \cdot \mathbf {w} )\mathbf {u} ,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/dfb678d16433e1a5d7115df0949e74b7ae4db40c)
e per ogni vettore
di dimensioni
si ha
![{\displaystyle \mathbf {x} (\mathbf {u} \otimes \mathbf {v} )=(\mathbf {x} \cdot \mathbf {u} )\mathbf {v} ^{\operatorname {T} }.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/befabb5477ba209b8ec46f0fd7c823467aab1ebb)
Se
e
sono vettori con stesse dimensioni, allora
Il prodotto esterno
è equivalente a una moltiplicazione matriciale
purché
è rappresentato come a
vettore colonna e
come un
vettore colonna (che rende
un vettore riga).[3][4] Ad esempio, se
e
allora[5]
![{\displaystyle \mathbf {u} \otimes \mathbf {v} =\mathbf {u} \mathbf {v} ^{\operatorname {T} }={\begin{bmatrix}u_{1}\\u_{2}\\u_{3}\\u_{4}\end{bmatrix}}{\begin{bmatrix}v_{1}&v_{2}&v_{3}\end{bmatrix}}={\begin{bmatrix}u_{1}v_{1}&u_{1}v_{2}&u_{1}v_{3}\\u_{2}v_{1}&u_{2}v_{2}&u_{2}v_{3}\\u_{3}v_{1}&u_{3}v_{2}&u_{3}v_{3}\\u_{4}v_{1}&u_{4}v_{2}&u_{4}v_{3}\end{bmatrix}}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/8e24e53cb63e2d14d69fd264dc650c7754f42e1d)
Per vettori a elementi complessi, è spesso utile prendere la trasposta coniugata di
indicato
o
:
![{\displaystyle \mathbf {u} \otimes \mathbf {v} =\mathbf {u} \mathbf {v} ^{\dagger }=\mathbf {u} \left(\mathbf {v} ^{\operatorname {T} }\right)^{*}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/d141aec5c2c883b631e19f8fb45bc94cc5cfa3be)
Confronto con il prodotto scalare euclideo
Se
allora si può prendere il prodotto matriciale
ottenendo uno scalare (o matrice
). Questo è il prodotto scalare standard per gli spazi vettoriali euclidei.[4] Il prodotto scalare è la traccia del prodotto esterno.[6] A differenza del prodotto scalare, il prodotto esterno non è commutativo.
La moltiplicazione di un vettore
per una matrice
può essere scritta in termini di prodotto scalare, usando la relazione
.
Prodotto esterno di tensori
Dati due tensori
con dimensioni
e
, il loro prodotto esterno
è un tensore con dimensioni
ed elementi
![{\displaystyle (\mathbf {u} \otimes \mathbf {v} )_{i_{1},i_{2},\dots i_{m},j_{1},j_{2},\dots ,j_{n}}=u_{i_{1},i_{2},\dots ,i_{m}}v_{j_{1},j_{2},\dots ,j_{n}}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/3fc046459218ba12c2f8578d403363e8461896fa)
Ad esempio, se
ha dimensioni
e
ha dimensioni
il loro prodotto esterno
ha dimensioni
Se
ha una componente
e
ha una componente
allora la componente di
formato dal prodotto esterno è
Collegamento con il prodotto Kronecker
Il prodotto esterno e il prodotto di Kronecker sono strettamente correlati; infatti lo stesso simbolo è comunemente usato per denotare entrambe le operazioni.
![{\displaystyle \mathbf {u} \otimes _{\text{Kron}}\mathbf {v} ={\begin{bmatrix}4\\5\\8\\10\\12\\15\end{bmatrix}},\qquad \mathbf {u} \otimes _{\text{outer}}\mathbf {v} ={\begin{bmatrix}4&5\\8&10\\12&15\end{bmatrix}}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2f147671ac04d9b18d6f9e1cd5c808da6408bc6c)
Nel caso dei vettori colonna, il prodotto di Kronecker può essere visto come una forma di vettorializzazione del prodotto esterno. In particolare, per due vettori colonna
e
, possiamo scrivere:
![{\displaystyle \mathbf {u} \otimes _{\text{Kron}}\mathbf {v} =\operatorname {vec} (\mathbf {v} \otimes _{\text{outer}}\mathbf {u} ).}](https://wikimedia.org/api/rest_v1/media/math/render/svg/c7afc4f77fa2c00ee7b76c8a0f282f19f66bd3cd)
Notare che l'ordine dei vettori è invertito nella parte destra dell'uguaglianza.
Un'altra identità simile che evidenzia ulteriormente la somiglianza tra le operazioni è
![{\displaystyle \mathbf {u} \otimes _{\text{Kron}}\mathbf {v} ^{\operatorname {T} }=\mathbf {u} \mathbf {v} ^{\operatorname {T} }=\mathbf {u} \otimes _{\text{outer}}\mathbf {v} ,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/17a5f4772c9a4c5d8de19d5fa075e556b51cbc38)
dove non è necessario invertire l'ordine dei vettori. L'espressione centrale usa la moltiplicazione matriciale, dove i vettori sono considerati come matrici colonna/riga.
Proprietà
Il prodotto esterno dei vettori soddisfa le seguenti proprietà:
![{\displaystyle (\mathbf {u} \otimes \mathbf {v} )^{\operatorname {T} }=(\mathbf {v} \otimes \mathbf {u} );}](https://wikimedia.org/api/rest_v1/media/math/render/svg/d54d291d462fd959c135d2408cf7c1bbe7ce3223)
![{\displaystyle (\mathbf {v} +\mathbf {w} )\otimes \mathbf {u} =\mathbf {v} \otimes \mathbf {u} +\mathbf {w} \otimes \mathbf {u} ;}](https://wikimedia.org/api/rest_v1/media/math/render/svg/a9456981c05ee090c4a6713b05a696e1931a7b81)
![{\displaystyle \mathbf {u} \otimes (\mathbf {v} +\mathbf {w} )=\mathbf {u} \otimes \mathbf {v} +\mathbf {u} \otimes \mathbf {w} ;}](https://wikimedia.org/api/rest_v1/media/math/render/svg/745b6a92ea0cd24fb634434971c2efe88c02c658)
![{\displaystyle c(\mathbf {v} \otimes \mathbf {u} )=(c\mathbf {v} )\otimes \mathbf {u} =\mathbf {v} \otimes (c\mathbf {u} );}](https://wikimedia.org/api/rest_v1/media/math/render/svg/485b6da4cdec70462fea34ea33eb3bcf681297f8)
![{\displaystyle (\mathbf {u} \otimes \mathbf {v} )\otimes \mathbf {w} =\mathbf {u} \otimes (\mathbf {v} \otimes \mathbf {w} ).}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ed8d054f9e9a6f66f04b69341edcbe79434ae5f0)
Rango di un prodotto esterno
Se
e
sono entrambi diversi da zero, la matrice del prodotto esterno
ha sempre rango 1. Infatti le colonne del prodotto esterno sono tutte proporzionali alla prima colonna, quindi sono tutte linearmente dipendenti da quella colonna e quindi la matrice è di rango 1.
Nei linguaggi di programmazione
In alcuni linguaggi di programmazione, data una funzione a due argomenti f
(o un operatore binario), il prodotto esterno di f
e due array unidimensionali A
e B
è un array bidimensionale C
tale che C[i, j] = f(A[i], B[j])
. Questo è rappresentato sintatticamente in vari modi: in APL, come operatore binario infisso ∘.f
; in J, come l'avverbio postfisso f/
; in R, come funzione outer(A, B, f)
o lo speciale %o%
;[7] in Mathematica, come Outer[f, A, B]
. In MATLAB, la funzione kron(A, B)
viene utilizzato per questo prodotto. Questi spesso si generalizzano in argomenti multidimensionali e più di due argomenti.
Nella libreria Python NumPy, il prodotto esterno può essere calcolato con la funzione np.outer()
.[8] Al contrario, np.kron
risulta in un flat array. Il prodotto esterno di array multidimensionali può essere calcolato utilizzando np.multiply.outer
.
Note
- ^ In questo contesto, "prodotto esterno" è il calco dell'inglese outer product. Questo prodotto non va confuso con il prodotto wedge, chiamato anche "prodotto esterno" (in inglese exterior product).
- ^ R. G. Lerner e G. L. Trigg, Encyclopaedia of Physics, 2ndª ed., VHC, 1991, ISBN 0-89573-752-3.
- ^ S. Lipschutz e M. Lipson, Linear Algebra, collana Schaum’s Outlines, 4thª ed., McGraw-Hill, 2009, ISBN 978-0-07-154352-1.
- ^ a b inf.ed.ac.uk, http://www.inf.ed.ac.uk/teaching/courses/cfcs1/lectures/cfcs_l10.pdf Titolo mancante per url
url
(aiuto). URL consultato il September 6, 2020. - ^ James M. Ortega (1987) Matrix Theory: A Second Course, page 7, Plenum Press ISBN 0-306-42433-9
- ^ Robert F. Stengel, Optimal Control and Estimation, New York, Dover Publications, 1994, p. 26, ISBN 0-486-68200-5.
- ^ rdocumentation.org, https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/outer Titolo mancante per url
url
(aiuto). URL consultato il 7 settembre 2020. - ^ numpy.org, https://numpy.org/doc/stable/reference/generated/numpy.outer.html Titolo mancante per url
url
(aiuto). URL consultato il 7 settembre 2020.
Portale Matematica: accedi alle voci di Wikipedia che trattano di matematica