バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia-backnumber/
はじめに
前回は、連立方程式を行列演算にしたものを再掲しつつ、
それぞれの意味合いを説明。
端的に言うと、[出力ベクトル]=[変換行列][入力ベクトル]となる。
これを入力ベクトル、出力ベクトルを2セットにすると2×2の行列となる。
数式上はすべて2×2の行列ではあるが、位置によって、入力、変換、出力と意味が異なる。
今回はこの発想を元にさらに入力、出力を拡張する話となる。
登場人物
博識フクロウのフクさん
イラスト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セット]=[変換行列][入力ベクトル2セット]を再掲しよう。
\(
\begin{bmatrix}
x_1^\prime & x_2^\prime\\
y_1^\prime & y_2^\prime
\end{bmatrix}=
\begin{bmatrix}
a & b \\
c & d
\end{bmatrix}
\begin{bmatrix}
x_1 & x_2 \\
y_1 & y_2
\end{bmatrix}
\)
全部2×2の行列だけど、数式上の位置で意味がかわるんだよねー。
さらに拡張すると・・・。
これをさらに拡張できる。
拡張?
上記の式は
入力ベクトル2セットに対して、出力ベクトル2セットを得ていることを示している。
これを2セットではなく、nセットにするとどうなるか。
そうか!
列ベクトル2セットで2×2行列になってるだけだから、
nセットだと、nx2行列が入力ベクトルnセット、出力ベクトルnセットってことになるのか?!
じゃ、試しにどうなるか書いてみて。
こんな感じかな?
\(
\begin{bmatrix}
x_1^\prime & x_2^\prime & \dots & x_n^\prime\\
y_1^\prime & y_2^\prime & \dots & y_n^\prime
\end{bmatrix}=
\begin{bmatrix}
a & b \\
c & d
\end{bmatrix}
\begin{bmatrix}
x_1 & x_2 & \dots & x_n \\
y_1 & y_2 & \dots & y_n
\end{bmatrix}
\)
うむ。OKだろう。
なんか行列が面白くなってきたしてきたぞ!
ちなみに、この書き方の利点って分かる?
大量の入力を同じルールで一括変換って感じかな?
正解だ。
これが行列演算の醍醐味でもあるな。
とくにPC等で演算させる場合、大量のデータを扱うことが多いから
行列のこの特性を知ってるのと知らないのではロジックの効率が大幅に異なることが多い。
そうだねー。
大量演算と言うと、すぐfor文でぶん回すって考えるけど、
行列で演算できそうなら行列の方が良さそうだよね。
行列の知識はコミュニケーションスキル?
まぁCPUで演算時には結局ループ処理的に回すことになるかもしれないが、
数式ベースでは行列表現の方が一発で話が通ることが多いな。
つまり、ここらへんはテクニカルスキルというよりコミュニケーションスキルって場合もあるな。
行列の知識がまさかのコミュニケーションスキルとは・・・。
ま、そういった現場もあるって程度の話だな。
当然、行列にあまり慣れ親しんでいない現場や業界もあるだろうし。
でも、上司や先輩が謎の議論をしていると思っていたものも
今回の知識でちょっと意味がわかってくるような気がする。
まずはここまでを線形代数の基礎ということで一端区切りを入れよう。
(や、やっと終わったの・・・か?まぁ得るものは多かった気もするけど)
まとめ
まとめだよ。
- 前回の行列演算の式を再掲。
- 前回は入力、出力の列ベクトルを2セットだったが、これをnセットにするとどうなるか。
- 入力、出力が2×2行列からnx2行列へ。
- これの利点は入力から出力の変換が一括で表現できること。
- これを知ってるだけでコミュニケーションスキルが上がる?
- これの利点は入力から出力の変換が一括で表現できること。
- 入力、出力が2×2行列からnx2行列へ。
バックナンバーはこちら。
コメント