バックナンバーはこちら。
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
とりあえず連立方程式を解いてみる。
じゃー、行列の存在意義を証明してもらおうか!
(なんで態度デカいの・・・。)
とりあえず、以下の連立方程式を用意しよう。
\(
\begin{eqnarray}
\left\{
\begin{array}{l}
2x + 3y = 1 \\
5x + y = 3
\end{array}
\right.
\end{eqnarray}
\)
これの答えは?
えっと、
下の式を使って、
\(y=-5x+3\)
これを上の式にいれて・・・。
\(2x+3(-5x+3)=1\)
\(2x-15x+9=1\)
\(x=-8/13\)
\(y=-40/13+39/13\)
\(y=1/13\)
か!
プログラムに解かせるには?
じゃ、それをプログラムで解くようにしてみて。
え?
この一連の流れを?
そうそう。
いや、ちょっと全然思いつかない・・・。
まぁそうだろうな。
それに今回の場合だと、分数が出てきている。
この部分の計算をプログラム的に解くと小数が出てきて、途中計算段階での演算誤差にもなり得るしね。
これを避けるには計算過程の分数の分母分子も記憶して、
最後の最後で一括で割り算を実施するような仕組みが必要だろう。
恐ろしく面倒そうってことだけわかった。
連立方程式を行列で表現すると
で、次は行列を使うとどうなるかを説明してもらおう!
当然、超楽ちんってことでいいんだろうな!?
(なんで態度デカいの・・・(2回目))
今回はとりええず、連立方程式を行列で書くとどうなるかまでやっておくか。
こんな感じの表現になるよ。
\(
\begin{eqnarray}
\left\{
\begin{array}{l}
2x + 3y = 1 \\
5x + y = 3
\end{array}
\right.
\end{eqnarray}
\)
↓
\(
\begin{bmatrix}
2 & 3 \\
5 & 1
\end{bmatrix}
\begin{bmatrix}
x \\
y
\end{bmatrix}=
\begin{bmatrix}
1 \\
3
\end{bmatrix}
\)
連立方程式の係数部分が・・・行列になってる?
そして、x,yが列ベクトル、右辺も列ベクトル・・・。
実際の解き方は次回。
まとめ
まとめだよ。
- とりあえず連立方程式を普通に解いてみた。
- しかし、そのプロセスをプログラム化するのは超難解。
- つまり、行列を使うとこの超難解な状態から脱することができる。
- 今回は、連立方程式を行列で表現するとどうなるか。ってところまで。
バックナンバーはこちら。
コメント