Vector operation
線型代数 において 、 2つの 座標ベクトル の 外積 は、すべての要素が第1ベクトルの要素と第2ベクトルの要素との積である行列です。2つの座標ベクトルの次元が n と m である場合、それらの外積は n × m 行列です。より一般的には、2つの テンソル (多次元の数値配列)が与えられた場合、それらの外積はテンソルです。テンソルの外積は テンソル積とも呼ばれ、 テンソル代数 を定義するために使用できます 。
外積は次のものと対照的である。
意味 それぞれ
大きさ と 大きさの2つのベクトルが与えられ、 m × 1 {\displaystyle m\times 1} n × 1 {\displaystyle n\times 1}
u = [ u 1 u 2 ⋮ u m ] , v = [ v 1 v 2 ⋮ v n ] {\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}}} それらの外積は、 の各要素に の各要素を乗じて得られる 行列 として定義されます 。 [1] u ⊗ v , {\displaystyle \mathbf {u} \otimes \mathbf {v} ,} m × n {\displaystyle m\times n} A {\displaystyle \mathbf {A} } u {\displaystyle \mathbf {u} } v {\displaystyle \mathbf {v} }
u ⊗ v = A = [ u 1 v 1 u 1 v 2 … u 1 v n u 2 v 1 u 2 v 2 … u 2 v n ⋮ ⋮ ⋱ ⋮ u m v 1 u m v 2 … u m v n ] {\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}}} または、インデックス表記では次のようになります。
( u ⊗ v ) i j = u i v j {\displaystyle (\mathbf {u} \otimes \mathbf {v} )_{ij}=u_{i}v_{j}} ドット積を 次 のよう に 表すと、 ベクトル が与えられた場合、 ベクトル が与えられた場合、 ⋅ , {\displaystyle \,\cdot ,\,} n × 1 {\displaystyle n\times 1} w , {\displaystyle \mathbf {w} ,} ( u ⊗ v ) w = ( v ⋅ w ) u . {\displaystyle (\mathbf {u} \otimes \mathbf {v} )\mathbf {w} =(\mathbf {v} \cdot \mathbf {w} )\mathbf {u} .} 1 × m {\displaystyle 1\times m} x , {\displaystyle \mathbf {x} ,} x ( u ⊗ v ) = ( x ⋅ u ) v T . {\displaystyle \mathbf {x} (\mathbf {u} \otimes \mathbf {v} )=(\mathbf {x} \cdot \mathbf {u} )\mathbf {v} ^{\operatorname {T} }.}
と が 1 より大きい同じ次元のベクトルである 場合、 となります 。 u {\displaystyle \mathbf {u} } v {\displaystyle \mathbf {v} } det ( u ⊗ v ) = 0 {\displaystyle \det(\mathbf {u} \otimes \mathbf {v} )=0}
外積は 、 が 列ベクトル として表され 、 かつ列ベクトル(行ベクトルとなる) として表される 行列の乗算 と等価である 。 [2] [3] 例えば、 そして [4] u ⊗ v {\displaystyle \mathbf {u} \otimes \mathbf {v} } u v T , {\displaystyle \mathbf {u} \mathbf {v} ^{\operatorname {T} },} u {\displaystyle \mathbf {u} } m × 1 {\displaystyle m\times 1} v {\displaystyle \mathbf {v} } n × 1 {\displaystyle n\times 1} v T {\displaystyle \mathbf {v} ^{\operatorname {T} }} m = 4 {\displaystyle m=4} n = 3 , {\displaystyle n=3,}
u ⊗ v = u v T = [ u 1 u 2 u 3 u 4 ] [ v 1 v 2 v 3 ] = [ 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 ] . {\displaystyle \mathbf {u} \otimes \mathbf {v} =\mathbf {u} \mathbf {v} ^{\textsf {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}}.} 複素 ベクトルの場合、 または の 共役転置を 取る と便利なことがよくあります 。 v , {\displaystyle \mathbf {v} ,} v † {\displaystyle \mathbf {v} ^{\dagger }} ( v T ) ∗ {\displaystyle \left(\mathbf {v} ^{\textsf {T}}\right)^{*}}
u ⊗ v = u v † = u ( v T ) ∗ . {\displaystyle \mathbf {u} \otimes \mathbf {v} =\mathbf {u} \mathbf {v} ^{\dagger }=\mathbf {u} \left(\mathbf {v} ^{\textsf {T}}\right)^{*}.}
ユークリッド内積との対比 すると 、行列積を逆にしてスカラー(または 行列)を生成することができます。 m = n , {\displaystyle m=n,} 1 × 1 {\displaystyle 1\times 1}
⟨ u , v ⟩ = u T v {\displaystyle \left\langle \mathbf {u} ,\mathbf {v} \right\rangle =\mathbf {u} ^{\textsf {T}}\mathbf {v} } これはユークリッドベクトル空間 の 標準的な 内積 であり、 [3] ドット積 としてよく知られています 。ドット積は 外積の 跡です。 [5] ドット積とは異なり、外積は可換ではありません。
ベクトルと行列 の乗算は 、関係式を使用して内積で表すことができます 。 w {\displaystyle \mathbf {w} } u ⊗ v {\displaystyle \mathbf {u} \otimes \mathbf {v} } ( u ⊗ v ) w = u ⟨ v , w ⟩ {\displaystyle \left(\mathbf {u} \otimes \mathbf {v} \right)\mathbf {w} =\mathbf {u} \left\langle \mathbf {v} ,\mathbf {w} \right\rangle }
テンソルの外積 次元と要素を持つ 2つのテンソルが与えられたとき 、 それらの外積は次元 と要素 を持つテンソルである。 u , v {\displaystyle \mathbf {u} ,\mathbf {v} } ( k 1 , k 2 , … , k m ) {\displaystyle (k_{1},k_{2},\dots ,k_{m})} ( l 1 , l 2 , … , l n ) {\displaystyle (l_{1},l_{2},\dots ,l_{n})} u ⊗ v {\displaystyle \mathbf {u} \otimes \mathbf {v} } ( k 1 , k 2 , … , k m , l 1 , l 2 , … , l n ) {\displaystyle (k_{1},k_{2},\dots ,k_{m},l_{1},l_{2},\dots ,l_{n})}
( u ⊗ v ) i 1 , i 2 , … i m , j 1 , j 2 , … , j n = u i 1 , i 2 , … , i m v j 1 , j 2 , … , j n {\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}}} たとえば、 が 次元で 3 次で 、 が 次元で 2 次である 場合、それらの外積 は 次元で 5 次です。が 成分 A [2, 2, 4] = 11 を 持ち、 成分 B [8, 88] = 13 を持つ場合、 外積によって形成される の成分は C [2, 2, 4, 8, 88] = 143 です。 A {\displaystyle \mathbf {A} } ( 3 , 5 , 7 ) {\displaystyle (3,5,7)} B {\displaystyle \mathbf {B} } ( 10 , 100 ) , {\displaystyle (10,100),} C {\displaystyle \mathbf {C} } ( 3 , 5 , 7 , 10 , 100 ) . {\displaystyle (3,5,7,10,100).} A {\displaystyle \mathbf {A} } B {\displaystyle \mathbf {B} } C {\displaystyle \mathbf {C} }
クロネッカー積との関連 外積とクロネッカー積は密接に関連しており、実際には両方の演算を示すのに同じ記号がよく使用されます。
および の 場合 、次の関係が成り立ちます。 u = [ 1 2 3 ] T {\displaystyle \mathbf {u} ={\begin{bmatrix}1&2&3\end{bmatrix}}^{\textsf {T}}} v = [ 4 5 ] T {\displaystyle \mathbf {v} ={\begin{bmatrix}4&5\end{bmatrix}}^{\textsf {T}}}
u ⊗ Kron v = [ 4 5 8 10 12 15 ] , u ⊗ outer v = [ 4 5 8 10 12 15 ] {\displaystyle {\begin{aligned}\mathbf {u} \otimes _{\text{Kron}}\mathbf {v} &={\begin{bmatrix}4\\5\\8\\10\\12\\15\end{bmatrix}},&\mathbf {u} \otimes _{\text{outer}}\mathbf {v} &={\begin{bmatrix}4&5\\8&10\\12&15\end{bmatrix}}\end{aligned}}} 列ベクトルの場合、クロネッカー積は 外積の ベクトル化 (または平坦化)の一種とみなすことができます。特に、2つの列ベクトルとに対して、 次のように書くことができます。 u {\displaystyle \mathbf {u} } v {\displaystyle \mathbf {v} }
u ⊗ Kron v = vec ( v ⊗ outer u ) {\displaystyle \mathbf {u} \otimes _{\text{Kron}}\mathbf {v} =\operatorname {vec} (\mathbf {v} \otimes _{\text{outer}}\mathbf {u} )} (方程式の右側ではベクトルの順序が逆になっています。)
オペレーション間の類似性をさらに強調するもう一つの類似点は、
u ⊗ Kron v T = u v T = u ⊗ outer v {\displaystyle \mathbf {u} \otimes _{\text{Kron}}\mathbf {v} ^{\textsf {T}}=\mathbf {u} \mathbf {v} ^{\textsf {T}}=\mathbf {u} \otimes _{\text{outer}}\mathbf {v} } ベクトルの順序を反転する必要はありません。中央の式では行列乗算が用いられており、ベクトルは列/行行列として扱われます。
行列積との接続 サイズ と サイズ の 行列のペアが与えられた場合 、 通常どおりサイズ の行列として定義される 行列積を 考えます。 A {\displaystyle \mathbf {A} } m × p {\displaystyle m\times p} B {\displaystyle \mathbf {B} } p × n {\displaystyle p\times n} C = A B {\displaystyle \mathbf {C} =\mathbf {A} \,\mathbf {B} } m × n {\displaystyle m\times n}
ここで、 を の - 番目の列ベクトル 、 を の - 番目の行ベクトル とします 。すると、 は 列と行の外積の和として表すことができます。 a k col {\displaystyle \mathbf {a} _{k}^{\text{col}}} k {\displaystyle k} A {\displaystyle \mathbf {A} } b k row {\displaystyle \mathbf {b} _{k}^{\text{row}}} k {\displaystyle k} B {\displaystyle \mathbf {B} } C {\displaystyle \mathbf {C} }
C = A B = ( ∑ k = 1 p A i k B k j ) 1 ≤ i ≤ m 1 ≤ j ≤ n = [ a 1 col ⋯ a p col ] [ b 1 row ⋮ b p row ] = ∑ k = 1 p a k col b k row {\displaystyle \mathbf {C} =\mathbf {A} \,\mathbf {B} =\left(\sum _{k=1}^{p}{A}_{ik}\,{B}_{kj}\right)_{\begin{matrix}1\leq i\leq m\\[-20pt]1\leq j\leq n\end{matrix}}={\begin{bmatrix}&&\\\mathbf {a} _{1}^{\text{col}}&\cdots &\mathbf {a} _{p}^{\text{col}}\\&&\end{bmatrix}}{\begin{bmatrix}&\mathbf {b} _{1}^{\text{row}}&\\&\vdots &\\&\mathbf {b} _{p}^{\text{row}}&\end{bmatrix}}=\sum _{k=1}^{p}\mathbf {a} _{k}^{\text{col}}\mathbf {b} _{k}^{\text{row}}} この式は、行と列の 内積 エントリ (または ドット積 ) で構築された行列としてのより一般的な式と双対性を持っています。 C i j = ⟨ a i row , b j col ⟩ {\displaystyle C_{ij}=\langle {\mathbf {a} _{i}^{\text{row}},\,\mathbf {b} _{j}^{\text{col}}}\rangle }
この関係は 特異値分解(SVD) (および特別なケースとしての スペクトル分解 )の適用において重要である [6] 。特に、この分解は、対応する非零特異値でスケールされた左( )および右( )特異ベクトル の外積の和として解釈できる 。 u k {\displaystyle \mathbf {u} _{k}} v k {\displaystyle \mathbf {v} _{k}} σ k {\displaystyle \sigma _{k}}
A = U Σ V T = ∑ k = 1 rank ( A ) ( u k ⊗ v k ) σ k {\displaystyle \mathbf {A} =\mathbf {U\Sigma V^{T}} =\sum _{k=1}^{\operatorname {rank} (A)}(\mathbf {u} _{k}\otimes \mathbf {v} _{k})\,\sigma _{k}} この結果は、が スペクトルノルム を持つ階数1の行列の降順の和として表せることを示唆しています。これは、一般に最後の項の寄与が小さい理由を説明でき、これが近似として 打ち切り特異値分解 法を用いる理由となります 。最初の項は、 行列をベクトルの外積に 最小二乗近似したものです。 A {\displaystyle \mathbf {A} } σ k {\displaystyle \sigma _{k}}
プロパティ ベクトルの外積は次の性質を満たします。
( u ⊗ v ) T = ( v ⊗ u ) ( v + w ) ⊗ u = v ⊗ u + w ⊗ u u ⊗ ( v + w ) = u ⊗ v + u ⊗ w c ( v ⊗ u ) = ( c v ) ⊗ u = v ⊗ ( c u ) {\displaystyle {\begin{aligned}(\mathbf {u} \otimes \mathbf {v} )^{\textsf {T}}&=(\mathbf {v} \otimes \mathbf {u} )\\(\mathbf {v} +\mathbf {w} )\otimes \mathbf {u} &=\mathbf {v} \otimes \mathbf {u} +\mathbf {w} \otimes \mathbf {u} \\\mathbf {u} \otimes (\mathbf {v} +\mathbf {w} )&=\mathbf {u} \otimes \mathbf {v} +\mathbf {u} \otimes \mathbf {w} \\c(\mathbf {v} \otimes \mathbf {u} )&=(c\mathbf {v} )\otimes \mathbf {u} =\mathbf {v} \otimes (c\mathbf {u} )\end{aligned}}} テンソルの外積は追加の 結合 性を満たします。
( u ⊗ v ) ⊗ w = u ⊗ ( v ⊗ w ) {\displaystyle (\mathbf {u} \otimes \mathbf {v} )\otimes \mathbf {w} =\mathbf {u} \otimes (\mathbf {v} \otimes \mathbf {w} )}
外積の階数 u と v が 両方とも非ゼロの場合 、外積行列 uv T は常に 行列ランク 1になります。実際、外積の列はすべて u に比例します。したがって、それらはすべてその1つの列に 線形従属する ため、行列はランク1になります。
(「行列のランク」は、「テンソルの順序 」や「テンソルの次数」(「ランク」と呼ばれることもある) と混同しないでください。)
定義(要約) V と W を2つの ベクトル空間 とする。 と の外積は 元 である 。 v ∈ V {\displaystyle \mathbf {v} \in V} w ∈ W {\displaystyle \mathbf {w} \in W} v ⊗ w ∈ V ⊗ W {\displaystyle \mathbf {v} \otimes \mathbf {w} \in V\otimes W}
V が 内積空間 ならば 、外積を線型写像 V → W として定義することができる。この場合、線型写像は V の 双対空間 の元となる 。これはベクトルをその基体(その基体の 元)に線型写像するからである。したがって、外積 V → W は次のように与えられる
。 x ↦ ⟨ v , x ⟩ {\displaystyle \mathbf {x} \mapsto \langle \mathbf {v} ,\mathbf {x} \rangle } ⟨ v , x ⟩ {\displaystyle \langle \mathbf {v} ,\mathbf {x} \rangle }
( w ⊗ v ) ( x ) = ⟨ v , x ⟩ w . {\displaystyle (\mathbf {w} \otimes \mathbf {v} )(\mathbf {x} )=\left\langle \mathbf {v} ,\mathbf {x} \right\rangle \mathbf {w} .} これは、複素数の場合に v の共役転置が一般的に取られる理由を示しています。
プログラミング言語では いくつかのプログラミング言語では、2つの引数関数(または二項演算子)が与えられた場合、 2つの1次元配列との f外積 は 、 となる 2次元配列になります 。これは、構文的には様々な方法で表現されます。APL では 中置 二項演算子 、 J では後置副詞 、 R では関数 または特殊 、 Mathematica [7] では です 。MATLAB では 、 この積に関数が使用されます。これらは 、 多次元引数や3つ以上の引数にも一般化されることがよくあります。 fABCC[i, j] = f(A[i], B[j])∘. f f / outer ( A , B , f ) %o% Outer [ f , A , B ] kron ( A , B )
Python ライブラリ NumPy では 、関数 を使って外積を計算できます np.outer()。 [8] 一方、 np.kronはフラットな配列になります。多次元配列の外積は を使って計算できます np.multiply.outer。
アプリケーション 外積は クロネッカー積 と密接に関連しているため、クロネッカー積の応用の中には外積を利用するものもある。これらの応用としては、量子論、 信号処理 、 画像圧縮 などが挙げられます。 [9]
スピノルズ s , t , w , z ∈ C とし、 ( s , t ) と ( w , z )が C 2 に含まれるもの とする 。このとき、これらの複素2次元ベクトルの外積は 、2 × 2複素行列 M(2, C )の要素となる。
( s w t w s z t z ) . {\displaystyle {\begin{pmatrix}sw&tw\\sz&tz\end{pmatrix}}.} この行列の 行列 式は、 C の 交換法則 により、 swtz − sztw = 0 となります。
3次元スピノル の理論では、 このヌル特性により、これらの行列は 等方性ベクトル に関連付けられます。 エリー・カルタンは この構成を1937年に記述しましたが [10] 、 ヴォルフガング・パウリ によって1927年に 導入された ため [11] 、 M(2, C )は パウリ代数 と呼ばれるようになりました 。
概念 外積のブロック形式は分類に役立ちます。 概念分析 は、特定の外積に依存する研究です。
ベクトルが0と1のみを要素とする場合、それは 論理ベクトルと呼ばれ、 論理行列 の特殊なケースです 。論理演算 とが 乗算の代わりに行われます。2つの論理ベクトル( u i ) と ( v j ) の外積は、 論理行列によって与えられます。このタイプの行列は 二項関係 の研究に用いられ 、 直交関係 または 交差ベクトル と呼ばれます。 [12] ( a i j ) = ( u i ∧ v j ) {\displaystyle \left(a_{ij}\right)=\left(u_{i}\land v_{j}\right)}
参照
製品
二重性
参考文献
さらに読む カーレン、エリック。カンセイソン・カルヴァーリョ、マリア (2006)。 「外積と直交射影」。 線形代数: はじめから 。マクミラン。ページ 217–218。ISBN 9780716748946 。