MATLAB,Python,Scilab,Julia比較 その10【行列⑤】

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

バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia-backnumber/

はじめに

前回は、逆行列を求める掃き出し法について説明。
対角以外を0にするようにし、最後に対角成分で行全体を割ればOKなので、
プログラム化しやすい部類ではある。
とわいけ結構めんどくさいろじっくではある。
しかし、MATLAB、Python(Numpy)、Scilab、Juliaでは逆行列を求める機能があるので、直に計算することはない。
よって、今後は特に掃き出し法を使って逆行列を求めるってことはしない想定。

今回は、連立方程式について?

登場人物

博識フクロウのフクさん

イラスト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つの関数があるとして、

\(
\begin{eqnarray}
\left\{
\begin{array}{l}
x + y = 7 \\
x – y = -1
\end{array}
\right.
\end{eqnarray}
\)

フクさん
フクさん

これを図を使って交点を求めるとこんな感じ。

複数の関数の交点を求める、交点を求めている(3,4)

行列で求めると。

フクさん
フクさん

これを行列で求めると

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

太郎くん
太郎くん

ほう、交点が確かに求まった!

ためしにMATALBで計算

フクさん
フクさん

MATLABでこの行列計算させると
こんな感じになる。

>> inv([1 1;1 -1])*[7;-1]

ans =

     3
     4
太郎くん
太郎くん

一撃かー!

交点が求まると何がうれしいのか?

太郎くん
太郎くん

いやまてよ。
そもそもなぜ交点を求めるのか?

フクさん
フクさん

あんまり、行き過ぎると哲学の世界に突入しちゃうよ!

フクさん
フクさん

まぁ、若干過激な話になるが、
戦闘機にミサイルを命中さえるのは、交点を知っている必要はあるな。
自動運転とかも、自車以外の移動体の予測した上で交点を求めないと衝突回避とかもできないし。

誘導ミサイル、検知しているのは熱源だが、その変位を元に方程式を生成。
太郎くん
太郎くん

なるほど。
予測線を関数と見なすと確かに交点を求める局面は多そうだ。

まとめ

フクさん
フクさん

まとめだよ。

  • 連立方程式を解くということは複数の関数の交点を求めるということ。
  • 行列はそれを一撃で解ける。
    • ためしにMATLABで算出したら一撃。
  • 移動体の予測線を関数と見なすと、交点を求める重要性がわかりやすいかも?

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

コメント

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