24小时热门版块排行榜    

查看: 1470  |  回复: 2

嫰寒锁梦

新虫 (初入文坛)

[求助] Matlab拟合反应动力学参数结果偏差很大啊,求大神指点程序当如何修改 已有1人参与

最近一直在拟合反应动力学参数,花了很大功夫试着编好了代码,却始终不能得出文献中的参数结果,求大神帮忙指点一下程序。在此拜谢了。
code:
function KineticsEst5
clear all
clc
k0 = [0.5 0.5 0.5 0.5 0.5 0.5];         % 参数初值
lb = [0  0  0  0  0  0];                   % 参数下限
ub = [+inf  +inf  +inf  +inf  +inf  +inf];    % 参数上限
x0 = [4.96 24.43 26.32 17 38.72];
ExpData = ...
[     
0        4.96               24.43        26.32
5        5.635        28.29        30.715
10        6.31          32.15        35.11
15        6.77                34.225        34.98
20        7.23                 36.3        34.85
25        7.065        39.285        33.525
30        6.9                42.27        32.2
35        7.08               45.46        29.7
40        7.26               48.65        27.2
50        8             51.215        24.495
60        8.74               53.78        21.79
75        8.605        58.01        19.12
90        8.47               62.24        16.45
]
yexp = ExpData(:,2:4);                  
% 使用函数fmincon()进行参数估计
[k,fval,flag] = fmincon(@ObjFunc4Fmincon,k0,[],[],[],[],lb,ub,[],[],x0,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(\\\'\\\\tk6 = %.4f\\\\n\\\',k(6))
fprintf(\\\'  The sum of the squares is: %.1e\\\\n\\\\n\\\',fval)
k_fmincon = k;
% 以函数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\\\')
fprintf(\\\'\\\\tk1 = %.4f ± %.4f\\\\n\\\',k(1),ci(1,2)-k(1))
fprintf(\\\'\\\\tk2 = %.4f ± %.4f\\\\n\\\',k(2),ci(2,2)-k(2))
fprintf(\\\'\\\\tk3 = %.4f ± %.4f\\\\n\\\',k(3),ci(3,2)-k(3))
fprintf(\\\'\\\\tk4 = %.4f ± %.4f\\\\n\\\',k(4),ci(4,2)-k(4))
fprintf(\\\'\\\\tk5 = %.4f ± %.4f\\\\n\\\',k(5),ci(5,2)-k(5))
fprintf(\\\'\\\\tk6 = %.4f ± %.4f\\\\n\\\',k(6),ci(6,2)-k(6))
fprintf(\\\'  The sum of the squares is: %.1e\\\\n\\\\n\\\',resnorm)
% ------------------------------------------------------------------
function f = ObjFunc4Fmincon(k,x0,yexp)
tspan = [0,5,10,15,20,25,30,35,40,50,60,75,90];
[t x] = ode45(@KineticEqs,tspan,x0,[],k);   
y(:,1:3) = x(:,1:3);
f = sum((y(:,1)-yexp(:,1)).^2) + sum((y(:,2)-yexp(:,2)).^2) + sum((y(:,3)-yexp(:,3)).^2);
% ------------------------------------------------------------------
function f = ObjFunc4LNL(k,x0,yexp)
tspan = [0,5,10,15,20,25,30,35,40,50,60,75,90];
[t x] = ode45(@KineticEqs,tspan,x0,[],k);   
y(:,1:3) = x(:,1:3);
f1 = y(:,1) - yexp(:,1);
f2 = y(:,2) - yexp(:,2);
f3 = y(:,3) - yexp(:,3);
f = [f1; f2; f3];
% ------------------------------------------------------------------
function dxdt = KineticEqs(t,x,k)
dxdt =  ...
[ (k(1)*x(1)+k(6)*x(3))
   (k(2)*x(1)+k(5)*x(3))
   (k(3)*x(1)+k(4)*x(2)-(k(5)+k(6))*x(3))
   (-(k(1)+k(2)+k(3))*x(1))
   (-k(4)*x(2))
];
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
微分方程拟合问题吧,把原微分方程及对应的数据贴出来看看。
2楼2015-10-01 19:12:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

嫰寒锁梦

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by dingd at 2015-10-01 19:12:13
微分方程拟合问题吧,把原微分方程及对应的数据贴出来看看。

PAA就是Asphaltene和Preasphaltene;
M10=17.00;M20=38.72;PAA0=26.32;O0=24.43;G0=4.96
Matlab拟合反应动力学参数结果偏差很大啊,求大神指点程序当如何修改
functions.png


Matlab拟合反应动力学参数结果偏差很大啊,求大神指点程序当如何修改-1
data.png

3楼2015-10-01 20:03:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 嫰寒锁梦 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 怎么查啊 +6 huang1991js 2026-08-26 6/300 2026-08-28 08:42 by winsaint
[基金申请] 基金系统什么内容也没有 30+4 winsaint 2026-08-27 8/400 2026-08-28 08:26 by lfy8008
[基金申请] 国自然面上复盘~欢迎讨论 (金币+5) +11 晴天加油 2026-08-26 12/600 2026-08-28 01:22 by li09465290@
[基金申请] 哪位高人中了,把查询到的截图贴出来让我看看,让我长长见识 +5 yuleib84 2026-08-26 6/300 2026-08-28 00:02 by yudaoqian88
[教师之家] 导师吐槽:我怎么摊上了这么个极品研究生! +7 苏东坡二世 2026-08-23 7/350 2026-08-27 18:14 by 瞬息宇宙
[基金申请] 基金不中,共勉 +10 eulota 2026-08-26 10/500 2026-08-27 17:23 by lqllinqiaoli
[基金申请] 基金未中,这种答复是模板吗? +5 zhaosm1982 2026-08-27 6/300 2026-08-27 16:00 by lfy8008
[基金申请] 看板上这么多中的,有点像50人群里49个人都是骗子的那种感觉…… +5 a089 2026-08-26 6/300 2026-08-27 14:05 by jonewore
[基金申请] 怎么看青基中了没有啊 +5 叶九微 2026-08-26 5/250 2026-08-27 10:35 by l_zh2008
[文学芳草园] 梦想 +3 myrtle 2026-08-26 3/150 2026-08-27 10:01 by angelyueyi
[基金申请] 2026年的国家社科基金项目通讯评审的新规则与新动向、新挑战 +7 process2012 2026-08-23 10/500 2026-08-26 19:23 by hmhminy
[基金申请] 范进中举一文的中心思想 +9 炎黄贵胄 2026-08-22 10/500 2026-08-26 15:40 by semaglutide
[基金申请] 出来了 +9 trojank 2026-08-26 9/450 2026-08-26 14:25 by 宝贝虫子
[基金申请] 为什么国自然不能直接公布 +4 bjdxyxy 2026-08-26 4/200 2026-08-26 13:12 by qingmu1201
[基金申请] 国际合作可查了,中了面上 (EPI+1)(金币+50) +18 Ldrop2023 2026-08-26 18/900 2026-08-26 11:15 by cmrandy
[基金申请] 系统进不去 +4 yanglien 2026-08-26 5/250 2026-08-26 11:10 by wenfengw83
[基金申请] 今天务委会开完了,明天出结果吗 +19 angus9576 2026-08-25 23/1150 2026-08-26 10:03 by zp519
[基金申请] 在坚冰还盖着北海的时候,我看到了怒放的梅花。 (金币+10) +6 ziyangfang 2026-08-25 9/450 2026-08-25 20:26 by huagongfeihu
[基金申请] 明天应该可查了!? +6 chengyan1220 2026-08-23 6/300 2026-08-25 19:45 by zfd97
[基金申请] 某些机构,以效率低为荣,以效率低作为存在感 +9 yuleib84 2026-08-25 10/500 2026-08-25 17:14 by alexon
信息提示
请填处理意见