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

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

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

はじめに

前回はDCモータに於ける、状態方程式を導出した。

というわけで今回は出力方程式

登場人物

博識フクロウのフクさん

指差しフクロウ

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

出力方程式

太郎くん
太郎くん

残りは出力方程式だけど、
こっちはチョロそうだね。
微分方程式とは無関係な感じだし。

フクさん
フクさん

その認識でOKだ。
よって、組み上げて見て。

太郎くん
太郎くん

マジか・・・。

太郎くん
太郎くん

まぁそれほど難しい話じゃなくて、
出力したい状態を行列で指定するだけだもんね。
とりあえず、角度\(\theta\)だけを出力する場合はこんな感じかな。

\(
\boldsymbol{y}=
\begin{bmatrix}
1 && 0 && 0
\end{bmatrix}
\begin{bmatrix}
\theta(t) \\
\omega(t) \\
I(t)
\end{bmatrix}+
\begin{bmatrix}
0
\end{bmatrix}
E(t)
\)

太郎くん
太郎くん

まぁでも実験段階だと全部みたいことが多いから、
以下にしておいた方が無難な感じかな。

\(
\boldsymbol{y}=
\begin{bmatrix}
1 && 0 && 0 \\
0 && 1 && 0 \\
0 && 0 && 1 \\
\end{bmatrix}
\begin{bmatrix}
\theta(t) \\
\omega(t) \\
I(t)
\end{bmatrix}+
\begin{bmatrix}
0 \\
0 \\
0
\end{bmatrix}
E(t)
\)

フクさん
フクさん

そうだね。
まずは全部を出力にしておいた方が良いだろう。

各行列

太郎くん
太郎くん

というわけで各行列は以下になる。

状態行列

\(
A=
\begin{bmatrix}
0 && 1 && 0 \\
0 && 0 && K/J \\
0 && -K/L && -R/L
\end{bmatrix}
\)

入力行列

\(
B=
\begin{bmatrix}
0 \\
0 \\
1/L
\end{bmatrix}
\)

出力行列

\(
C=
\begin{bmatrix}
1 && 0 && 0 \\
0 && 1 && 0 \\
0 && 0 && 1 \\
\end{bmatrix}
\)

直達行列

\(
D=
\begin{bmatrix}
0 \\
0 \\
0
\end{bmatrix}
\)

太郎くん
太郎くん

これでDCモータの状態空間モデルは完成だね。

フクさん
フクさん

これを元にシミュレーションしないと確からしさは分からないけどね。

太郎くん
太郎くん

それが残ってたか・・・。

フクさん
フクさん

まぁ以前作った状態空間モデルのシミュレーションコードをベースで割とそのままうごくとは思うよ。

太郎くん
太郎くん

なるほど。
そこが状態空間モデルの良いところだね。

まとめ

フクさん
フクさん

まとめだよ。

  • 出力方程式を導出。
    • 基本は、出力させたい項を出力行列で指定するだけ。
    • 実験段階では全状態を見たいことが多いので全部出力指定にすることが多い。
  • 各種行列を列挙。
  • シミュレーションしないと確からしさはわからないが、以前のシミュレーションコード使い回しでいけそう。
    • これが状態空間モデルの良いところ。

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

コメント

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