24小时热门版块排行榜    

查看: 1339  |  回复: 12
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

zhaoshazhu

新虫 (小有名气)

[求助] 求Matlab高手指导 已有1人参与

Matlab运算结果的置信区间很大,和什么有关系呢?
function KineticsEst6
clear all
clc
tspan = [0 662.25];
k0 = [0.4587 0.4971  10  12 6 8 205 0.5653];   
lb = [0  0  0  0  0 0 0];
ub = [50  50  100  100 50 50 1000 50];

P0 =[0.04020         4.02010         0.18794         0        0;
     0.02228         4.45682         0.10418         0        0;
     0.01541         4.62428         0.07206         0        0;
     0.01336         4.67446         0.06244         0        0;
     0.04020         4.02010         0.18794         0        0;
     0.04020         4.02010         0.18794         0        0;
     0.04020         4.02010         0.18794         0        0
];  % 初始分压,MPa

Pi=[0.01303         4.00374         0.96404         0.007095         0.012097;
    0.00393         4.44636         0.53626         0.074475         0.005998;
    0.00127         4.61707         0.37150         0.070931         0.003074;
    0.00090         4.66795         0.32206         0.066794         0.002414;
    0.00243         4.00519         0.96961         0.158768         0.006883;
    0.00681         4.00390         0.96766         0.117792         0.009855;
    0.01303         4.00374         0.96404         0.070945         0.012097
];
% 经过Wc/F0后,各物质分压,MPa

% 使用函数lsqnonlin()进行参数估计
options=optimset('MaxFunEvals',1000000,'MaxIter',400000)
[k,resnorm,residual,exitflag,output,lambda,jacobian] = lsqnonlin(@ObjFunc,k0,lb,ub,[],P0,Pi);      
ci = nlparci(k,residual,jacobian);
fprintf('\n\n使用函数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('\tk7 = %.4f ± %.4f\n',k(7),ci(7,2)-k(7))
fprintf('\tk8 = %.4f ± %.4f\n',k(8),ci(8,2)-k(8))
% ------------------------------------------------------------------
function f = ObjFunc(k,P0,Pi)           % 目标函数
[m,n] = size(P0);
Pcal = zeros(m,n);
tspan =[0 662.25];         % 即Wc/F0,g.h/mol
for i = 1:m
[t PP] = ode45(@Euqations,tspan,P0(i,,[],k);
Pcal(i, = PP(end,;
end
f= Pcal-Pi;

% ------------------------------------------------------------------
function dPdt = Euqations(t, P, k)        % here t = Wc / F0
denom = 1+k(3)*P(1)+k(5)*P(4)+k(5)*P(3)+k(6)*P(5);               % k(3) = KDMM, k(4) = KME ,k(5)=KHPM,k(6)=KPDO,k(7)=Kp1,k(8)=Kp2
theA =k(3)*P(1)*P(2)*(1-P(4)*P(3)/k(7)*P(1)*P(2)^2) / denom;
theB =k(5)* P(4)*P(2)*(1-P(5)*P(3)/k(8)*P(4)*P(2)^2)/ denom;
r1 = k(1)*theA;
r2 = k(2)*theB;

dPDMMdt = -r1;
dPHdt = -2*r1-2*r2;
dPMEdt = r1+r2;
dPHPMdt = r1-r2;
dPPDOdt = r2;

dPdt = [dPDMMdt;dPHdt;dPMEdt;dPHPMdt;dPPDOdt];
使用函数lsqnonlin()估计得到的参数值为:
        k1 = 0.4599 ± 89509.6910
        k2 = 0.4971 ± 101889.0949
        k3 = 10.0001 ± 1946900.8019
        k4 = 12.0000 ± 8639183.4320
        k5 = 5.9997 ± 420897.9438
        k6 = 7.9999 ± 2837488.5903
        k7 = 205.0000 ± 1472315356.6507
        k8 = 0.5653 ± 3696268.6136
结果和我设的初值一样,是不是就没有计算程序。
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

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

zhaoshazhu

新虫 (小有名气)

引用回帖:
2楼: Originally posted by 月只蓝 at 2014-10-24 16:25:38
这算是很普遍的问题了,初值给得不好。建议添加相关系数或者决定系数定量地考察拟合效果,只看输出的参数数值没什么意义。

我现在改初值就会运行的特别慢,计算不出结果,是因为我的程序写的不对吗?您可以帮我看一下吗,我是初学者,对Matlab不怎么入门,帮我在程序中相应的残差平方和,残差,相关系数吧。。。谢谢啦
5楼2014-10-24 21:17:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 13 个回答

月只蓝

主管区长 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
这算是很普遍的问题了,初值给得不好。建议添加相关系数或者决定系数定量地考察拟合效果,只看输出的参数数值没什么意义。
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
2楼2014-10-24 16:25:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

楼上说初值给得不好是因为 MATLAB 的lsqnonlin 对初值的依赖性很大
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
3楼2014-10-24 16:27:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhaoshazhu

新虫 (小有名气)

引用回帖:
3楼: Originally posted by 月只蓝 at 2014-10-24 16:27:49
楼上说初值给得不好是因为 MATLAB 的lsqnonlin 对初值的依赖性很大

您可以帮我设计一下吗,因为我不是搞模拟的,这只是我论文中的一部分,我是初学者有点不入门。程序里需要加一些残差平方和,相关系数或者其他的,您可以帮我吗?谢谢了
4楼2014-10-24 21:14:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 投票:  有多少人是今天查系统知道结果的? +7 爱看书的可乐 2026-08-26 8/400 2026-08-26 10:50 by cmrandy
[基金申请] 怎么查啊 +3 huang1991js 2026-08-26 3/150 2026-08-26 10:48 by lnliuchunlei
[基金申请] 国合可查了 +3 paperzjh 2026-08-26 3/150 2026-08-26 10:41 by LemmonTr
[基金申请] 怎么看青基中了没有啊 +3 叶九微 2026-08-26 3/150 2026-08-26 10:38 by LemmonTr
[基金申请] 国合里面能看到了 +6 一怀馨秋 2026-08-26 6/300 2026-08-26 10:19 by guo2070
[基金申请] 今天务委会开完了,明天出结果吗 +19 angus9576 2026-08-25 23/1150 2026-08-26 10:03 by zp519
[基金申请] 科研孤儿太难了 +19 我4大白菜 2026-08-20 20/1000 2026-08-26 09:49 by zzuzxg
[基金申请] 出来了 +8 trojank 2026-08-26 8/400 2026-08-26 09:00 by gxc
[基金申请] 2026年8月25日国自然放榜前突然收到列入评审专家邮件,有关系吗? +24 木水思豆 2026-08-25 27/1350 2026-08-26 08:26 by yanchen918
[基金申请] 范进中举一文的中心思想 +8 炎黄贵胄 2026-08-22 9/450 2026-08-26 07:47 by WASM
[基金申请] 2026国自然函评费到账 +21 羊腰板 2026-08-21 24/1200 2026-08-26 07:20 by finnigan
[基金申请] 明天应该可查了!? +6 chengyan1220 2026-08-23 6/300 2026-08-25 19:45 by zfd97
[基金申请] 今日不放榜?网传国自然预计 8 月 27 日可查结果 +17 医学老男孩 2026-08-20 22/1100 2026-08-25 15:36 by 医学老男孩
[基金申请] 人气不行了 +11 fansofjerry 2026-08-21 11/550 2026-08-25 11:04 by 孤独的英雄6
[基金申请] 2026年的国家社科基金项目通讯评审的新规则与新动向、新挑战 +5 process2012 2026-08-23 7/350 2026-08-25 09:42 by huixian257
[基金申请] 建议基金发布提前给出明确的时间点 +13 kulium 2026-08-21 16/800 2026-08-24 16:27 by superceng
[基金申请] 时间戳今天,20号变了 +5 archvillain 2026-08-20 5/250 2026-08-22 06:12 by hui_daxiao
[基金申请] 看来今天不会放榜了? +8 chengyan1220 2026-08-21 11/550 2026-08-21 17:52 by dcqxinyang
[基金申请] 时间戳又变了 +13 wuchongjun 2026-08-20 19/950 2026-08-21 17:21 by 紫杉醇
[基金申请] 今天放榜没戏了吧 +9 yuleib84 2026-08-19 11/550 2026-08-21 10:06 by gltch
信息提示
请填处理意见