| 查看: 991 | 回复: 1 | ||
[求助]
求助matlab 微分方程组参数估计程序修改!!!!!! 已有1人参与
|
|
本人对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); >> |
» 猜你喜欢
生命口C13面上会评时间
已经有11人回复
内心匮乏
已经有16人回复
生命口面上会评结束了吗大家有知道结果吗?现在还没有结果正常不?
已经有9人回复
投英文期刊如何查重
已经有6人回复
不要再数国自然申请书的 filecode 的分隔符个数了
已经有21人回复
伯胺上甲基求助
已经有7人回复
跨出版社商投稿
已经有5人回复
5个%2F,非固定段22个字母
已经有7人回复
生生命学部会评
已经有4人回复
H口,面上,时间戳7月7日。
已经有3人回复
【答案】应助回帖
★ ★
jjdg: 金币+2, 感谢参与 2017-10-22 22:36:56
jjdg: 金币+2, 感谢参与 2017-10-22 22:36:56
|
给出的代码问题实在太多了。可以这样修改成这样即可。 function ode45_main38( ) %http://muchong.com/t-11733981-1 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); [par1,fval]=fmincon(@LSmin,par1guess,[],[],[],[],lb,ub,[],options,X0,ID); [T1,X1]=ode45(@SImodel,[0:1:14],X0,[],par1); beta=par1(1),gamma=par1(2) figure(1) plot(T1,X1(:,1),'k-'); hold on plot(T1,X1(:,2),'KO'); end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%LSmin函数(,文件名: LSmin.m) function d=LSmin(par1,X0,ID) [T1,x]=ode45(@SImodel,[0:1:14],X0,[],par1); d=norm(x(:,2)-ID)^.2; end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%模型方程组(文件名:SImodel .m) function dy=SImodel(t,y,par1) dy=zeros(2,1); beta=par1(1);gamma=par1(2); dy=[-beta*y(1)*y(2);beta*y(1)*y(2)-gamma*y(2)]; end https://pan.baidu.com/s/1gfoyWJx |

2楼2017-10-21 14:49:57











回复此楼