本人对MATLAB程序不熟,最近看到一本书上一个关于常微分方程组参数估计的MATLAB程序(就两个参数)但是我编写到MATLAB运行总是不对,我很怀疑作者是不是出错了,所以希望大神指点迷津,下面我贴出程序和运行诊断!
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%主程序,文件名:untitled
ID=[1 3 7 25 72 222 282 256 233 189 123 70 25 11 4];
X0=[762 1];
lb=[0 0 ];
ub=[0.1 1];
par1guess=[0.01 0.1];
options=optimset('Display','final','MaxIter',2000,'MaxFunEval',2000);
[p,fval]=fminon(LSmin,par1guess,[],[],[],[],lb,ub,[],options,ID,X0);
[T1,X1]=ode45(SImodel,[0 14],X0,[],par1);
figure(1)
plot(T1,X1(:,1),'k-');
hold on
plot(T1,X1(:,2),'K-',0:14,'KO');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%LSmin函数(,文件名: LSmin.m)
function d=LSmin(par1,ID,X0)
[T,x]=ode45(SImodel,[0:1:14],X0,[],par1);
d=norm(x(:,2)'-ID)^.2;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%模型方程组(文件名:SImodel .m)
function dy=SImodel(t,y,par1)
dy=zeros(2,1);
beta=par1(1);gamma=par1(2);
dy=[-beta*y(1)*y(2);bata*y(1)*y(2)-gamma*y(2)];
下面是运行之后的错误提示!
>> untitled
输入参数的数目不足。
出错 SImodel (line 3)
beta=par1(1);gamma=par1(2);
出错 LSmin (line 2)
[T,x]=ode45(SImodel,[0:1:14],X0,[],par1);
出错 untitled (line 7)
[p,fval]=fminon(LSmin,par1guess,[],[],[],[],lb,ub,[],options,ID,X0);
>>