matlab解非线性微分方程组

各位大神,小弟想求一个微分方程组的解析解,但是遇到了问题。
模型:x,y,z为变量
①dx/dt=ax
②dy/dt=(bQx-S-T)*(1-z/Zm)*y
③dz/dt=(cDx+P-M)*z+eyE

我的程序:
syms a b Q S T z Zm c A P M e E;
SS=dsolve('Dx=a*x','Dy=(b*Q*x-S-T)*y*(1-z/Zm)','Dz=(c*A*x+P-M)*z+e*E');

结果:没有求到解析解,小弟是新手,不知道这个方程组是真的木有解,还是我的方法不对或有其他方法,请大家指点一下。

人家问的就是解析解,不知道上边几个在说什么
你这个方程高版本的matlab可以解,只是算出来之后带积分项目:
syms a b Q S T z Zm c A P M e E
SS=dsolve('Dx=a*x','Dy=(b*Q*x-S-T)*y*(1-z/Zm)','Dz=(c*A*x+P-M)*z+e*E')

SS =

y: [1x1 sym]
x: [1x1 sym]
z: [1x1 sym]

>> SS.x

ans =

C5*exp(a*t)

>> SS.y

ans =

C9*exp(int((C7*exp((P*a*t - M*a*t + A*C5*c*exp(a*t))/a)*(S + T - C5*Q*b*exp(a*t)))/Zm + (exp((P*a*t - M*a*t + A*C5*c*exp(a*t))/a)*int(e*exp(M*t - P*t - (A*C5*c*exp(a*t))/a + 1), t, IgnoreAnalyticConstraints)*(S + T - C5*Q*b*exp(a*t)))/Zm, t, IgnoreAnalyticConstraints) - T*t - S*t + (C5*Q*b*exp(a*t))/a)

>> SS.z

ans =

C7*exp((P*a*t - M*a*t + A*C5*c*exp(a*t))/a) + exp((P*a*t - M*a*t + A*C5*c*exp(a*t))/a)*int(e*exp(M*t - P*t - (A*C5*c*exp(a*t))/a + 1), t, IgnoreAnalyticConstraints)

IgnoreAnalyticConstraints是忽略分析限制,这个一般来说是可以忽略的追问

不好意思哈,非常感谢你,那个我输入公式的时候有点问题,最后的e*E->e*y*E',能麻烦你再用matlab求解一下吗?谢谢啦,分肯定是你的了,灰常感谢。
syms a b Q S T z Zm c A P M e E
SS=dsolve('Dx=a*x','Dy=(b*Q*x-S-T)*y*(1-z/Zm)','Dz=(c*A*x+P-M)*z+e*y*E')

追答

第一组:{x(t) = _C2*exp(a*t)},
{y(t) = 0},
{z(t) = _C1*exp(Int(c*A*x(t)+P-M, t))}],
第二组:{x(t) = _C1*exp(a*t)},
{diff(y(t), t, t) = (2*e*y(t)^3*E*b*Q*x(t)*T-y(t)^2*Zm*b^2*Q^2*x(t)^3*c*A-2*y(t)^2*Zm*b*Q*x(t)*M*S+2*y(t)^2*Zm*b*Q*x(t)*P*T-2*y(t)^2*Zm*b*Q*x(t)*M*T+2*y(t)^2*Zm*b*Q*x(t)*P*S-2*y(t)^2*Zm*S*x(t)*c*A*T-y(t)*Zm*(diff(y(t), t))*b*Q*x(t)*M+y(t)*Zm*(diff(y(t), t))*b*Q*x(t)*P-y(t)*Zm*(diff(y(t), t))*x(t)*c*A*T-y(t)*Zm*(diff(y(t), t))*x(t)*c*A*S+Zm*(diff(y(t), t))*y(t)*b*Q*a*x(t)-e*y(t)^3*E*b^2*Q^2*x(t)^2+y(t)^2*Zm*b^2*Q^2*x(t)^2*M-y(t)^2*Zm*b^2*Q^2*x(t)^2*P-y(t)^2*Zm*S^2*x(t)*c*A-y(t)^2*Zm*T^2*x(t)*c*A-Zm*(diff(y(t), t))^2*S-Zm*(diff(y(t), t))^2*T+y(t)^2*Zm*S^2*M-y(t)^2*Zm*S^2*P-y(t)^2*Zm*T^2*P+y(t)^2*Zm*T^2*M-e*y(t)^3*E*S^2-e*y(t)^3*E*T^2+Zm*(diff(y(t), t))^2*b*Q*x(t)-2*e*y(t)^3*E*S*T+y(t)*Zm*(diff(y(t), t))*M*S-y(t)*Zm*(diff(y(t), t))*P*T+y(t)*Zm*(diff(y(t), t))*M*T-y(t)*Zm*(diff(y(t), t))*P*S-2*y(t)^2*Zm*S*P*T+2*y(t)^2*Zm*S*M*T+2*e*y(t)^3*E*b*Q*x(t)*S+y(t)*Zm*(diff(y(t), t))*b*Q*c*A*x(t)^2+2*y(t)^2*Zm*b*Q*x(t)^2*c*A*T+2*y(t)^2*Zm*b*Q*x(t)^2*c*A*S)/(y(t)*b*Q*x(t)*Zm-y(t)*S*Zm-y(t)*T*Zm)}
{z(t) = (-(diff(y(t), t))*Zm+y(t)*b*Q*x(t)*Zm-y(t)*S*Zm-y(t)*T*Zm)/(y(t)*b*Q*x(t)-y(t)*S-y(t)*T)}]
你如果把参数都给出来(而不是只告诉我那是一个常量字母),可以很方便的求数值解

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-15
上面的都说的很对,你的方程组不能使用dsolve来求解。你需要使用数值解法
但是数值解法中不能含有字符。所以你的a、b等参数都需要给定一个值然后使用ode45来求解

祝你学习愉快!
第2个回答  2011-11-15
不能用dsolve这个命令的,应该用ode45,或ode32,具体怎么做你可以help,或者百度
相似回答