【求助】一个使用lsqnonlin求最小值的问题?
对于微分方程x'(t)=r*x-a*x*yy'(t)=-d*y+b*x*y
已知r,a b d和初值,要求x(t)的周期: !!!!帮忙看看那里错了?
首先编写函数:function f=fun(T)
r=1;
d=0.5;
a=0.1;
b=0.02;
x0=25;
y0=2;
tspan=0:0.01:15;
X0=[x0,y0];
[t,X]=ode45('shier',tspan,X0);
k=fix(T/0.01)
f=[X(k,1),X(k,2)]-X0
其中调用到了函数shier为:
function xdot=shier(t,x)
global r a b d x0 y0;
xdot=[(r-a*x(2))*x(1);(-d+b*x(1))*x(2)];
最后在主函数中运行:
%求周期
global r a b d x0 y0;
r=1;
d=0.5;
a=0.1;
b=0.02;
x0=25;
y0=2;
%opt=optimset('TolX',1e-20,'TolFun',1e-20);
[T,resnorm]=lsqnonlin(@fun,10);
disp(['周期是:',num2str(T)])
运行以后好像是函数fun出了问题,输出的T就直接是初时值。
高手帮忙看看啊?不胜感激!