0

我正在尝试使用dsolve命令在 Matlab 上求解一组微分方程。我有如下定义的三个方程,但不是数值系数,而是我有通用参数,如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

常微分方程系统

我认为你的微分方程系统缺少两个颂歌。我只是根据您的实际系统的猜测进行了一些更正。

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 + 两个代数方程

如果您打算求解一个 ode,然后将该解子代入两个代数方程,那么

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 回答