バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia-backnumber/
はじめに
前回は、まででMATLAB、Python(Numpy)、Scilab、Juliaに於ける、
「基本的な使い方」を終えたところ。
しかし、ベクトルや行列が定義しただけで具体的な演算の話はしていない。
よって、今回から行列の基本的な演算についての話となる。
登場人物
博識フクロウのフクさん

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
行列演算の種類

とりあえず、前回までで各ツール、言語におけるベクトル、行列の定義の仕方は一応分かったのだけど、具体的な演算とかってしてなくない?

うん。してない。

そこも含めて教えてもらえると・・・。

まずは行列演算の種類を列挙してみるか。
まぁすべて列挙できるわけじゃないので良く使いそうなものだけに絞ろう。
- 加算、減算
- 乗算
- アダマール積
- 除算
- べき乗
- 転置

基本的な四則演算っぽいのに加えて、べき乗、転置がある感じか。

ん?アダマール積ってなんだっけ?

そこは、改めて説明するよ。
まぁそれほど難しいものではないから、あまり気にしなくても良いと思う。

じゃー気にしない。

(素直なことは良いことだが、ちょっとは気にして欲しかった・・・。)
使用する行列

それぞれの演算をする上で、以下の行列が定義されている前提で話を進める予定だ。
\(
A=\begin{bmatrix}
1 & 2 \\
3 & 4
\end{bmatrix}
\)
\(
B=\begin{bmatrix}
5 & 6 \\
7 & 8
\end{bmatrix}
\)

とりあえず、2つの行列があればOKな感じ?

そうだね。
それぞれ1つずつの演算の説明をするだけなので、2つの行列があれば十分だ。

なるほど。
加算、減算

まずは加算、減算。
これはわかるんじゃない?

そうだね。
こんな感じで各要素単位で足し算、引き算をすればOKなはずだよね。
\(
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}
\)

正解だ。
注意点としては、同一の行と列の形状同士じゃないと演算が成立しないという点だな。
いわゆる「次元を一致させる」必要がある。

まぁここはチョロいもんだね。(この後は知らんが)
まとめ

まとめだよ。
- 代表的な行列演算を列挙。
- 基本的な四則演算に加えて、アダマール積、べき乗、転置。
- まずは加算、減算。
- 各要素単位で加算、減算すればOK。
- 当然、「次元を一致させる」必要がある。
バックナンバーはこちら。
コメント