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

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

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

はじめに

前回は、状態空間モデルを理解するために
超シンプルな微分方程式を対象にしてみようという話になった。
具体的にはニュートンの運動方程式。
入力は力Fで出力(観測)は距離sとする。

この情報を元に状態空間モデルを作る過程を見て行く。

登場人物

博識フクロウのフクさん

指差しフクロウ

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

状態量の定義

フクさん
フクさん

入力と出力は決まっているので、
状態量xを定義する必要がある。

太郎くん
太郎くん

つまり、外から見えない変数?

フクさん
フクさん

まぁそうだけど、外から見える変数、つまり出力も状態量に含める必要はあるかな。

太郎くん
太郎くん

といっても、運動方程式の変数と言われても、
F、距離s、速度v、加速度a、質量mくらいしか思いつかないな・・・。

フクさん
フクさん

ちなみに質量mは今回は変数ではなく係数という位置づけになるな。
先に答え言っちゃうと距離s、速度vを状態量とすると都合が良さそうだ。
というわけで状態量xは以下と定義できる。

状態量

x=[v(t)s(t)]

太郎くん
太郎くん

ようわからんけど、そういう定義が都合が良いなら、まずは傍観しとこう。

フクさん
フクさん

そして、これに伴って状態方程式の解である、x˙は以下になる。

x˙=[v˙(t)s˙(t)]

太郎くん
太郎くん

そうか。状態方程式の解はxの一階微分になるのか。

運動方程式を紐解いていく

フクさん
フクさん

ここから運動方程式を紐解いていく。

運動方程式
ms¨(t)=F(t)

距離s(t)、速度v(t)、加速度a(t)の関係
s¨(t)=v˙(t)=a(t)
s˙(t)=v(t)

上記より
mv˙(t)=F(t)v˙(t)=F(t)m(1)s˙(t)=v(t)(2)

各種方程式を見て

フクさん
フクさん

ここまでは良い?

太郎くん
太郎くん

微分は出てくるけど、そこは距離、速度、加速度の関係性で吸収されちゃうから
あまり気にしなくてもOKそうで、
あとは普通に移項して、x˙の中身である、
v˙(t)s˙(t)が求められる方程式が出てきた。
って認識。

フクさん
フクさん

いいね。
まずはそこまで分かっていれば、これを状態空間モデルとして組み上げるのみだ。

まとめ

フクさん
フクさん

まとめだよ。

  • まずは状態量を定義。
    • 速度、距離を状態量とした。
  • 運動方程式を紐解く。
    • 距離、速度、加速度の関係性が微分を吸収する。
    • 状態量の内訳である速度、距離の方程式が求まったところ。

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

コメント

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