| 查看: 2794 | 回复: 7 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
ronghengyidu木虫 (小有名气)
|
[求助]
matlab拟合反应动力学参数 已有1人参与
|
||
|
本人是matlab大白,最近仿照黄华江编著的“实用化工计算机模拟”例题7-5拟合动力学参数, 动力学方程为dc1/dt=k1*c1/(k2+k3*c1+k4*c2+k5*c1*c2),拟合k1,k2,k3,k4,k5, matlab程序和动力学数据见附件,运行出现如下错误,请各位大拿帮助。 Error: File: KineticsEst.m Line: 47 Column: 60 Unbalanced or unexpected parenthesis or bracket. Error in run (line 64) evalin('caller', [script ';']); Error: File: KineticsEst.m Line: 47 Column: 60 Unbalanced or unexpected parenthesis or bracket. Error in run (line 64) evalin('caller', [script ';']); |
» 本帖附件资源列表
-
欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com - 附件 1 : KineticsEst.m
- 附件 2 : KineticsData.m
2016-10-03 16:39:52, 1.98 K
2016-10-03 16:40:16, 365 bytes
» 收录本帖的淘帖专辑推荐
程序 |
» 猜你喜欢
【复旦大学】二维材料方向招收2026年博士研究生1名
已经有0人回复
北京纳米能源与系统研究所 王中林院士/曹南颖研究员课题组2026级硕/博/博后招生
已经有10人回复
物理学I论文润色/翻译怎么收费?
已经有255人回复
荷兰Utrecht University超快太赫兹光谱王海教授课题招收2026 CSC博士生
已经有23人回复
反铁磁体中的磁性切换:两种不同的机制已成功可视化
已经有0人回复
求标准粉末衍射卡号 ICDD 01-076-1802
已经有0人回复
新西兰Robinson研究所招收全奖PhD
已经有0人回复
石墨烯转移--二氧化硅衬底石墨烯
已经有0人回复
» 本主题相关价值贴推荐,对您同样有帮助:
matlab拟合反应速率常数
已经有5人回复
向大神求教一个用matlab拟合动力学参数的问题,求指导
已经有5人回复
给我大神求教一个用matlab拟合动力学参数的问题,求指导
已经有0人回复
Matlab拟合动力学参数问题,求指导!
已经有9人回复
关于动力学参数拟合的matlab程序的一些问题(懂动力学拟合的大神进)
已经有1人回复
Matlab拟合反应动力学参数结果偏差很大啊,求大神指点程序当如何修改
已经有2人回复
用遗传算法和模拟退火来进行动力学参数的拟合
已经有1人回复
matlab 非线性拟合 数据拟合
已经有3人回复
用Matlab求反应动力学参数
已经有0人回复
求助MATLAB回归动力学拟合PH模型LHHw模型反应级数和反应速率常数 活化能 指前因子程序
已经有1人回复
[诚心求问!]利用matlab做动力学参数估计时遇到问题,求高手赐教!
已经有1人回复
使用matlab最优化方法拟合获得多个动力学参数中的问题
已经有4人回复
求助1stopt拟合动力学参数
已经有4人回复
Matlab动力学拟合问题!求助!!!!
已经有0人回复
matlab 拟合反应动力学参数
已经有8人回复
matlab拟合酶促反应机制
已经有7人回复
想请问大家关于动力学方程(根据基元反应推到动力学方程)的问题
已经有3人回复
如何拟合得到动力学模型参数??
已经有3人回复
matlab 拟合反应动力学参数结果很差。大家帮忙看一下
已经有14人回复
【求助】使用Matlab拟合反应动力学方程问题
已经有7人回复
【求助】使用Matlab预估动力学方程问题
已经有13人回复
ronghengyidu
木虫 (小有名气)
- 应助: 0 (幼儿园)
- 金币: 2854.5
- 帖子: 218
- 在线: 62.2小时
- 虫号: 1003427
- 注册: 2010-04-22
- 专业: 生物化工与食品化工
送红花一朵 |
非常感谢您的回复,我只有一个微分方程,dc1/dt=k1*c1/(k2++k3*c1+k4*c2+k5*c1*c2), 拟合5个参数k1,k2,k3,k4,k5。我的t,c1,c2数据在附件中,matlab程序也在附件中,这两个文件都可以用记事本打开。在这里我把程序和实验数据再贴出来。 function KineticsEst % 动力学ODE方程模型的参数估计 clear all clc k0 = [0.5 0.5 0.5 0.5 0.5]; % 参数初值 lb = [0 0 0 0 0]; % 参数下限 ub = [+inf +inf +inf +inf +inf]; % 参数上限 x0 = [150 1500]; KineticsData; yexp = ExpData(:,2:3); % yexp: 实验数据[x1 x2] % 使用函数fmincon()进行参数估计 [k,fval,flag] = fmincon(@ObjFunc4Fmincon,k0,[],[],[],[],lb,ub,[],[],yexp); fprintf('\n使用函数fmincon()估计得到的参数值为:\n') fprintf('\tk1 = %.4f\n',k(1)) fprintf('\tk2 = %.4f\n',k(2)) fprintf('\tk3 = %.4f\n',k(3)) fprintf('\tk4 = %.4f\n',k(4)) fprintf('\tk5 = %.4f\n',k(5)) fprintf(' The sum of the squares is: %.1e\n\n',fval) k_fmincon = k; % 使用函数lsqnonlin()进行参数估计 [k,resnorm,residual,exitflag,output,lambda,jacobian] = ... lsqnonlin(@ObjFunc4LNL,k0,lb,ub,[],x0,yexp); ci = nlparci(k,residual,jacobian); fprintf('\n\n使用函数lsqnonlin()估计得到的参数值为:\n') Output % 以函数fmincon()估计得到的结果为初值,使用函数lsqnonlin()进行参数估计 k0 = k_fmincon; [k,resnorm,residual,exitflag,output,lambda,jacobian] = ... lsqnonlin(@ObjFunc4LNL,k0,lb,ub,[],x0,yexp); ci = nlparci(k,residual,jacobian); fprintf('\n\n以fmincon()的结果为初值,使用函数lsqnonlin()估计得到的参数值为:\n') Output % ------------------------------------------------------------------ function f = ObjFunc4Fmincon(k,x0,yexp) tspan = ExpData(:,1); [t x] = ode45(@KineticEqs,tspan,x0,[],k); y(:,1:2) = x(:,1:2); f = sum((y(:,1)-yexp(:,1)).^2) + sum((y(:,2)-yexp(:,2)).^2)); % ------------------------------------------------------------------ function f = ObjFunc4LNL(k,x0,yexp) tspan = = ExpData(:,1); [t x] = ode45(@KineticEqs,tspan,x0,[],k); y(:,1:2) = x(:,1:2); f1 = y(:,1) - yexp(:,1); f2 = y(:,2) - yexp(:,2); f = [f1; f2]; % ------------------------------------------------------------------ function dxdt = KineticEqs(t,x,k) dxdt = ... k(1)*x(1)./(k(2)+k(3)*x(1)+k(4)*x(2)+k(5)*x(1).*x(2)); 实验数据如下: 动力学数据: t c1 c2 0 150 1500 10 137.3 1487.3 30 107.7 1457.7 60 72.8 1422.8 90 48.8 1398.8 120 22.9 1372.9 150 11.8 1361.8 180 5.4 1355.4 220 1.9 1351.9 240 0.9 1350.9 期望楼上能够指点,如果您能够给出openLU程序,我也非常感谢,因为我第一次听说这个程序,怕仿照编程又要出错。非常感谢您在节假日能够回答我的问题。 |
3楼2016-10-04 05:01:01
【答案】应助回帖
★ ★
感谢参与,应助指数 +1
月只蓝: 金币+2, 感谢应助! 2016-10-04 21:59:50
感谢参与,应助指数 +1
月只蓝: 金币+2, 感谢应助! 2016-10-04 21:59:50
|
楼主的问题,没有看明白,找到了 黄华江编著的“实用化工计算机模拟”例题7-5拟合动力学参数 7个微分方程,5个拟合参数k1,k2,k3,k4,k5,初值t=0时,x为0.1883, 0.2507, 0.0467, 0.0899, 0.1804, 0.1394, 0.1046 q = 8.75 + k5, dx1/t= k5-q*x1- k1*x1*x2-k4*x1*x6*sqrt(0.9), dx2/t= 7.0-q*x2 - k1*x1*x2-2*k2*x2*x3, dx3/t= 1.75 -q*x3 - k2*x2*x3, dx4/t= -q*x4 + 2*k1*x1*x2-k3*x4*x5, dx5/t= -q*x5 + 3*k2*x2*x3-k3*x4*x5, dx6/t= -q*x6 + 2*k3*x4*x5-k4*x1*x6*sqrt(0.9), dx7/t= -q*x7 + 2*k4*x1*x6*sqrt(0.9) 数据:t,x1,x4,x5,x6 0 0.1883 0.0899 0.1804 0.1394 0.0100 0.2047 0.0866 0.1729 0.1297 0.0200 0.2181 0.0856 0.1680 0.1205 0.0300 0.2291 0.0863 0.1647 0.1123 0.0400 0.2382 0.0878 0.1623 0.1053 0.0500 0.2459 0.0899 0.1604 0.0995 0.0600 0.2523 0.0921 0.1588 0.0948 0.0700 0.2576 0.0945 0.1574 0.0911 0.0800 0.2622 0.0968 0.1561 0.0882 0.0900 0.2660 0.0989 0.1548 0.0859 0.1000 0.2692 0.1010 0.1537 0.0842 0.1100 0.2719 0.1028 0.1525 0.0830 0.1200 0.2742 0.1045 0.1515 0.0821 0.1300 0.2761 0.1060 0.1505 0.0814 0.1400 0.2777 0.1074 0.1495 0.0810 0.1500 0.2790 0.1086 0.1487 0.0807 0.1600 0.2801 0.1096 0.1479 0.0805 0.1700 0.2811 0.1106 0.1471 0.0803 0.1800 0.2819 0.1114 0.1465 0.0803 0.1900 0.2825 0.1121 0.1458 0.0803 0.2000 0.2830 0.1127 0.1453 0.0803 用OpenLu求解: 结果(k1,k2,k3,k4,k5,目标函数值): 17.60849027475542 73.06467445464085 51.32551162517818 23.02494410245102 6.001239504989786 6.794401934343191e-008 优于原书matlab结果: 17.49, 72.2996, 50.9086, 22.5339, 5.9799, 3.614535245714516e-007 |
» 本帖已获得的红花(最新10朵)
2楼2016-10-03 21:21:39
4楼2016-10-04 08:37:24
ronghengyidu
木虫 (小有名气)
- 应助: 0 (幼儿园)
- 金币: 2854.5
- 帖子: 218
- 在线: 62.2小时
- 虫号: 1003427
- 注册: 2010-04-22
- 专业: 生物化工与食品化工
5楼2016-10-04 19:30:02













回复此楼