24小时热门版块排行榜    

查看: 1339  |  回复: 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 Auroracx 2026-03-22 6/300 2026-03-22 11:43 by chixmc
[考研] 318求调剂 +3 plum李子 2026-03-21 6/300 2026-03-22 11:35 by plum李子
[考研] 085600材料与化工306 +4 z1z2z3879 2026-03-21 4/200 2026-03-21 23:44 by ms629
[考研] 考研调剂 +3 呼呼?~+123456 2026-03-21 3/150 2026-03-21 20:04 by 无际的草原
[考研] 一志愿东华大学控制学硕320求调剂 +3 Grand777 2026-03-21 3/150 2026-03-21 19:23 by 简之-
[考研] 求调剂 +5 十三加油 2026-03-21 5/250 2026-03-21 18:48 by 学员8dgXkO
[考研] 材料学硕333求调剂 +3 北道巷 2026-03-18 3/150 2026-03-21 18:17 by 学员8dgXkO
[考研] 0703化学297求调剂 +3 Daisy☆ 2026-03-20 3/150 2026-03-21 17:45 by ColorlessPI
[考研] 一志愿山大07化学 332分 四六级已过 本科山东双非 求调剂! +3 不想理你 2026-03-16 3/150 2026-03-21 03:59 by JourneyLucky
[考研] 材料专业求调剂 +6 hanamiko 2026-03-18 6/300 2026-03-21 00:24 by JourneyLucky
[考研] 一志愿南昌大学,327分,材料与化工085600 +9 Ncdx123456 2026-03-19 9/450 2026-03-20 23:41 by lovewei0727
[考研] 一志愿 西北大学 ,070300化学学硕,总分287,双非一本,求调剂。 +4 晨昏线与星海 2026-03-19 4/200 2026-03-20 22:15 by JourneyLucky
[考研] 329求调剂 +9 想上学吖吖 2026-03-19 9/450 2026-03-20 22:01 by luoyongfeng
[考研] 求调剂 +3 @taotao 2026-03-20 3/150 2026-03-20 19:35 by JourneyLucky
[考研] 288求调剂,一志愿华南理工大学071005 +5 ioodiiij 2026-03-17 5/250 2026-03-19 18:22 by zcl123
[考研] 085601材料工程专硕求调剂 +10 慕寒mio 2026-03-16 10/500 2026-03-19 15:26 by 丁丁*
[考研] 085600材料与化工调剂 324分 +10 llllkkkhh 2026-03-18 12/600 2026-03-19 14:33 by llllkkkhh
[考研] 有没有道铁/土木的想调剂南林,给自己招师弟中~ +3 TqlXswl 2026-03-16 7/350 2026-03-17 15:23 by TqlXswl
[考博] 26申博 +4 八6八68 2026-03-16 4/200 2026-03-17 13:00 by 轻松不少随
[考研] 070300化学学硕求调剂 +6 太想进步了0608 2026-03-16 6/300 2026-03-16 16:13 by kykm678
信息提示
请填处理意见