24小时热门版块排行榜    

查看: 1159  |  回复: 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

专家顾问 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +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的回帖

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的回帖

中计量张兴赐

铁虫 (初入文坛)

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

发自小木虫Android客户端
6楼2019-12-22 18:21:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 898766282 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 286分人工智能专业请求调剂愿意跨考! +4 lemonzzn 2026-03-17 8/400 2026-03-21 22:49 by lemonzzn
[考研] 一志愿南大,0703化学,分数336,求调剂 +3 收到VS 2026-03-21 3/150 2026-03-21 18:42 by 学员8dgXkO
[考研] 一志愿深大,0703化学,总分302,求调剂 +4 七月-七七 2026-03-21 4/200 2026-03-21 18:20 by 学员8dgXkO
[考研] 306求调剂 +4 chuanzhu川烛 2026-03-18 4/200 2026-03-21 08:25 by laoshidan
[考研] 材料工程(专)一志愿985 初试335求调剂 +3 hiloiy 2026-03-17 4/200 2026-03-21 03:04 by JourneyLucky
[考研] 265求调剂 +9 梁梁校校 2026-03-17 9/450 2026-03-21 02:17 by JourneyLucky
[考研] 324分 085600材料化工求调剂 +4 llllkkkhh 2026-03-18 4/200 2026-03-21 01:24 by JourneyLucky
[考研] 一志愿西南交大,求调剂 +5 材化逐梦人 2026-03-18 5/250 2026-03-21 00:26 by JourneyLucky
[考研] 311求调剂 +5 冬十三 2026-03-18 5/250 2026-03-21 00:16 by JourneyLucky
[考研] 274求调剂 +10 S.H1 2026-03-18 10/500 2026-03-20 23:51 by JourneyLucky
[考研] 考研调剂求学校推荐 +3 伯乐29 2026-03-18 5/250 2026-03-20 22:59 by JourneyLucky
[考研] 求调剂一志愿南京航空航天大学289分 +3 @taotao 2026-03-19 3/150 2026-03-20 21:34 by JourneyLucky
[考研] 289求调剂 +6 怀瑾握瑜l 2026-03-20 6/300 2026-03-20 20:30 by 学员8dgXkO
[考研] 求调剂 +3 eation27 2026-03-20 3/150 2026-03-20 19:32 by JourneyLucky
[考研] 086500 325 求调剂 +3 领带小熊 2026-03-19 3/150 2026-03-20 18:38 by 尽舜尧1
[考研] 320求调剂0856 +3 不想起名字112 2026-03-19 3/150 2026-03-19 22:53 by 学员8dgXkO
[考研] 288求调剂,一志愿华南理工大学071005 +5 ioodiiij 2026-03-17 5/250 2026-03-19 18:22 by zcl123
[考研] 0703化学调剂 +5 pupcoco 2026-03-17 8/400 2026-03-19 13:58 by houyaoxu
[考研] 344求调剂 +6 knight344 2026-03-16 7/350 2026-03-18 20:13 by walc
[考研] 考研求调剂 +3 橘颂. 2026-03-17 4/200 2026-03-17 21:43 by 有只狸奴
信息提示
请填处理意见