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

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

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

スポンサーリンク

状態空間モデルまま微分解決可能?

太郎くん
太郎くん

前回までは状態空間モデルを使用しないでCコード化、シミュレーションをやったわけだけど、
今回からは状態空間モデルを使用した場合、どうなるかって話に突入か…。

フクさん
フクさん

なんか憂鬱そうだねぇ。

太郎くん
太郎くん

以前も言ったけど、ベクトル、行列に加えて微分方程式って思うと気が重くて・・・。

フクさん
フクさん

まぁあんまりベクトル、行列は気にしなくて良いかもよ。
というか、気にしないようになってるし。

太郎くん
太郎くん

それは知ってる側の意見であって、知らない側の意見じゃない!

フクさん
フクさん

まぁ一つずつ解説していこう。

スポンサーリンク

【再掲】状態空間モデル

フクさん
フクさん

とりあえず、状態空間モデルを再掲しておく。

\(\dot{\boldsymbol{x}}=A\boldsymbol{x}+B\boldsymbol{u}\)
\(\boldsymbol{y}=C\boldsymbol{x}+D\boldsymbol{u}\)

太郎くん
太郎くん

ここからどう微分解決するのか・・・。

スポンサーリンク

状態方程式の微分解決

フクさん
フクさん

まず状態方程式の両辺を積分してみよう。

\(\int \dot{\boldsymbol{x}} dt=\int(A\boldsymbol{x}+B\boldsymbol{u})dt\)
\(\boldsymbol{x}=\int(A\boldsymbol{x}+B\boldsymbol{u})dt\)

太郎くん
太郎くん

なるほど、両辺を積分すると、とりあえず微分は消える・・・。

太郎くん
太郎くん

その代わり積分が増えたじゃん!!!

フクさん
フクさん

ここで微分解法としてオイラー法(テイラー1次)を採用。

\(\boldsymbol{x}(t+\Delta t)=\boldsymbol{x}(t)+\{Ax(t)+B\boldsymbol{u}(t)\}\Delta t \)

太郎くん
太郎くん

そっか、精度をある程度犠牲にすることを考えれば、オイラー法で解決できたことにできるのか。

オイラー法(オイラーほう、英: Euler method)とは、常微分方程式の数値解法の一つである。この方法は、数学的に理解しやすく、プログラム的にも簡単なので、数値解析の初歩的な学習問題としてよく取りあげられる。

Wikipeiaより(https://ja.wikipedia.org/wiki/%E3%82%AA%E3%82%A4%E3%83%A9%E3%83%BC%E6%B3%95)
フクさん
フクさん

当然、ホルン法、ルンゲクッタ法でも良いけど、
とりあえずオイラー法の精度でも大体なんとかなるんだよね。

太郎くん
太郎くん

って、これって\(\boldsymbol{x}\)とかベクトルなはずなんだけど成立するの?

フクさん
フクさん

成立する。
というか、単なるデータの集合体でしかないから、これが1変数か多変数かは関係ないな。

太郎くん
太郎くん

そういうもんか。

スポンサーリンク

まとめ

フクさん
フクさん

まとめだよ。

  • 状態空間モデルのまま微分解決可能なはず。
  • まずは状態方程式の微分解決を実施。
    • 両辺を積分して、その後にオイラー法で微分解決。
      • とりえずはオイラー法でも精度が十分なことは多い。

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

コメント

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