MATLAB,Python,Scilab,Julia比較 その54【状態空間モデル⑫】

MATLAB,Python,Scilab,Julia比較 その54【状態空間モデル⑫】 数値計算
MATLAB,Python,Scilab,Julia比較 その54【状態空間モデル⑫】

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

はじめに

前回から、状態空間モデルの掘り下げの話に突入。
まずは状態空間モデルを使用しないパターンをやってみる。
漸化式は前回出したので、ブロック図、C言語化にチャレンジ。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラスト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

運動方程式のブロック図

フクさん
フクさん

じゃ、運動方程式のブロック図をざっと書いておこう。
ちなみにガチで書くとメンドサイからSimulinkで書いた。

運動方程式のブロック図、力F、速度v、距離s
太郎くん
太郎くん

Simulinkで書いたなら、もうこれでシミュレーションとオートコード生成しちゃえばいいじゃんって思うな・・・。

フクさん
フクさん

まぁそれが現行のプロセスではあるけど、
そこは一個ずつ手作業でやるって体で進める。
じゃないと一瞬で終わって状態空間モデルの利点が伝わらない。

太郎くん
太郎くん

とすると、現状だと状態空間モデルの利点がないってことになるんじゃ・・・。

フクさん
フクさん

そこはまぁ一通りやってみてから再度考察しよう。

運動方程式のブロック図の離散化

フクさん
フクさん

先のブロック図は連続系。
これを離散化する必要がある。
まぁ積分器のところを加算器にさしかえるだけなんだけど。

運動方程式のブロック図(離散化)、力F、速度v、距離s
太郎くん
太郎くん

これも良く見かけるな。
オートコード生成する場合はこれからやる感じかな。

再度漸化式

フクさん
フクさん

そして、前回すでに書きだしたが、
この離散化したブロック図を元に漸化式を導出する。

速度の漸化式
\(\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コード化ってプロセスを踏んでるところもあるようだな。

太郎くん
太郎くん

ちょっと、どんな感じのコードになるか見たいんだけど・・・。

フクさん
フクさん

じゃ、次回までにCコードを起こしておこう。

まとめ

フクさん
フクさん

まとめだよ。

  • 運動方程式をブロック図で書き起こした。
    • エディタの利便性からSimulinkを利用。
  • 上記を離散化。
    • Simulink利用の場合、この段階からオートコード生成。
  • 離散化ブロックを元に漸化式。
    • これからCコード化をする。(次回Cコードを見せる予定)

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

コメント

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