0

Matlabでコマンドを使用しdsolveて一連の ODE を解こうとしましたが、次のエラーが発生します。

dsolve>mupadDsolve のエラー (332 行目) T = feval(symengine,'symobj::dsolve',sys,x,options);

dsolve のエラー (193 行目) sol = mupadDsolve(args, options);

以下は、誰かがそれを見たい場合のコードです。

syms t b1 b2 k1 k2;
A=0.5;
m1=3;m2=4;w=6;
y=A*sin(w*t);
xt=dsolve('m1*D2x1+b1*((Dx1)-Dy)+k1*(x1-y)+b2*((Dx1)-(Dx2))+k2*(x1-x2)=0','m2*D2x2+b2*((Dx2)-(Dx1))+k2*(x2-   x1)=0','x1(0)=0','Dx1(0)=0','x2(0)=0','Dx2(0)=0');

誰かがそれを手伝ってくれませんか?

どうもありがとうございました

4

1 に答える 1

0

dsolveドキュメントからの引用:

微分方程式で使用されるシンボリック変数の名前には、文字を含めないでください。これは、 が微分演算子であり、直後の文字が従属変数であると仮定するDためです。dsolveDD

そのため、Dy引数文字列の は、解決するdsolve未知の関数があることyを示していますが、初期条件はありません (不定システムであることに加えて)。

yこの問題を解決するには、導関数を外側で定義し、dsolveそれを変数に代入しますD

syms t b1 b2 k1 k2;
A=0.5;
m1=3;m2=4;w=6;
y=A*sin(w*t);
dydt = diff(y,1);
xt=dsolve('m1*D2x1+b1*((Dx1)-dydt)+k1*(x1-y)+b2*((Dx1)-(Dx2))+k2*(x1-x2)=0','m2*D2x2+b2*((Dx2)-(Dx1))+k2*(x2-x1)=0','x1(0)=0','Dx1(0)=0','x2(0)=0','Dx2(0)=0');

このバージョンのコードは私のために実行されます...そして実行され、実行されます。実行中は、回答を生成するためにさらに定数を定義する必要があると思います。

于 2016-04-04T23:03:14.697 に答える