| 查看: 940 | 回复: 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); >> |
» 猜你喜欢
萌生出自己或许不适合搞科研的想法,现在跑or等等看?
已经有4人回复
Materials Today Chemistry审稿周期
已经有4人回复
参与限项
已经有3人回复
假如你的研究生提出不合理要求
已经有7人回复
实验室接单子
已经有4人回复
全日制(定向)博士
已经有4人回复
对氯苯硼酸纯化
已经有3人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有12人回复
所感
已经有4人回复
要不要辞职读博?
已经有7人回复
【答案】应助回帖
★ ★
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












回复此楼