バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia-backnumber/
はじめに
前回は、以下を実施
- 状態量の定義。
- 運動方程式を紐解いて、状態量の内訳である速度、距離の方程式を求めた。
あとは、この情報を元に状態空間モデルを組み上げる。
登場人物
博識フクロウのフクさん
イラスト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
前回の方程式再掲
まずは、前回求めた、速度と距離の方程式を再掲しておこう。
\(
\begin{eqnarray}
m \dot{v}(t) &=& F(t) \\
\dot{v}(t) &=& \displaystyle \frac{F(t)}{m}\dots(1) \\
\dot{s}(t) &=& v(t)\dots(2)
\end{eqnarray}
\)
これがあれば、状態空間モデルが組み上げられるってことだね。
状態方程式の組み上げ
まずは状態方程式。
状態方程式
\(\dot{\boldsymbol x}=A\boldsymbol{x}+B\boldsymbol{u}\)
これに対して今回導出した方程式である(1)(2)を適用すると以下になる。
\(
\begin{bmatrix}
\dot{v}(t) \\
\dot{s}(t)
\end{bmatrix}=
\begin{bmatrix}
0 && 0 \\
1 && 0
\end{bmatrix}
\begin{bmatrix}
v(t) \\
s(t)
\end{bmatrix}+
\begin{bmatrix}
1/m \\
0
\end{bmatrix}
F(t)
\)
これは行列演算の表現になっただけで、
(1)(2)の方程式と全く同じ意味の数式ってことだね。
その通り。
出力方程式の組み上げ
次は出力方程式。
出力方程式
\(\boldsymbol y=C\boldsymbol{x}+D\boldsymbol{u}\)
これに対して、出力させたい変数は距離\(s(t)\)
そうなると以下になる。
\(
\boldsymbol{y}=
\begin{bmatrix}
0 && 0 \\
0 && 1
\end{bmatrix}
\begin{bmatrix}
v(t) \\
s(t)
\end{bmatrix}+
\begin{bmatrix}
0 \\
0
\end{bmatrix}
F(t)
\)
しかし、ここでは内部パラメータを全部参照しておきたいので、
以下にしておく。
\(
\boldsymbol{y}=
\begin{bmatrix}
1 && 0 \\
0 && 1
\end{bmatrix}
\begin{bmatrix}
v(t) \\
s(t)
\end{bmatrix}+
\begin{bmatrix}
0 \\
0
\end{bmatrix}
F(t)
\)
あ、なるほど。
出力行列\(C\)次第で出力される状態量が確定するのか。
そうそう。
元々の問いでは距離\(s(t)\)だけではあったけど、念のため速度\(v(t)\)も見たいとかになれば出力行列\(C\)を弄ればOKってことだな。
これで運動方程式を元にした超シンプルな状態空間モデルは完成。
まとめ
まとめだよ。
- 状態方程式、出力方程式を組み上げた。
- 状態方程式は前回の運動方程式から導出した微分方程式を元に作成。
- 出力方程式は参照したい状態量に合わせて出力行列Bを調整するのみ。
バックナンバーはこちら。
コメント