MATLAB、Python、Scilab、Juia比較ページはこちら
https://www.simulationroom999.com/blog/comparison-of-matlab-python-scilab/
はじめに
MATLAB,Python,Scilab,Julia比較に於ける、
以下を元に書き直したもの。
- MATLAB,Python,Scilab,Julia比較 その18【行列演算①】
- MATLAB,Python,Scilab,Julia比較 その19【行列演算②】
- MATLAB,Python,Scilab,Julia比較 その20【行列演算③】
- MATLAB,Python,Scilab,Julia比較 その21【行列演算④】
基本的な行列演算について記載していく。
行列演算の種類
行列演算は様々存在するが、
ここでは基本的な以下の演算について記載する。
- 加算、減算
- 乗算
- アダマール積
- 除算
- べき乗
- 転置
基本的な四則演算に加えて、アダマール積、べき乗、転置が追加されている。
使用する行列
以下2つの行列が存在する前提で説明を勧める。
\(
A=\begin{bmatrix}
1 & 2 \\
3 & 4
\end{bmatrix}
\)
\(
B=\begin{bmatrix}
5 & 6 \\
7 & 8
\end{bmatrix}
\)
基本的には2項演算なので、2つあれば十分なはず。
加算、減算
加算、減算は行列の要素単位で加算、減算すれば良いだけなので
それほど難しくはない。
当然、行列の形状が一致している必要はある。
\(
A+B=\begin{bmatrix}
1 & 2 \\
3 & 4
\end{bmatrix}+
\begin{bmatrix}
5 & 6 \\
7 & 8
\end{bmatrix}=
\begin{bmatrix}
6 & 8 \\
10 & 12
\end{bmatrix}
\)
\(
A-B=\begin{bmatrix}
1 & 2 \\
3 & 4
\end{bmatrix}-
\begin{bmatrix}
5 & 6 \\
7 & 8
\end{bmatrix}=
\begin{bmatrix}
-4 & -4 \\
-4 & -4
\end{bmatrix}
\)
乗算(内積)
行列の乗算は基本的には内積となる。
これ以外に後述するアダマール積と
ここでは説明しないが直積などがある。
本シリーズではほぼ内積となる。
実際の計算としては以下になる。
\(
AB=
\begin{bmatrix}
1 & 2 \\
3 & 4
\end{bmatrix}
\begin{bmatrix}
5 & 6 \\
7 & 8
\end{bmatrix}=
\begin{bmatrix}
1\times5+2\times7 & 1\times6+2\times8 \\
3\times5+4\times7 & 3\times6+4\times8
\end{bmatrix}=
\begin{bmatrix}
19 & 22 \\
43 & 50
\end{bmatrix}
\)
これらの理屈を理解するには別途以下の知識が必要。
- 方程式
- ベクトル
- 内積
- 余弦定理
- 行列によるベクトル変換
- 行列によるベクトルセットの変換
これらは線形代数学の基礎部分であり、別途説明予定。
線型代数学(せんけいだいすうがく、英: linear algebra)とは、線形空間と線形変換を中心とした理論を研究する代数学の一分野である。現代数学において基礎的な役割を果たし、幅広い分野に応用されている。また、これは特に行列・行列式・連立一次方程式に関する理論を含む。
Wikipediaより(https://ja.wikipedia.org/wiki/%E7%B7%9A%E5%9E%8B%E4%BB%A3%E6%95%B0%E5%AD%A6)
アダマール積
内積と異なり、要素単位の掛け算をすればOK。
演算としてはシンプルな方に倒れる。
数学におけるアダマール積(英: Hadamard product)は、同じサイズの行列に対して成分ごとに積を取ることによって定まる行列の積である。要素ごとの積(英: element-wise product)、シューア積(英: Schur product)、点ごとの積(英: pointwise product)、成分ごとの積(英: entrywise product)などとも呼ばれる。
Wikipediaより(https://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%80%E3%83%9E%E3%83%BC%E3%83%AB%E7%A9%8D)
\(
AB=
\begin{bmatrix}
1 & 2 \\
3 & 4
\end{bmatrix}\odot
\begin{bmatrix}
5 & 6 \\
7 & 8
\end{bmatrix}=
\begin{bmatrix}
1\times5 & 2\times6 \\
3\times7 & 4\times8
\end{bmatrix}=
\begin{bmatrix}
5 & 12 \\
21 & 32
\end{bmatrix}
\)
アダマール積の演算子は、あまり定まっておらず、
以下で記載されることは多い。
\(\otimes\)、\(\oslash\)、\(\circ\)
実際には文脈で読み解くしかないが、
利用シーンとしては行列をベクトル的に扱いたい場合がほとんどで、
具体例としては画像の畳み込みが代表的。
コメント