MATLAB,Python,Scilab,Julia比較 その8【行列③】

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

バックナンバーはこちら。
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}
\)

\(
\begin{bmatrix}
2 & 3 \\
5 & 1
\end{bmatrix}
\begin{bmatrix}
x \\
y
\end{bmatrix}=
\begin{bmatrix}
1 \\
3
\end{bmatrix}
\)

ここからどう解くのか?

太郎くん
太郎くん

で、ここからどうするの?

フクさん
フクさん

両辺を行列で割る。
まぁ行列自体は除算ができないので、
行列の逆数である逆行列を掛ける

\(
\begin{bmatrix}
2 & 3 \\
5 & 1
\end{bmatrix}^{-1}
\begin{bmatrix}
2 & 3 \\
5 & 1
\end{bmatrix}
\begin{bmatrix}
x \\
y
\end{bmatrix}=
\begin{bmatrix}
2 & 3 \\
5 & 1
\end{bmatrix}^{-1}
\begin{bmatrix}
1 \\
3
\end{bmatrix}
\)

フクさん
フクさん

そして、逆行列と正行列を掛けると単位行列になるので、
ここから消える

\(
\begin{bmatrix}
x \\
y
\end{bmatrix}=
\begin{bmatrix}
2 & 3 \\
5 & 1
\end{bmatrix}^{-1}
\begin{bmatrix}
1 \\
3
\end{bmatrix}
\)

太郎くん
太郎くん

いい感じにx,yが求まりそうな形にはなったが・・・。
この逆行列ってどう求めるの?

2×2行列の逆行列の公式

フクさん
フクさん

逆行列は掃き出し法などを使用して求めるのだが、
ここでは2×2行列の逆行列の公式を使おう

2×2行列の逆行列の公式

\(
A=
\begin{bmatrix}
a & b \\
c & d
\end{bmatrix}
\)

\(
\displaystyle
A^{-1}=
\begin{bmatrix}
a & b \\
c & d
\end{bmatrix}^{-1}=
\frac{1}{ad-bc}
\begin{bmatrix}
d & -b \\
-c & a
\end{bmatrix}
\)

行列を連立方程式で解く

フクさん
フクさん

これを当てはめると・・・。

\(
\displaystyle
\begin{bmatrix}
2 & 3 \\
5 & 1
\end{bmatrix}^{-1}=
\frac{1}{2\times-3\times5}
\begin{bmatrix}
1 & -3 \\
-5 & 2
\end{bmatrix}=
\frac{1}{13}
\begin{bmatrix}
1 & -3 \\
-5 & 2
\end{bmatrix}
\)

フクさん
フクさん

よって、

\(
\displaystyle
\begin{bmatrix}
x \\
y
\end{bmatrix}=
\frac{1}{13}
\begin{bmatrix}
1 & -3 \\
-5 & 2
\end{bmatrix}
\begin{bmatrix}
1 \\
2
\end{bmatrix}=
\frac{1}{13}
\begin{bmatrix}
-8 \\
1
\end{bmatrix}=
\begin{bmatrix}
-8/13 \\
1/13
\end{bmatrix}
\)

太郎くん
太郎くん

あーー!!
なんか答え出たーー!
しかも、このパターンだとプログラム化のイメージが出来る

フクさん
フクさん

というわけで、
これが行列の効能の一端と言ったところだ。

まとめ

フクさん
フクさん

まとめだよ。

  • 行列で連立方程式を解いてみた。
  • 両辺を行列で割る・・・のがだが、行列は除算が無く、逆行列を掛けるで除算を実現する。
  • 逆行列は掃き出し法と呼ばれる方法で求めるが、ここでは公式を使用。
  • 結果として、答えが求まった。
  • 特徴としてはルールが明確なためプログラム化し易いという点。

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

コメント

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