| 查看: 3643 | 回复: 17 | |||
| 本帖产生 1 个 数学EPI ,点击这里进行查看 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
wodaifei银虫 (小有名气)
|
[交流]
【求助】用matlab最优化方法进行参数拟合已有7人参与
|
||
|
各位学哥、学姐,大侠们!! 小弟最近遇到一个难题:具体为 dyA/dt=-(k1+k2+k3+k4)yA dyB/dt=k1yA-(k5+k6+k7)yB dyC/dt=k2yA+k5yB-(k8+k9)yC dyD/dt=k3yA+k6yB+k8yC dyE/dt=k4yA+k7yB+k9yC 其中y为各组分的质量分率; k为反应速率常数 其中实验数据为:反应时间 A B C D E 0.833 0.0632 0.699 0.187 0.0256 0.0220 1.25 0.055 0.722 0.199 0.0305 0.0281 2.5 0.0502 0.769 0.201 0.0328 0.031 根据实验数据希望能用最优化法回归出其中的九个参数(最好能用matlab),小弟刚接触这方面的知识,遇到了困难,怎么也估计不出来,希望各位学哥、学姐,大侠们能给小弟指点一下!!跪谢!!!不胜感激!!!!!1真的把小弟难住了。。 |
» 本帖已获得的红花(最新10朵)
» 猜你喜欢
2025冷门绝学什么时候出结果
已经有3人回复
天津工业大学郑柳春团队欢迎化学化工、高分子化学或有机合成方向的博士生和硕士生加入
已经有4人回复
康复大学泰山学者周祺惠团队招收博士研究生
已经有6人回复
AI论文写作工具:是科研加速器还是学术作弊器?
已经有3人回复
孩子确诊有中度注意力缺陷
已经有6人回复
2026博士申请-功能高分子,水凝胶方向
已经有6人回复
论文投稿,期刊推荐
已经有4人回复
硕士和导师闹得不愉快
已经有13人回复
请问2026国家基金面上项目会启动申2停1吗
已经有5人回复
同一篇文章,用不同账号投稿对编辑决定是否送审有没有影响?
已经有3人回复
» 本主题相关价值贴推荐,对您同样有帮助:
求回归方程参数的最优化算法matlab代码
已经有17人回复
在进行多元非线性拟合的时候,用matlab拟合的值残差都大于0
已经有14人回复
求助用matlab拟合动力学方程
已经有9人回复
求助用matlab拟合动力学方程
已经有13人回复
matlab 拟合方法
已经有4人回复
动力学拟合求助
已经有4人回复
matlab 拟合求助
已经有8人回复
求助,matlab/ 1stOpt 自定义微分方程拟合实验数据来求方程中的参数
已经有9人回复
求助matlab拟合多维方程
已经有4人回复
优化 matlab编程
已经有4人回复
求大侠帮助跑一下1stopt
已经有12人回复
原创:用MATLAB做的GUI做数据拟合,通过全局优化算法 (含原文件,code,教程)
已经有55人回复
用MATLAB怎么打开点云并把它拟合到一个平面上?
已经有8人回复
化学化工的数学方法及matlab实现
已经有253人回复
请教matlab反应动力学参数估计遇到的问题,谢谢
已经有15人回复
求粒子群优化算法进行变量优选的matlab程序
已经有20人回复
matlab参数拟合
已经有6人回复
matlab拟合方程参数时初值的选择
已经有15人回复
最优化计算求助!(1stopt或者Matlab)
已经有16人回复
探讨一下关于接力式优化和全局最优化的异同
已经有3人回复
最复杂情况下的参数优化
已经有11人回复
【求助】matlab 二次规划的优化的问题
已经有4人回复
【原创】多项式和非多项式曲线拟合的MATLAB实现视频教程
已经有10人回复


4楼2011-03-21 15:48:53
★ ★ ★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
nono2009(金币+5, 数学EPI+1): 鼓励详细应助 2011-03-22 07:48:24
小木虫(金币+0.5):给个红包,谢谢回帖交流
nono2009(金币+5, 数学EPI+1): 鼓励详细应助 2011-03-22 07:48:24
|
% 哦,你的题目是这个啊, % 这只能依靠数值解,matlab肯定没有现成的程序吧。 % % 你这样做吧。构造一个能量函数(其实就是最小二乘法啦) % % F = (yA(t2)- YYA(t2,k1,k2,k3...,k9) ) ^ 2 % ..嗯,算我直接编给你吧。 % % dyA/dt=-(k1+k2+k3+k4)yA % dyB/dt=k1yA-(k5+k6+k7)yB % dyC/dt=k2yA+k5yB-(k8+k9)yC % dyD/dt=k3yA+k6yB+k8yC % dyE/dt=k4yA+k7yB+k9yC % A B C D E % 0.833 0.0632 0.699 0.187 0.0256 0.0220 % 1.25 0.055 0.722 0.199 0.0305 0.0281 % 2.5 0.0502 0.769 0.201 0.0328 0.031 clear all kk0(1:9)=[1.2,0.9,0.8, 1.3,0.6,1.6, 1.7,1.1,1.0]; t1= 1.25 - 0.833; t2=2.5 -0.833; y0 = [0.0632 0.699 0.187 0.0256 0.0220]'; y1 = [ 0.055 0.722 0.199 0.0305 0.0281]'; y2 = [ 0.0502 0.769 0.201 0.0328 0.031]'; dk = 0.0001; dt = 0.1 kk=kk0 for i=1:100000 %%% 计算 dF/dk for j=1:9 %% 计算k+dk k=kk;k(j)=k(j)+dk; A = [ -(k(1)+k(2)+k(3)+k(4)) 0 0 k(1) -(k(5)+k(6)+k(7)) 0 k(2) k(5) -(k(8)+k(9)) ]; [V,D]=eig(A); DD(1,1)=D(1,1); DD(2,1) = D(2,2); DD(3,1) = D(3,3); DD =DD; VD=V^-1; Z0 = VD*y0(1:3); %%% z = z0*exp( DD(i)*t) Z1 = Z0 .*exp(DD*t1); Y1 = V *Z1; Int_Z1 = Z1./DD-Z0./DD; %int (Z1) = Z1/DD+C Y1(4) = k(3)*sum(V(1,1:3)*Int_Z1)+k(6)*sum(V(2,1:3)*Int_Z1) + k(8)*sum(V(3,1:3)*Int_Z1) + y0(4); Y1(5) = k(4)*sum(V(1,1:3)*Int_Z1)+k(7)*sum(V(2,1:3)*Int_Z1) + k(9)*sum(V(3,1:3)*Int_Z1) + y0(4); Z2 = Z0 .*exp(DD*t2); Y2 = V *Z2; Int_Z2 = Z2./DD-Z0./DD; %int (Z1) = Z1/DD+C Y2(4) = k(3)*sum(V(1,1:3)*Int_Z2)+k(6)*sum(V(2,1:3)*Int_Z2) + k(8)*sum(V(3,1:3)*Int_Z2) + y0(4); Y2(5) = k(4)*sum(V(1,1:3)*Int_Z2)+k(7)*sum(V(2,1:3)*Int_Z2) + k(9)*sum(V(3,1:3)*Int_Z2) + y0(4); F_up = ((Y2-y2)'*(Y2-y2) + (Y1-y1)'*(Y1-y1)) /2; %% 计算k=k-dk k=kk;k(j)=k(j)-dk; A = [ -(k(1)+k(2)+k(3)+k(4)) 0 0 k(1) -(k(5)+k(6)+k(7)) 0 k(2) k(5) -(k(8)+k(9)) ]; [V,D]=eig(A); DD(1,1)=D(1,1); DD(2,1) = D(2,2); DD(3,1) = D(3,3); DD =DD; VD=V^-1; Z0 = VD*y0(1:3); %%% z = z0*exp( DD(i)*t) Z1 = Z0 .*exp(DD*t1); Y1 = V *Z1; Int_Z1 = Z1./DD-Z0./DD; %int (Z1) = Z1/DD+C Y1(4) = k(3)*sum(V(1,1:3)*Int_Z1)+k(6)*sum(V(2,1:3)*Int_Z1) + k(8)*sum(V(3,1:3)*Int_Z1) + y0(4); Y1(5) = k(4)*sum(V(1,1:3)*Int_Z1)+k(7)*sum(V(2,1:3)*Int_Z1) + k(9)*sum(V(3,1:3)*Int_Z1) + y0(4); Z2 = Z0 .*exp(DD*t2); Y2 = V *Z2; Int_Z2 = Z2./DD-Z0./DD; %int (Z1) = Z1/DD+C Y2(4) = k(3)*sum(V(1,1:3)*Int_Z2)+k(6)*sum(V(2,1:3)*Int_Z2) + k(8)*sum(V(3,1:3)*Int_Z2) + y0(4); Y2(5) = k(4)*sum(V(1,1:3)*Int_Z2)+k(7)*sum(V(2,1:3)*Int_Z2) + k(9)*sum(V(3,1:3)*Int_Z2) + y0(4); F_down = ((Y2-y2)'*(Y2-y2) + (Y1-y1)'*(Y1-y1)) /2; FF= (F_down+F_up)/2; DF(j)= (F_up-F_down)/dk/2; end for j=1:9 kk(j)= kk(j) - DF(j) *dt; end if(mod(i,1000)==1) 'deviation' FF/10 'k1->k9', kk end end [ Last edited by leedobb on 2011-3-21 at 15:46 ] |

2楼2011-03-21 15:36:02

3楼2011-03-21 15:44:50
wodaifei
银虫 (小有名气)
- 应助: 0 (幼儿园)
- 金币: 3339.1
- 散金: 572
- 红花: 8
- 帖子: 248
- 在线: 351.1小时
- 虫号: 683543
- 注册: 2008-12-28
- 性别: GG
- 专业: 化工系统工程

5楼2011-03-21 17:48:04













回复此楼
ffjtouchlife
