0
私は正しくMatlabに微分方程式を入力しようとしているので、ode45でそれらを解くことができますが、私のコードは動作しません。 MATLABは、次のエラーメッセージを返す保つODE 45で6つの微分方程式を解く方法は?
function ydot=Untitledrt(z,y)
ydot = zeros(6,1);
%y(1)=A
%y(2)=B
%y(3)=C
%y(4)=D
%y(5)=P
%y(6)=T
m1 = 6;
m2 = 9;
m3 = 5;
k1 = 6;
k2 = 7;
k3 = 4;
k4 = 1;
c1 = 1;
c2 = 0.2;
c3 = 0.1;
c4 = 2;
F1 = 3;
F2 = 9;
F3 = 12;
ydot(1)=y(2)
ydot(2)=((-((k1+k2)./m1)).*y(1))-(((c1+c2)./m1).*y(2))+((k2./m1).*y(3))+ ((c2./m1).*y(4))+(F1./m1)
ydot(3)=y(4)
ydot(4)=((k2./m2).*y(1))+((c2./m2).*y(2))-(((k2+k3)./m2).*y(3))-(((c2+c3).*m2).*y(4))+((k3/m2).*y(5))+((c3./m2).*y(6))+(F2./m2)
ydot(5)=y(6)
ydot(6)=((k2./m3).*y(3))+((c3./m3).*y(4))-(((k3+k4)./m3).*y(5))-(((c3+c4)./m3).*y(6))+(F3./m3)
:これは私が入力したコードである
Not enough input arguments.
Error in Untitledrt (line 24)
ydot(1)=y(2)
と私はYの条件のいずれかを定義していないので、これが起こっている知っています。しかし、私が見た他のすべてのコードは、これらの用語を定義していません。私が紛失しているものや、これらの用語を定義せずにコードを動作させる方法はありますか?私を助けてください!前もって感謝します。
に貼り付け?あなたの関数 'y'はベクトルでなければなりません –
ここで' z'はあなたが使用していないODEの 't'です(システムが自律的であることを意味します)。この場合には、関数ydot = Untitledrt(〜、y)と置き換えることができるはずです。多くの場合、MATLABは呼び出し時にその変数をインスタンス化しないことでコードの認識を加速します。ここでは問題ではないかもしれませんが、開発するのは良い習慣です。 –