我正在尝试使用dsolve
命令在Matlab上求解一组微分方程。我有三个如下定义的方程,但我没有数字系数,而是有lambda1
,lambda2
等通用参数,我想根据这些参数得到结果。代码如下:
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.
我相信它必须对参数做些什么。我该怎么办?
答案 0 :(得分:0)
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)
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 +两个代数方程式
如果您打算解决一个颂歌,然后将该解决方案分配给两个代数方程,那么
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))