バックナンバーはこちら。
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
そもそも連立方程式って何ぞ?
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
行列を利用すると連立方程式が簡単に解けるのはわかったんだが・・・。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/はてなフクロウ.png)
まだ、何かあるの?
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
よくよく考えると連立方程式って何が求まってるんだ????
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/考え中フクロウ.png)
(マジで言ってるのか?まぁマジなんだろうな・・・。(デジャブ))
交点を求める。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
連立方程式は、複数の関数の交点を求めている。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
交点?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
まず以下の2つの関数があるとして、
\(
\begin{eqnarray}
\left\{
\begin{array}{l}
x + y = 7 \\
x – y = -1
\end{array}
\right.
\end{eqnarray}
\)
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
これを図を使って交点を求めるとこんな感じ。
![複数の関数の交点を求める、交点を求めている(3,4)](https://www.simulationroom999.com/blog/wp-content/uploads/2022/07/02_複数の関数の交点を求める.png)
行列で求めると。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
これを行列で求めると
\(
\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}
\)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者03アップ.png)
ほう、交点が確かに求まった!
ためしにMATALBで計算
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
MATLABでこの行列計算させると
こんな感じになる。
>> inv([1 1;1 -1])*[7;-1]
ans =
3
4
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者03アップ.png)
一撃かー!
交点が求まると何がうれしいのか?
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
いやまてよ。
そもそもなぜ交点を求めるのか?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/びっくりフクロウ.png)
あんまり、行き過ぎると哲学の世界に突入しちゃうよ!
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/考え中フクロウ.png)
まぁ、若干過激な話になるが、
戦闘機にミサイルを命中さえるのは、交点を知っている必要はあるな。
自動運転とかも、自車以外の移動体の予測した上で交点を求めないと衝突回避とかもできないし。
![誘導ミサイル、検知しているのは熱源だが、その変位を元に方程式を生成。](https://www.simulationroom999.com/blog/wp-content/uploads/2022/07/03_誘導ミサイル.png)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
なるほど。
予測線を関数と見なすと確かに交点を求める局面は多そうだ。
まとめ
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まとめだよ。
- 連立方程式を解くということは複数の関数の交点を求めるということ。
- 行列はそれを一撃で解ける。
- ためしにMATLABで算出したら一撃。
- 移動体の予測線を関数と見なすと、交点を求める重要性がわかりやすいかも?
バックナンバーはこちら。
コメント