バックナンバーはこちら。
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
状態空間モデルを確認するには

とりあえず、前回でニュートンの運動方程式を状態空間モデルで表現できたわけなんけど、
これってこの後何したらいいの?

当然、動作確認だな。

どうやって?

それは・・・、
どうしよっか?

なぜこっちに問い返す!

まぁまじめにベクトル、行列単位で微分を解くのが一番ではあるのだけど、
それを始めると結構な長さの解説になりそうなんだよね。
今の段階では、もっと手っ取り早い確認方法が良いかなって思って。

MATLABとかで一撃で確認できないの?

できるんだけど、
MATLABの場合、Control System Toolboxが必要になるんだよね。
残念ながら私が保有しているライセンスだと入ってない。
まぁSimulinkに状態空間モデル用のブロックがあるからそれで代用してもよいけど。

もしかして、各ツール、各言語で状態空間モデルを扱えちゃったりする?

さっきも言った通り、MATLABはControl System Toolboxが必要にはなるが、
各ツール、各言語で状態空間モデルは扱えそうだ。
少なくともPython、Scilabは使えるはずだ。
Juliaに関してはやったことないけど、軽く調べた限りだと似たようなやり方でできそうだな。

じゃー、各ツール、各言語で今回の状態空間モデルを動かせちゃえばいいじゃん。

そうだな。
まずはそれが手っ取り早そうだな。

(「まずは」って言い方がものすごく不穏なんだけど・・・。)
使用する状態空間モデルの各行列とパラメータ

まず事前に、今回使用する状態空間モデルの各行列とパラメータをまとめておこう。
前回、求めた状態空間モデルは以下だ。
\(
\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)
\)
\(
\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)
\)

確かにそうだね。

これにより各行列は以下になる。
\(
\boldsymbol{A}=
\begin{bmatrix}
0 && 0 \\
1 && 0
\end{bmatrix}
\)
\(
\boldsymbol{B}=
\begin{bmatrix}
1/m \\
1
\end{bmatrix}
\)
\(
\boldsymbol{C}=
\begin{bmatrix}
1 && 0 \\
0 && 1
\end{bmatrix}
\)
\(
\boldsymbol{D}=
\begin{bmatrix}
0 \\
0
\end{bmatrix}
\)

そして、質量\(m\)は外部設定可能なパラメータとする。
とりあえず、特性を見たいだけだから\(1[kg]\)にしておこう。

これでシミュレーションができるってことだね。

次回から一つずつ試してみよう。
まとめ

まとめだよ。
- 状態空間モデルを確認するにはシミュレーションしてみるしかない。
- まじめにシミュレーションしようと思うとベクトル、行列に対する微分を解決する必要がある。
- (これもやる予定だが後で)
- 各ツール、各言語で状態空間モデルが扱えそうなので、それらで動かしてみる。
- ただし、MATLABに関してはSimulinkの状態空間モデルブロックで実施予定。
バックナンバーはこちら。
コメント