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

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

バックナンバーはこちら。
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の状態空間モデルブロックで実施予定。

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

コメント

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