行列の積

演算日本語英語
$AB$行列の積matrix product / Matrix multiplication
$\mathbf{a} \cdot \mathbf{b}$内積, スカラー積(ドット積)dot product, inner product
$\mathbf{a} \times \mathbf{b}$外積, ベクトル積(クロス積)cross product
$\mathbf{a} \otimes \mathbf{b}$直積, テンソル積outer product
$\mathbf{a} \wedge \mathbf{b}$楔積, ウェッジ積wedge product
$\mathbf{a} \otimes \mathbf{b}$クロネッカー積kronecker product
$\mathbf{a} \odot \mathbf{b}$要素ごとの積、アダマール積/シューア積Hadamard product/Schur product / element-wise product
$\mathbf{a} \cdot (\mathbf{b} \times \mathbf{c})$スカラー三重積scalar triple product

NOTE:

  • クロネッカー積と直積の演算子は同じ
  • 外積≠outer productなので注意!
  • 行列の積
    • 行列の積は結果の対応する要素の内積
      • 左のオペランドの行と右のオペランドの列の要素の積の総和をとるもの
    • numpy.dotでも引数が行列だと行列の積になる

内積

$$ inner\ product:\ {\bf a}\cdot {\bf b}\\ \hspace{50px}{\bf a}\cdot {\bf b}=\displaystyle \sum_{i=1}^{n}a_i b_i=c\\ $$

外積

$$ cross\ product:{\bf a}\times {\bf b}\\ $$ $$ \hspace{50px}{\bf a}\times {\bf b} =\normalsize{ \left(\begin{array}\\ a_1\\ a_2\\ a_3\\ \end{array}\right)} \times \normalsize{\left(\begin{array}\\ b_1\\ b_2\\ b_3\\ \end{array}\right)} =\normalsize{\left(\begin{array}\\ a_2 b_3 -a_3 b_2\\ a_3 b_1 -a_1 b_3\\ a_1 b_2 -a_2 b_1\\ \end{array}\right)}=\large {\bf c}\\ $$

テンソル積

$$ {\left(\begin{matrix}a\\ b\\ c\end{matrix}\right)\otimes\left(\begin{matrix}d\\ e\\ f\end{matrix}\right) =\left(\begin{matrix}a\otimes\left(\begin{matrix}d\\ e\\ f\end{matrix}\right)\\ b\otimes\left(\begin{matrix}d\\ e\\ f\end{matrix}\right)\\ c\otimes\left(\begin{matrix}d\\ e\\ f\end{matrix}\right)\end{matrix}\right) =\left(\begin{matrix}ad&ae&af\\ bd&be&bf\\ cd&ce&cf\end{matrix}\right) } $$

テンソル積を使わない場合

$$ {\begin{align} \left(\begin{matrix}a\\ b\\ c\end{matrix}\right)\left(\begin{matrix}d&e&f\end{matrix}\right) =\left(\begin{matrix}a\left(\begin{matrix}d&e&f\end{matrix}\right)\\ b\left(\begin{matrix}d&e&f\end{matrix}\right)\\ c\left(\begin{matrix}d&e&f\end{matrix}\right)\end{matrix}\right) &=\left(\begin{matrix}ad&ae&af\\ bd&be&bf\\ cd&ce&cf\end{matrix}\right) \end{align} } $$

※右オペランドは横行列

ウェッジ積

$$ \vec{a}\wedge\vec{b}:=\vec{a}\otimes\vec{b}-\vec{b}\otimes\vec{a} $$

つまりは、オペランドを反転した2つのテンソル積の差

クロネッカー積

$A$は$m \times n$の行列で、$A$の$ij$成分を $Aij$とすると、

$$ A\otimes B=\begin{pmatrix} A_{11}B&A_{12}B&\cdots&A_{1n}B\\ A_{21}B&A_{22}B&\cdots&A_{2n}B\\ \vdots&\vdots&\ddots&\vdots\\ A_{m1}B&A_{m2}B&\cdots&A_{mn}B \end{pmatrix} $$

例)

$$ A=\begin{pmatrix}1&2\\ 3&4\end{pmatrix} , ~~ B=\begin{pmatrix}5&6\end{pmatrix} \\ A\otimes B=\begin{pmatrix}5&6&10&12\\ 15&18&20&24\end{pmatrix} $$

アダマール積

$$ \left({\begin{array}{cc} a_{11}&a_{12}\\ a_{21}&a_{22}\\ a_{31}&a_{32}\\ \end{array}}\right) \odot \left({\begin{array}{cc} b_{11}&b_{12}\\ b_{21}&b_{22}\\ b_{31}&b_{32} \end{array}}\right) = \left({\begin{array}{cc} a_{11},b_{11}&a_{12},b_{12}\\ a _{21},b _{21}&a _{22},b _{22}\\ a _{31},b _{31}&a _{32},b _{32} \end{array}}\right) $$

REFERENCES:

  • https://www.slideshare.net/SeiichiUchida/ss-71479583
  • https://keisan.casio.jp/exec/system/1504595153
  • https://mathwords.net/kuronekaseki
  • https://omedstu.jimdofree.com/2018/04/23/%E3%82%A2%E3%83%80%E3%83%9E%E3%83%BC%E3%83%AB%E6%BC%94%E7%AE%97%E5%AD%90-hadamard-operation/
  • https://ja.wikipedia.org/wiki/%E4%B8%89%E9%87%8D%E7%A9%8D_(%E3%83%99%E3%82%AF%E3%83%88%E3%83%AB%E8%A7%A3%E6%9E%90)#%E3%82%B9%E3%82%AB%E3%83%A9%E3%83%BC%E4%B8%89%E9%87%8D%E7%A9%8D
  • https://mathtrain.jp/gaiseki