バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia-backnumber/
はじめに
前回までで線形代数の基礎っぽいところがおわったところ。
実際の線形代数の範囲はもっと広いが、行列演算というターゲットとしては一端終了。
今回から各ツール、各言語に於ける行列演算の話に突入
登場人物
博識フクロウのフクさん

イラスト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
どういう演算を確認するか

線形代数の基礎の話が終わったから、
今度こそ各ツール、各言語での行列演算の話だね。

そうだね。
とりあえず、以下の確認をすることとしよう。
- 足し算
- 引き算
- 掛け算(内積)
- アダマール積
- 左除算
- 右除算
- べき乗
- 転置
- 反転

なんか反転ってのが増えてるような?

あんまり数式上の出てくるものではないが、
ツール、言語上ではちょいちょい出てくるから混ぜておいた。

そういうことも簡単にできるってことか。

そして、使用する行列は以下2つとする。
\(A=
\begin{bmatrix}
1 & 2 \\
3 & 4
\end{bmatrix}
\)
\(B=
\begin{bmatrix}
5 & 6 \\
7 & 8
\end{bmatrix}
\)
MATLABの場合

まずは手馴れたMATLABで一気に確認しよう。
%足し算
>> A+B
ans =
6 8
10 12
%引き算
>> A-B
ans =
-4 -4
-4 -4
%掛け算(内積)
>> A*B
ans =
19 22
43 50
%アダマール積
>> A.*B
ans =
5 12
21 32
%左除算
%‘¥’はバックスラッシュと同義
>> A\B
ans =
-3 -4
4 5
>> inv(A)*B
ans =
-3.0000 -4.0000
4.0000 5.0000
%右除算
>> A/B
ans =
3.0000 -2.0000
2.0000 -1.0000
>> A*inv(B)
ans =
3.0000 -2.0000
2.0000 -1.0000
%べき乗
>> A^2
ans =
7 10
15 22
%転置
>> A'
ans =
1 3
2 4
%一次元目(縦方向)に対して反転
>> flipdim(A,1)
ans =
3 4
1 2
>> A(end:-1:1,:)
ans =
3 4
1 2
%ニ次元目(横方向)に対して反転
>> flipdim(A,2)
ans =
2 1
4 3
>> A(:,end:-1:1)
ans =
2 1
4 3
パッと見の感想

反転は、関数でやる場合と、start:step:endの形式(区間演算子)でやる場合があるんだね。

区間演算子は結構便利だからね。
使う人も多いから、こういう書き方は把握しておいた方が良いだろう。
まとめ

まとめだよ。
- 具体的に各ツール、各言語での行列演算についての話に突入。
- 四則演算に加えて、アダマール積、べき乗、転置、反転。
- まずは手馴れたMATLABから。
バックナンバーはこちら。
コメント