MATLAB、Python、Scilab、Julia比較ページはこちら
https://www.simulationroom999.com/blog/comparison-of-matlab-python-scilab/
はじめに
の、
MATLAB,Python,Scilab,Julia比較 その56【状態空間モデル⑭】
MATLAB,Python,Scilab,Julia比較 その57【状態空間モデル⑮】
を書き直したもの。
状態空間モデルは多変量であるため、ベクトル行列の形式になっている。
つまり、ベクトル行列の形式まま微分解決する話となる。
状態空間モデルまま微分解決可能か?
結論としては微分解決可能。
実はそれほどベクトル行列であることは意識しない。
【再掲】状態空間モデル
状態空間モデルを再掲しておく。
\(\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)+\{A\boldsymbol{x}(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(t)}\)を出力方程式に代入
\(\boldsymbol{y}(t+\Delta T)=C\boldsymbol{x}(t+\Delta t)+D\boldsymbol{u}(t)\)
微分解決済みの状態方程式と出力方程式
\(\boldsymbol{x}(t+\Delta t)=\boldsymbol{x}(t)+\{A\boldsymbol{x}(t)+B\boldsymbol{u}(t)\}\Delta t \)
\(\boldsymbol{y}(t+\Delta T)=C\boldsymbol{x}(t+\Delta t)+D\boldsymbol{u}(t)\)
これをプログラムに落とせばOK。
イメージがわかない場合は、MATLAB、Python、Scilab、Juliaで作成する予定なので、ご参考に。
まとめ
- 状態空間モデルの状態方程式と出力方程式の微分解決を実施。
- 基本的には状態方程式側の微分解決をし、その結果を出力方程式に代入する。
- MATLAB、Python、Scilab、Juliaで上記をプログラムとして実装予定なので、よくわからん人は参照すべし。
MATLAB、Python、Scilab、Julia比較ページはこちら
コメント