matlab高手进——该微分方程怎么解?dN/dt=n*r*(1-N/M)dn/dt=n*s*(1-n/K)其中r,s,M,K为常数,能否求出 N=f(t)?如果把n视为常量呢?如何用matlab解?n(t)是已知的,为观测到的数据,但可以用Logistic方程描述。我想把另一组观测到的数据与N=f(t)相拟合,可行不?有没有什么办法?

问题描述:

matlab高手进——该微分方程怎么解?
dN/dt=n*r*(1-N/M)
dn/dt=n*s*(1-n/K)
其中r,s,M,K为常数,能否求出 N=f(t)?
如果把n视为常量呢?如何用matlab解?
n(t)是已知的,为观测到的数据,但可以用Logistic方程描述。
我想把另一组观测到的数据与N=f(t)相拟合,可行不?有没有什么办法?

不能!!
原因:这是一个锁死类方程。。
如果 n 也是 t 的函数,那么这个方程是无解的,有解请告诉我。
如果 n 和 t 没有关系,那么返程等价为两个ODE,分别使用ode方法就能够解出来了。。
matlab中间使用的解ode的方法有很多,比如说ode45,ode23,等等,你在matlab程序的CW里面键入 help ode45,就可以看到具体怎么使用了。。

调用maple
>> maple('dsolve','{diff(N(t),t)=n(t)*r*(1-N(t)/M),diff(n(t),t)=n(t)*s*(1-n(t)/K)}')
ans =
[{n(t) = K/(1+exp(-s*t)*_C2*K)},{N(t) = (exp(r/M*Int(n(t),t))*M+_C1)*exp(Int(-n(t)*r/M,t))}]
可以验证n(t)
>> n=dsolve('Dn=n*s*(1-n/K)')
n =
K/(1+exp(-s*t)*C1*K)
只要给出参数的具体数值和初始条件,有解.