0

コマンドを使用して、Matlab で一連の微分方程式を解こうとしていdsolveます。以下に定義する 3 つの方程式がありますが、数値係数の代わりにlambda1lambda2、 などの一般的なパラメーターがあり、これらのパラメーターに関して結果を取得したいと考えています。コードは以下のとおりです。

    syms p0(s) p1(s) p2(s) lambda1 lambda2 mu1 mu2;
    eqn1=diff(p0)-1==-lambda1*p0-lambda2*p0+mu1*lambda2*p0/(s+mu2)+mu2*lambda1*p0/(s+mu1);
    eqn2=s*p1==lambda1*p0-mu2*p1;
    eqn3=s*p2==lambda2*p0(s) - mu1*p2(s);
    S = dsolve(eqn1, eqn2, eqn3)

次のエラーが表示されます。

Cannot reduce to the square system because the number of equations
differs from the number of indeterminates.

パラメータで何かをしなければならないと思います。私は何をすべきか?

4

1 に答える 1

0

ODE のシステム

あなたの微分方程式系には 2 つの頌歌が欠けていると思います。あなたの実際のシステムに当てはめて、いくつかの修正を加えました。

syms p0(s) p1(s) p2(s) lambda1 lambda2 mu1 mu2;

eqn1=diff(p0,s)-1==-lambda1*p0-lambda2*p0+mu1*lambda2*p0/(s+mu2)+mu2*lambda1*p0/(s+mu1)
eqn2=s*diff(p1,s)==lambda1*p0-mu2*p1;
eqn3=s*diff(p2,s)==lambda2*p0 - mu1*p2

現在dsolve、上記のシステムの解決策を見つけるために使用しています

 S = dsolve(eqn1, eqn2, eqn3)

ソリューションにアクセスするには、次のようなことができます

solpo(s) = S.p0 
solp1(s) = S.p1 
solp2(s) = S.p2

または、出力を従属変数に割り当てることもできます

[poSol(s) p1Sol(s) p2Sol(s)] = dsolve(eqn1, eqn2, eqn3)

これはあなたが探していたものですか?

ODE + 2 つの代数方程式

頌歌を解き、その解を 2 つの代数方程式に代入することを計画している場合、

syms p0(s) p1(s) p2(s) lambda1 lambda2 mu1 mu2;
eqn1=diff(p0,s)-1==-lambda1*p0 lambda2*p0+mu1*lambda2*p0/(s+mu2)+mu2*lambda1*p0/(s+mu1);
[p0(s)] = dsolve(eqn1)
eqn2=subs(s*p1==lambda1*p0(s)-mu2*p1(s))
eqn3=subs(s*p2(s)==lambda2*p0(s) - mu1*p2(s))
于 2016-12-01T08:53:36.203 に答える