バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia-backnumber/
はじめに
前回はまでで、各ツール、各言語による状態空間モデルのシミュレーションを実施した。
シミュレーションできたので、これはこれでOKなのだが、
元々、本シリーズはベクトル、行列を駆使してなんとかする動機で始まっている。
つまり、状態空間モデルのまま演算する方法があるとかないとか。
登場人物
博識フクロウのフクさん

イラスト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
状態空間モデルをさらに掘り下げる?

これで状態空間モデルはOKだねー。
これで僕も行列マスター!

うむ。
というわけで次は状態空間モデルをガチのベクトル行列演算でシミュレーションしようと思う。

は?

だからシミュレーション。

シミュレーションは前回までで一通りやったじゃん・・・。

元々はベクトル行列に慣れるためにスタートしたシリーズだ。
状態空間モデルは、ベクトル、行列の形状のまま微分解決可能な構成。
よってそれを最大限に活用しようと思う。

ベクトル、行列な上に微分とか分けわからーん!!

まぁ気持ちはわかる。
ベクトル、行列なだけでめんどそうなイメージある上に、
そこに対して微分解決って話が入るもんな。
でも、それほど難しい話ではない。

(フクさんが「難しい話ではない」と言ってて難しくなかった試しがないのだが・・・。)
状態空間モデルを使用せずに普通に微分解決すると?

まず、状態空間モデルを使用しないで、運動方程式の微分解決を考えてみよう。

うーん、確か漸化式ってやつを導き出す感じだったかな?

そうそう。
速度\(\boldsymbol v\)と距離\(\boldsymbol s\)に対して行ってみよう。
運動方程式
\(\boldsymbol{F}=m\boldsymbol{a} \)
加速度、速度、距離の関係
\(\boldsymbol{a}(t)=\boldsymbol{\dot{v}}(t)=\boldsymbol{\ddot{s}}(t) \)
速度の漸化式
\(\boldsymbol{\dot{v}}(t)=\displaystyle \frac{1}{m}\boldsymbol{F}(t)\)
\(\boldsymbol{v}(t)=\boldsymbol{\dot{v}}(t)\Delta T + \boldsymbol{v}(t-\Delta T) \)
距離の漸化式
\(\boldsymbol{\dot{s}}(t)=\boldsymbol{v}(t)\)
\(\boldsymbol{s}(t)=\boldsymbol{\dot{s}}(t)\Delta T + \boldsymbol{s}(t-\Delta T) \)

あー、この作業は良く見るなー。
まぁこれの前にブロック図書いたり、
その後C言語に落として―。

そこら辺のメンドクサさを再確認するためにも
一度ブロック図作成とC言語化をやってみるか。

(まぁフクさんがやってくれるなら別にいいけど。)

(たぶん他人事のように考えてやがってるな・・・。)
まとめ

まとめだよ。
- 状態空間モデルを掘り下げる。
- ベクトル、行列であることの利点があるはず。
- その前に状態空間モデルを使用しない場合はどうなるかをやってみる。
- 漸化式、ブロック図、C言語化をやってみる。(漸化式は今回やった)
バックナンバーはこちら。
コメント