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

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

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

はじめに

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

を書き直したもの。

Juliaで状態空間モデル

JuliaもPythonと似たような感じできる。。
ControlSystemsパッケージを使用する。

PythonのControlライブラリのmatlabモジュールと同様に
MATLABのControl System Toolkitの仕様を踏襲してる。
よって、流れはPythonの時と一緒で、
ss関数に各行列を渡して、システムオブジェクトを取得。
lsimに入力とシステムオブジェクトを渡してシミュレーション。
になる。

\(
\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}
\)

コード

using ControlSystems
using PyPlot

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

sys=ss(A,B,C,D);	# 状態空間モデル生成

t=range(0,10,length=10000); # 時間(横)軸
u=zeros(1,10000);	# 入力信号生成
u[5000:10000].=1.0;	# 5秒後に0から1へ
y,T,x=lsim(sys,u,t);	# step応答

plot(T',y');
plot(T',u', "--b");
grid();

こんな感じでPythonと同じ流れであり、
つまるところ、MATLAB Control System Toolboxと同じ流れになる。

シミュレーション結果

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

まとめ

  • Juliaで状態空間モデルをシミュレーション。
    • Pythonと同じくMATLAB Control System Toolboxの仕様を踏襲したControlSystemsパッケージを使用。
      • 結局はMATLAB Control System Toolboxの仕様がデファクトスタンダード感がある。

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

コメント

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