1

状態空間システムを解くために MATLAB を使用する方法を独学しようとしています。非常に単純なシステムのように見えますが、これまで初心者向けのまともな単純な例を見つけることができませんでした。

システムを MATLAB に変換する方法、設定する変数、および約 50(?) 秒間 (t=0 から 50 または実際には任意の値) を解決する方法の簡単なウォークスルーが必要です。

ode45 はルンゲ クッタ バリアントを使用した 4 次メソッドであるため、使用したいと思います。

2次方程式は次のとおりです。

θ''+0.03|θ'|θ'+4pi^2*sinθ=0

状態空間:

x_1'=x_2

x_2'=-4pi^2*sin(x_1)-0.03|x_2|x_2

x_1 = θ, x_2 = θ'

θ(0)=pi/9 rad, θ'(0)=0, h(step)=1
4

1 に答える 1

2

システムの現在の状態と現在の時刻を指定すると、すべての状態変数の導関数を返す導関数関数が必要です。通常、この関数は次の形式です。

function xDash=derivative(t,x)

xDash は各要素の導関数をx含むベクトルであり、状態変数のベクトルです。変数が などと呼ばれる場合x_1、などを入れるのx_2は良い考えです。次に、他の状態変数に関して各状態変数の導関数の式が必要です。たとえば、これを としてコーディングすることができます。うまくいけば、それは何かを解決します。x_1x(1)xDash_1=x_1-x_2xDash(1)=x(1)-x(2)

あなたの例では、微分関数は次のようになります

function xDash=derivative(t,x)
    xDash=zeros(2,1);
    xDash(1)=x(2);
    xDash(2)=-4*pi^2*sin(x(1))-0.03*abs(x(2))*x(2);
end

そして、あなたは次を使用してシステムを解決します

[T,X]=ode45(@derivative,0:50,[pi/9 0]);

これにより、で出力が得られますt=0,1,2,...,50

于 2013-11-12T03:03:09.753 に答える