24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 424  |  回复: 1
当前主题已经存档。

allenhero1228

金虫 (小有名气)

[交流] 求助 matlab做模型拟合时的问题

我用matlab求四个动力学模型的参数,并输出理论和实验值及二者的相关系数,结果程序运行的结果是后三个模型算出的理论值和相关系数都是一模一样,而且这四个模型的理论值与实验值相差很大,不知道这是什么原因,望各位高手帮忙给看一下,谢谢啦
function KineticsEst
%   动力学参数估计及模型辨识—判别四个模型中哪个最好

clear all
clc

global rA Pco Pco2 Ph2 Pm Ph2o Kf

%553K

Pco = [1.3487 1.3863 1.3253 1.3140 1.3072 1.3052 1.3674];
Ph2 = [1.6901 1.7165 1.6863 1.6728 1.6699 1.6587 1.7991];
Pco2 = [0.0599 0.0576 0.0637 0.0610 0.0581 0.0619 0.0675];
Pm =[0.0032 0.0032 0.0028 0.0029 0.0030 0.0029 0.0030];
Ph2o = [0.0463 0.0471 0.0491 0.0510 0.0516 0.0524 0.0525];
rA = [0.3118 0.3177 0.3301 0.3465 0.3510 0.3554 0.3560];  
Kf = 0.0006;

%----
IDmodel = 'a';
x0 = [1 1 1 1 1];
option1=optimset('MaxFunEvals',10000,'Maxiter',10000,'tolfun',1e-10);
[x,resnorm,residual,exitflag,output,lambda,jacobian] = ...
    lsqnonlin(@ObjFunc,x0,zeros(size(x0)),inf*ones(size(x0)),option1,IDmodel);
rAc=x(1)*Pco.*Ph2.*(1-Pm./(Kf*Pco.*Ph2.^2))./((1+x(2)*Pco+x(3)*Pco2).*(1+x(4)*Ph2+x(5)*Ph2o))
B=[rA;rAc]    %rA为实验值,rAc为理论值
R=corrcoef(rA',rAc')  %求模型的相关系数
exitflag     %查看计算终值的条件
fprintf('\n Model (a):\n')
fprintf('  k = %.5d  Kco = %.3d Kco2 = %.3d  Kh2 = %.3d Kh2o = %.3d\n',x(1),x(2),x(3),x(4),x(5))
fprintf('  The sum of the squares is: %.3f\n\n',resnorm)

IDmodel = 'b';
x0 = [1 1 1 1 1 1];
option1=optimset('MaxFunEvals',30000,'Maxiter',10000,'tolfun',1e-6);
[x,resnorm,residual,exitflag,output,lambda,jacobian] = ...
    lsqnonlin(@ObjFunc,x0,zeros(size(x0)),inf*ones(size(x0)),option1,IDmodel);
rAc=x(1)*Pco.*Ph2.^2.*(1-Pm./(Kf*Pco.*Ph2.^2))./((1+x(2)*Pco+x(3)*Pco2+x(4)*Pm).*(1+x(5)*Ph2+x(6)*Ph2o))

B=[rA;rAc]
R=corrcoef(rA',rAc')
exitflag
fprintf('\n Model (b):\n')
fprintf('  k = %.3d  Kco = %.3d Kco2 = %.3d Km = %.3d Kh2 = %.3d Kh2o = %.d\n',x(1),x(2),x(3),x(4),x(5),x(6))
fprintf('  The sum of the squares is: %.3f\n\n',resnorm)


IDmodel = 'c';
x0 = [1 1 1 1 1];  
option1=optimset('MaxFunEvals',10000,'Maxiter',10000,'tolfun',1e-10);
[x,resnorm,residual,exitflag,output,lambda,jacobian] = ...
    lsqnonlin(@ObjFunc,x0,zeros(size(x0)),inf*ones(size(x0)),option1,IDmodel);
B=[rA;rAc]
R=corrcoef(rA',rAc')
exitflag

fprintf('\n Model (c):\n')
fprintf('  k = %.3d  Kco = %.3d Kco2 = %.3d Kh2 = %.3d Kh2o = %.3d\n',x(1),x(2),x(3),x(4),x(5))
fprintf('  The sum of the squares is: %.3f\n\n',resnorm)

IDmodel = 'd';
x0 = [1 1 1 1];
option1=optimset('MaxFunEvals',15000,'Maxiter',10000,'tolfun',1e-15);
[x,resnorm,residual,exitflag,output,lambda,jacobian] = ...
    lsqnonlin(@ObjFunc,x0,zeros(size(x0)),inf*ones(size(x0)),option1,IDmodel);
B=[rA;rAc]
R=corrcoef(rA',rAc')
exitflag

fprintf('\n Model (d):\n')
fprintf('  k = %.3d  Kco = %.3d Kco2 = %.3d Kh2=%.3d\n',x(1),x(2),x(3),x(4))
fprintf('  The sum of the squares is: %.3f\n\n',resnorm)

% ------------------------------------------------------------------
function f = ObjFunc(x,IDmodel)
global rA Pco Pco2 Ph2 Pm Ph2o Kf
switch IDmodel
case 'a'        % Model (a), x(1)=k; x(2)=Kco; x(3)=Kco2; x(4)=Kh2; x(5)=Kh2o;
    f = rA - x(1)*Pco.*Ph2.*(1-Pm./(Kf*Pco.*Ph2.^2))./((1+x(2)*Pco+x(3)*Pco2).*(1+x(4)*Ph2+x(5)*Ph2o));
case 'b'        % Model (b), x(1)=k; x(2)=Kco; x(3)=Kco2; x(4)=Km; x(5)=Kh2; x(6)=Kh2o;
    f = rA - x(1)*Pco.*Ph2.^2.*(1-Pm./(Kf*Pco.*Ph2.^2))./((1+x(2)*Pco+x(3)*Pco2+x(4)*Pm).*(1+x(5)*Ph2+x(6)*Ph2o));
case 'c'        % Model (c), x(1)=k; x(2)=Kco; x(3)=Kco2;x(5)=Kh2; x(6)=Kh2o;
    f = rA - x(1)*Pco.*Ph2.*(1-Pm./(Kf*Pco.*Ph2.^2))./((1+x(2)*Pco+x(3)*Pco2).*(1+x(4).^0.5*Ph2.^0.5+x(5)*Ph2o));
case 'd'        % Model (d), x(1)=k; x(2)=Kco; x(3)=Kco2; x(4)=Kh2;
    f = rA - x(1)*Pco.*Ph2.^2.*(1-Pm./(Kf*Pco.*Ph2.^2))./(1+x(2)*Pco+x(3)*Pco2+x(4)*Ph2).^3;
otherwise
    disp('Unknown model.')
end
计算结果如下:
Optimization terminated: first-order optimality less than OPTIONS.TolFun,
and no negative/zero curvature detected in trust region model.

rAc =

-1.1888e-012 -9.5004e-013 -7.3257e-013 -9.6625e-013  -1.143e-012   -1.06e-012 -4.0011e-013


B =

       0.3118       0.3177       0.3301       0.3465        0.351       0.3554        0.356
-1.1888e-012 -9.5004e-013 -7.3257e-013 -9.6625e-013  -1.143e-012   -1.06e-012 -4.0011e-013


R =

            1       0.3244
       0.3244            1


exitflag =

     1


Model (a):
  k = 5.19864e-010  Kco = 1.187e+001 Kco2 = 1.181e+001  Kh2 = 1.189e+001 Kh2o = 1.174e+001
  The sum of the squares is: 0.803

Optimization terminated: first-order optimality less than OPTIONS.TolFun,
and no negative/zero curvature detected in trust region model.



B =

       0.3118       0.3177       0.3301       0.3465        0.351       0.3554        0.356
-6.4994e-011 -5.2725e-011  -3.998e-011  -5.232e-011 -6.1787e-011 -5.6925e-011 -2.3264e-011


R =

            1      0.35169
      0.35169            1


exitflag =

     1


Model (b):
  k = 3.277e-008  Kco = 1.680e+001 Kco2 = 1.676e+001 Km = 1.654e+001 Kh2 = 1.682e+001 Kh2o = 2e+001
  The sum of the squares is: 0.803

Optimization terminated: first-order optimality less than OPTIONS.TolFun,
and no negative/zero curvature detected in trust region model.

B =

       0.3118       0.3177       0.3301       0.3465        0.351       0.3554        0.356
-6.4994e-011 -5.2725e-011  -3.998e-011  -5.232e-011 -6.1787e-011 -5.6925e-011 -2.3264e-011


R =

            1      0.35169
      0.35169            1


exitflag =

     1


Model (c):
  k = 8.178e-009  Kco = 2.015e+001 Kco2 = 2.017e+001 Kh2 = 2.007e+001 Kh2o = 2.011e+001
  The sum of the squares is: 0.803

Optimization terminated: first-order optimality less than OPTIONS.TolFun,
and no negative/zero curvature detected in trust region model.

B =

       0.3118       0.3177       0.3301       0.3465        0.351       0.3554        0.356
-6.4994e-011 -5.2725e-011  -3.998e-011  -5.232e-011 -6.1787e-011 -5.6925e-011 -2.3264e-011


R =

            1      0.35169
      0.35169            1


exitflag =

     1


Model (d):
  k = 2.220e-014  Kco = 9.605e+000 Kco2 = 9.539e+000 Kh2=9.656e+000
  The sum of the squares is: 0.803

[ Last edited by allenhero1228 on 2008-4-15 at 11:09 ]
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 allenhero1228 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 材料295 +13 小英11 2026-04-03 14/700 2026-04-04 09:02 by 来看流星雨10
[考研] 305求调剂 +3 77Qi 2026-04-03 3/150 2026-04-03 23:01 by qzxyhcsy
[考研] 英一数一408,总分284,二战真诚求调剂 +13 12.27 2026-03-30 15/750 2026-04-03 14:41 by 氮气气气
[考研] 289-求调剂 +4 这里是_ 2026-04-03 4/200 2026-04-03 14:23 by 1753564080
[考研] 085600专硕材料与化工348分求调剂 +10 上学啦! 2026-04-01 11/550 2026-04-03 14:13 by 百灵童888
[考研] 289求调剂 +4 Acesczlo 2026-03-29 5/250 2026-04-03 10:09 by 不168
[考研] 260求调剂 +3 朱芷琳 2026-04-02 3/150 2026-04-03 08:44 by yulian1987
[考研] 314求调剂 +11 1xiaojun23 2026-03-31 12/600 2026-04-02 12:31 by 1xiaojun23
[考研] 348环境工程调剂 +3 吴彦祖24k 2026-04-01 3/150 2026-04-02 09:14 by nanaliuyun
[考研] 266分,一志愿电气工程,本科材料,求材料专业调剂 +10 哇呼哼呼哼 2026-04-01 11/550 2026-04-01 21:48 by chyhaha
[考研] 310分求调剂 +4 成功上岸wang 2026-04-01 4/200 2026-04-01 20:35 by liu823948201
[考研] 085600,320分求调剂 +5 大馋小子 2026-04-01 6/300 2026-04-01 19:40 by 唐沐儿
[考研] 085601英二数二求调剂 总分325 +4 余航航 2026-03-31 4/200 2026-03-31 17:38 by 唐沐儿
[考研] 085601 329分调剂 +6 yzsa12 2026-03-31 6/300 2026-03-31 15:23 by yanflower7133
[考研] 英一数一总分334求调剂 +4 陈阳坤 2026-03-31 4/200 2026-03-31 14:22 by 记事本2026
[考研] 085404 22408 315分 +5 zhuangyan123 2026-03-31 6/300 2026-03-31 13:48 by limeifeng
[考研] 276求调剂 +3 赵久华 2026-03-29 3/150 2026-03-31 10:06 by cal0306
[考研] 323分 食品与营养调剂 +3 嘿ooo 2026-03-31 3/150 2026-03-31 09:38 by longlotian
[考研] 279求调剂 +12 j的立方 2026-03-29 12/600 2026-03-30 20:30 by dick_runner
[考研] 085701求调剂初试286分 +5 secret0328 2026-03-28 5/250 2026-03-30 12:54 by fangnagu
信息提示
请填处理意见