24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 1346  |  回复: 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的回帖
相关版块跳转 我要订阅楼主 嫰寒锁梦 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 调剂求院校招收 +5 鹤鲸鸽 2026-03-28 5/250 2026-03-29 01:10 by 我是小康
[考研] 0856求调剂 +6 楒桉 2026-03-28 6/300 2026-03-29 00:31 by 544594351
[考研] 317分 一志愿南理工材料工程 本科湖工大 求调剂 +7 芋泥小铃铛 2026-03-28 7/350 2026-03-28 21:38 by 小木虫tim
[考研] 316求调剂 +7 江辞666 2026-03-26 7/350 2026-03-28 21:28 by sanrepian
[考研] 本科新能源科学与工程,一志愿华理能动285求调剂 +7 AZMK 2026-03-28 11/550 2026-03-28 21:01 by xxxsssccc
[考研] 化学0703 调剂 306分 一志愿211 +4 26要上岸 2026-03-28 4/200 2026-03-28 15:30 by 1018329917
[考研] 一志愿北京工业大学,324分求调剂 +4 零八# 2026-03-28 4/200 2026-03-28 15:01 by 17865157980
[考研] 085600,材料与化工321分求调剂 +9 大馋小子 2026-03-28 9/450 2026-03-28 14:56 by 神马都不懂
[考研] 一志愿厦门大学化学学硕307求调剂 +10 y7czhao 2026-03-26 10/500 2026-03-28 14:23 by 唐沐儿
[考研] 求化学调剂 +4 wulanna 2026-03-28 4/200 2026-03-28 13:37 by 唐沐儿
[考研] 285求调剂 +4 AZMK 2026-03-27 7/350 2026-03-27 20:59 by AZMK
[考研] 272求调剂 +7 脚滑的守法公民 2026-03-27 7/350 2026-03-27 17:23 by laoshidan
[考博] 26申博 +3 加油冲啊! 2026-03-26 3/150 2026-03-27 15:38 by cls512
[考研] 085600,材料与化工321分,求调剂 +9 大馋小子 2026-03-27 9/450 2026-03-27 14:30 by mmm just
[考研] 调剂 +3 李嘉图·S·路 2026-03-27 3/150 2026-03-27 11:19 by wangjy2002
[考研] 327求调剂 +7 prayer13 2026-03-23 7/350 2026-03-26 20:48 by 不吃魚的貓
[考研] 0854电子信息求调剂 +7 α____ 2026-03-22 9/450 2026-03-25 13:37 by α____
[考研] 347求调剂 +4 L when 2026-03-25 4/200 2026-03-25 13:37 by cocolv
[考博] 26申博自荐 +3 whh869393 2026-03-24 3/150 2026-03-24 09:55 by 21018060
[考研] 275求调剂 +6 shansx 2026-03-22 8/400 2026-03-22 15:27 by barlinike
信息提示
请填处理意见