【入門】Scilab状態空間モデル(運動方程式)【数値計算】

【入門】Scilab状態空間モデル(運動方程式)【数値計算】 数値計算
【入門】Scilab状態空間モデル(運動方程式)【数値計算】

MATLAB、Python、Scilab、Julia比較ページはこちら
https://www.simulationroom999.com/blog/comparison-of-matlab-python-scilab/

はじめに

の、
MATLAB,Python,Scilab,Julia比較 その51【状態空間モデル⑨】

を書き直したもの。

Scilabで状態空間モデル

Python版と流れは一緒。
使用する関数名が違うという程度。

  • syslin:線形システム定義関数
  • csim:線形システムシミュレーション関数

要するに、syslin関数に各行列を渡して、
csimでシミュレーション実行。
たぶんコードを見た方が早い。

\(
\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;

A=[0,0 ; 1,0];
B=[1/m ; 0];
C=[1,0;0,1];
D=[0;0];

sys = syslin('c', A, B, C, D);	// 状態空間モデル生成

t=linspace(0,10,10000); // 時間(横)軸
step=zeros(1,10000);	// 入力信号生成
step(1,5000:10000)=1;	// 5秒後に0から1へ

y=csim(step,t,sys); // 連続系時間応答のシミュレーション

plot(t,y,"linewidth",3);
plot(t,step,"--b","linewidth",3);
xgrid();

てっきりMATLABのControl System Toolboxの仕様に合わせてるのかと思ったが、
そうでもないようである。
むしろ、この手の領域は全く文化が異なると思った方が良い。
今回の状態空間モデルに限定するとたまたま流れが似ていただけ。

シミュレーション結果

Scilabで状態空間モデル(運動方程式)、力F、速度v、距離s

まとめ

  • Scilabで状態空間モデルのシミュレーションをするにはsyslinとcsim関数を使用する。
    • MATLABに寄せてるかと思いきや、この分野はかなり異なる仕様になっている。
      • 今回の状態空間モデルに限定するとたまたま流れが似ていただけ。

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

コメント

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