24小时热门版块排行榜    

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

898766282

新虫 (正式写手)

[求助] matlab lsqnonlin函数进行非线性动力学参数拟合,求高手指点. 已有1人参与

function kinetics1
clear all
clc
a0=[10^11 81 0.3];
lb=[0 0 0];ub=[+inf +inf +inf];
c0=[0.0525564 100];
c16exp=...
    [0.0525564        100
    0.0403533        73.3083
    0.0267938        50.3759
    0.015037        42.1053
    0.0082474        24.812
    0.00415801        13.9098
    0.00278195        11.6541
    0.00185881        10.1504
    0.00183435        9.77444
    0.0015879        9.77444];
c14exp=...
    [0.0525564        100
    0.0493758        89.8496
    0.0441658        81.203
    0.0378303        72.9323
    0.0357841        67.6692
    0.0337337        61.6541
    0.0276196        54.8872
    0.0239832        47.7444
    0.018766        40.6015
    0.0160359        35.7143
    0.0153455        34.5865];
c12exp=...
    [0.0526        100
     0.0516        98.1203
     0.0507        94.7368
     0.0484        93.2331
     0.0464        89.8496
     0.0439        80.4511
     0.0429        80.8271
     0.0407        77.8195
     0.0393        76.3158
     0.0381        75.5639
     0.0365        72.1805];

[a,resnorm,residual,exitflag,output,lambda,jacobian]=lsqnonlin(@objlm,a0,lb,ub,[],c0,c16exp,c14exp,c12exp);
ci=nlparci(a,residual,jacobian);
fprintf('\n\n使用函数lsqnonlin()估计得到的参数值为:\n'),a

function f=objlm(a,c0,c16exp,c14exp,c12exp)

%160度
tspan1=[0    0.1005    0.2143    0.3360    0.4365    0.5661    0.6667    0.7593    0.8677    0.9603];
[t,c16]=ode45(@kinetic16,tspan1,c0,[],a);
f1=c16(:,1)-c16exp(:,1);
f2=c16(:,2)-c16exp(:,2);

%140度
tspan2=[0    0.1005    0.1984    0.2857    0.3571    0.4471    0.5529    0.6746    0.8042    0.9074    0.9683];
[t,c14]=ode45(@kinetic14,tspan2,c0,[],a);
f3=c14(:,1)-c14exp(:,1);
f4=c14(:,2)-c14exp(:,2);

%120度
tspan3=[0    0.1005    0.2011    0.2937    0.4021    0.5000    0.5979    0.7090    0.8069    0.8862    0.9894];
[t,c12]=ode45(@kinetic12,tspan3,c0,[],a);
f5=c12(:,1)-c12exp(:,1);
f6=c12(:,2)-c12exp(:,2);

f=[f1;f2;f3;f4;f5;f6];    %构造目标函数

function dc16dt=kinetic16(t,c16,a)   %160度
T1=433.15;R=0.008314;
dc16dt=...
    [-(a(1).*exp(-a(2)./(R.*T1)).*((c16(2)./100).^(a(3))).*c16(1).*0.943)
    -(7.*a(1).*exp(-a(2)./(R.*T1)).*((c16(2)./100).^(a(3))).*c16(1).*0.943)];

function dc14dt=kinetic14(t,c14,a)   %140度
T2=413.15;R=0.008314;
dc14dt=...
    [-(a(1).*exp(-a(2)./(R.*T2)).*((c14(2)./100).^(a(3))).*c14(1).*0.926)
    -(7.*a(1).*exp(-a(2)./(R.*T2)).*((c14(2)./100).^(a(3))).*c14(1).*0.926)];

function dc12dt=kinetic12(t,c12,a)   %120度
T3=393.15;R=0.008314;
dc12dt=...
    [-(a(1).*exp(-a(2)./(R.*T3)).*((c12(2)./100).^(a(3))).*c12(1).*0.907)
    -(7.*a(1).*exp(-a(2)./(R.*T3)).*((c12(2)./100).^(a(3))).*c12(1).*0.907)];
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Mr__Right

专家顾问 (著名写手)

引用回帖:
4楼: Originally posted by 898766282 at 2016-01-13 14:04:11
请问怎样调整lsqnonlin函数优化的参数,我计算得出的残差平方和并不是最小的就停止了,是需要调整什么参数吗?我的初值是根据已有文献报道来选择的应该没有问题。

常微分方程组的参数拟合,您可以找精通1stOpt的同学帮忙试算。

文章乃身外之物,要多考虑编辑、审稿人和读者的感受。
5楼2016-01-13 19:12:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 6 个回答

Mr__Right

专家顾问 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
898766282: 金币+5, 有帮助 2016-01-12 14:02:40
898766282: 金币+5, 有帮助 2016-01-12 16:41:14
898766282: 金币+10, 有帮助 2016-01-13 13:59:33
这类问题“尝试”的工作量大。只给一点提示:
1。拟合问题最终数值上都是“最优化”问题,这个是相对复杂的非线性非凸优化问题
2。这类优化问题的求解,常用的迭代方法或基于牛顿法延伸出来的方法,通常无法找到好的最优解
理论上,这类问题,只有唯一的全局最优解的情况下,没有数值算法能够确保必然收敛到这个点
现在通用的方法是:
先用全局优化算法(differential-evolution差分演化,最常用,粒子群PSO)作初步筛查,然后再用nonlincon,fmincon之类函数自带的局部优化算法

通常要多算几次做比较,可能还要调整优化的参数,直到找到最佳结果
文章乃身外之物,要多考虑编辑、审稿人和读者的感受。
2楼2016-01-12 13:03:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

898766282

新虫 (正式写手)

引用回帖:
2楼: Originally posted by Mr__Right at 2016-01-12 13:03:33
这类问题“尝试”的工作量大。只给一点提示:
1。拟合问题最终数值上都是“最优化”问题,这个是相对复杂的非线性非凸优化问题
2。这类优化问题的求解,常用的迭代方法或基于牛顿法延伸出来的方法,通常无法找到好 ...

请问我用ode求解器求解时,初始值c0不一样,要怎么弄呢?
3楼2016-01-12 16:41:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

898766282

新虫 (正式写手)

请问怎样调整lsqnonlin函数优化的参数,我计算得出的残差平方和并不是最小的就停止了,是需要调整什么参数吗?我的初值是根据已有文献报道来选择的应该没有问题。
4楼2016-01-13 14:04:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 今天系统多次维护,明天很可能放榜! +6 zju2000 2026-08-16 6/300 2026-08-17 10:01 by xter9665
[基金申请] 哪位老哥知道今年的国自然具体哪一天放榜? +10 Ldrop2023 2026-08-13 10/500 2026-08-17 09:59 by 小豌豆_发芽
[教师之家] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 6GojgJvkDudM 2026-08-16 3/150 2026-08-17 09:49 by xLVPIRuSvCUe
[基金申请] 时间戳又变了8-15 +13 archvillain 2026-08-15 25/1250 2026-08-16 20:13 by zhaosm1982
[基金申请] 咱们一起用铁证分析2026国家社科基金中标与否 +7 启萌科技 2026-08-12 26/1300 2026-08-16 12:35 by 启萌科技
[基金申请] 我的国基提前知道中了,可是同事的操作让我实在接受不了,怎么会有这样的人 +11 家与远方 2026-08-10 16/800 2026-08-16 10:28 by ray43
[精细化工] 招聘 金属平磨液,抛光液研发工程师 +3 小天0311 2026-08-14 3/150 2026-08-16 07:31 by H9PLUS
[基金申请] filecode=后面第一个是大写字母 +6 wangze12014 2026-08-14 7/350 2026-08-15 20:12 by gltch
[基金申请] 各位道友,我要去昆明玩几天,回来见。 +7 Tide man 2026-08-14 8/400 2026-08-15 01:11 by arzu_hma
[基金申请] 是这周出结果还是下周出结果? +4 yuleib84 2026-08-11 4/200 2026-08-14 23:05 by lfy8008
[硕博家园] 读博的好处 +4 lnee 2026-08-11 4/200 2026-08-14 10:20 by ahsoarli
[基金申请] FileCode能看出啥? +10 要乐观耀哥 2026-08-10 32/1600 2026-08-14 09:37 by 要乐观耀哥
[基金申请] 静等基金结果 +8 gjjjzhong 2026-08-10 21/1050 2026-08-13 17:56 by 且听虎啸
[基金申请] 重要来源:本周末出结果 +10 瞬息宇宙 2026-08-12 10/500 2026-08-13 15:46 by likettle
[基金申请] Filecode 又变了,巨变 +3 WH3796 2026-08-12 4/200 2026-08-13 14:13 by 小木虫6752397
[基金申请] 结合人工智能,周易传统文化,filecode打分制来了,3分以上希望很大。 +3 Tide man 2026-08-12 4/200 2026-08-13 08:35 by ZJTJZ
[基金申请] 帮忙看看fileCode +7 wwncly 2026-08-10 13/650 2026-08-11 19:36 by 冰心玉壶晴
[基金申请] 为什么网上很多人说本周 12号出结果 +6 瞬息宇宙 2026-08-10 7/350 2026-08-11 19:25 by Tide man
[基金申请] 什么时候出结果,有咨询渠道??? +3 Tide man 2026-08-11 3/150 2026-08-11 17:54 by kudofaye
[基金申请] 确定了,国自然21号放榜 +6 布布和一二 2026-08-10 7/350 2026-08-10 19:15 by 2000zf36392
信息提示
请填处理意见