MATLAB,Python,Scilab,Julia比較 その7【行列②】

MATLAB,Python,Scilab,Julia比較 その7【行列②】 数値計算
MATLAB,Python,Scilab,Julia比較 その7【行列②】

バックナンバーはこちら。
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が列ベクトル、右辺も列ベクトル・・・。

フクさん
フクさん

実際の解き方は次回。

まとめ

フクさん
フクさん

まとめだよ。

  • とりあえず連立方程式を普通に解いてみた。
  • しかし、そのプロセスをプログラム化するのは超難解。
  • つまり、行列を使うとこの超難解な状態から脱することができる。
  • 今回は、連立方程式を行列で表現するとどうなるか。ってところまで。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました