| 查看: 952 | 回复: 5 | ||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | ||
[求助]
Matlab 动力学方程拟合的很差,郁闷,大侠们帮助一下。先谢了
|
||
| 我把程序和拟合的结果放在文件了。新手求助 |
» 本帖附件资源列表
-
欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com - 附件 1 : 求助.pdf
2013-06-13 20:20:42, 143.12 K
» 猜你喜欢
全日制(定向)博士
已经有5人回复
假如你的研究生提出不合理要求
已经有10人回复
萌生出自己或许不适合搞科研的想法,现在跑or等等看?
已经有4人回复
Materials Today Chemistry审稿周期
已经有4人回复
参与限项
已经有3人回复
实验室接单子
已经有4人回复
对氯苯硼酸纯化
已经有3人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有12人回复
所感
已经有4人回复
要不要辞职读博?
已经有7人回复
» 本主题相关价值贴推荐,对您同样有帮助:
matlab 拟合反应动力学参数结果很差。大家帮忙看一下
已经有14人回复
为啥我的一级动力学方程拟合出来的数据R是负数呢?
已经有16人回复
matlab 求指点 动力学方程拟合过程中导数的获取
已经有10人回复
【原创】一级动力学方程拟合求助
已经有8人回复
【求助】使用Matlab拟合反应动力学方程问题
已经有7人回复
4楼2013-06-14 18:52:06
|
程序是这样的 function myparafit clear all clc warning off close all k0 = [0.0000000005 0.0000000005 0.0000000005]; % initial value lb = [0 0 0 0]; % ???? ub = [1 1 1 1]; % ???? x0 = [100 0 0 0 25]; yexp=[0 100 0 0 0 20 74.1 5 3.1 17.8 40 41.4 5 12.3 41.3 60 7.2 7.5 20.9 64.4 90 2.9 15 20.4 62]; % [k,fval,flag] = fmincon(@ObjFunc7Fmincon,k0,[],[],[],[],lb,ub,[],[],x0,yexp); k_fm= k; [k,resnorm,residual,exitflag,output,lambda,jacobian] = ... lsqnonlin(@ObjFunc7LNL,k0,lb,ub,[],x0,yexp); ci = nlparci(k,residual,jacobian); k_ls = k; k0 = k_fm; [k,resnorm,residual,exitflag,output,lambda,jacobian] = ... lsqnonlin(@ObjFunc7LNL,k0,lb,ub,[],x0,yexp); ci = nlparci(k,residual,jacobian); k_fmls = k; tspan=[0 20 40 60 90]; [t x] = ode45(@KineticEqs,tspan,x0,[],k_fmls); figure; plot(t,x(:,1),'*-',t,yexp(:,2),'o-'); figure; plot(t,x(:,2:4),'*-'); hold on plot(t,yexp(:,3:5),'o:'); figure hold on k_fmls; % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function f = ObjFunc7Fmincon(k,x0,yexp) tspan=[0 20 40 60 90]; [t x] = ode45(@KineticEqs,tspan,x0,[],k); y(:,2:5) = x(:,1:4); f =sum((y(:,2)-yexp(:,1)).^2)+sum((y(:,3)-yexp(:,2)).^2)+sum((y(:,4)-yexp(:,3)).^2)+sum((y(:,5)-yexp(:,4)).^2); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function f = ObjFunc7LNL(k,x0,yexp) tspan=[0 20 40 60 90]; [t x] = ode45(@KineticEqs,tspan,x0,[],k); y(:,2) = x(:,1); y(:,3) = x(:,2); y(:,4) = x(:,3); y(:,5) = x(:,4); f1 = y(:,2) - yexp(:,2); f2 = y(:,3) - yexp(:,3); f3 = y(:,4) - yexp(:,4); f4 = y(:,5) - yexp(:,5); f = [f1; f2; f3; f4]; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function dxdt = KineticEqs(t,x,k) % global Alpha k_d W=25; m0=100; k_d=0.01; P=x(1); G=x(2); L=x(3); W=x(4); Alpha=x(5); dxdt1=-(k(1)+k(2)+k(3))*P.*Alpha; dxdt2=k(1)*P.*Alpha; dxdt3=k(2)*P.*Alpha; dxdt4=k(3)*P.*Alpha; dxdt5=-k_d*exp(-k_d*x(3)*(100/25)); dxdt=[dxdt1;dxdt2;dxdt3;dxdt4;dxdt5]; |
2楼2013-06-13 23:17:57
3楼2013-06-14 16:11:20
5楼2013-06-14 19:28:10












回复此楼
