24小时热门版块排行榜    

查看: 1266  |  回复: 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的回帖

中计量张兴赐

铁虫 (初入文坛)

您好,我现在研一,也在做matlab非线性拟合求解动力学参数,当待求解的参数多了之后,求解的结果总是限入局部最优,请问您怎么解决的啊?谢谢了!

发自小木虫Android客户端
6楼2019-12-22 18:21: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的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] filecode +7 cratir 2026-08-14 11/550 2026-08-15 06:19 by 学员8dgXkO
[考研] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +3 7lpolszZVXgi 2026-08-14 6/300 2026-08-15 04:21 by 4wMiSEwB6436
[硕博家园] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +3 HFw0lei2R37i 2026-08-14 4/200 2026-08-15 04:17 by 4wMiSEwB6436
[找工作] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +4 k0dTPqJtl0jt 2026-08-14 4/200 2026-08-15 02:21 by 4wMiSEwB6436
[基金申请] 各位道友,我要去昆明玩几天,回来见。 +7 Tide man 2026-08-14 8/400 2026-08-15 01:11 by arzu_hma
[基金申请] 咱们一起用铁证分析2026国家社科基金中标与否 +7 启萌科技 2026-08-12 22/1100 2026-08-14 23:45 by Noways
[基金申请] 是这周出结果还是下周出结果? +4 yuleib84 2026-08-11 4/200 2026-08-14 23:05 by lfy8008
[教师之家] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +3 HFw0lei2R37i 2026-08-14 5/250 2026-08-14 22:32 by 4wMiSEwB6436
[基金申请] 哪位老哥知道今年的国自然具体哪一天放榜? +5 Ldrop2023 2026-08-13 5/250 2026-08-14 18:48 by ssxclkj
[基金申请] 奇怪,两个人的filecode固定段从头到尾一模一样 +8 布布和一二 2026-08-10 11/550 2026-08-14 14:58 by Equinoxhua
[基金申请] 应该是93bebmhtak前后十一个字符比较关键 +23 Lanmanbaby 2026-08-09 37/1850 2026-08-14 13:40 by Equinoxhua
[硕博家园] 请教兼职经验 +3 是阿文鸭 2026-08-09 3/150 2026-08-14 12:07 by HER12025
[基金申请] 关于Filecode分析方法 +9 majunge000 2026-08-10 12/600 2026-08-13 23:20 by iwuli
[文学芳草园] 阿姨 +4 汪汪锅 2026-08-09 4/200 2026-08-13 19:43 by arzu_hma
[基金申请] 静等基金结果 +8 gjjjzhong 2026-08-10 21/1050 2026-08-13 17:56 by 且听虎啸
[基金申请] 不应该看fileCode +7 且听虎啸 2026-08-12 9/450 2026-08-13 14:27 by flydreamws
[基金申请] Filecode 又变了,巨变 +3 WH3796 2026-08-12 4/200 2026-08-13 14:13 by 小木虫6752397
[基金申请] 什么时候出结果,有咨询渠道??? +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
[基金申请] 据悉今年马上要出结果了 +7 瞬息宇宙 2026-08-10 8/400 2026-08-10 12:42 by Vivilian
信息提示
请填处理意见