24小时热门版块排行榜    

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

898766282

新虫 (正式写手)

请问怎样调整lsqnonlin函数优化的参数,我计算得出的残差平方和并不是最小的就停止了,是需要调整什么参数吗?我的初值是根据已有文献报道来选择的应该没有问题。
4楼2016-01-13 14:04:11
已阅   回复此楼   关注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的回帖

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的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 一志愿北京化工大学070300 学硕336求调剂 +3 vv迷 2026-03-21 4/200 2026-03-21 23:05 by f19980501
[考研] 311求调剂 +13 冬十三 2026-03-15 14/700 2026-03-21 22:10 by peike
[考研] 考研调剂 +3 呼呼?~+123456 2026-03-21 3/150 2026-03-21 20:04 by 无际的草原
[考研] 考研化学学硕调剂,一志愿985 +5 张vvvv 2026-03-15 7/350 2026-03-21 19:23 by ColorlessPI
[考研] 材料工程专硕 348分求调剂 +3 冬辞. 2026-03-17 5/250 2026-03-21 18:47 by 学员8dgXkO
[考研] 0703化学调剂 +4 妮妮ninicgb 2026-03-21 4/200 2026-03-21 18:39 by 学员8dgXkO
[考研] 297求调剂 +3 喜欢还是不甘心 2026-03-20 3/150 2026-03-21 18:33 by 学员8dgXkO
[考研] 266求调剂 +3 哇呼哼呼哼 2026-03-20 3/150 2026-03-21 16:46 by barlinike
[考研] 279分求调剂 一志愿211 +14 chaojifeixia 2026-03-19 15/750 2026-03-21 13:24 by zhukairuo
[考研] 一志愿山大07化学 332分 四六级已过 本科山东双非 求调剂! +3 不想理你 2026-03-16 3/150 2026-03-21 03:59 by JourneyLucky
[考研] 初始318分求调剂(有工作经验) +3 1911236844 2026-03-17 3/150 2026-03-21 02:33 by JourneyLucky
[考研] 22408 344分 求调剂 一志愿 华电计算机技术 +4 solanXXX 2026-03-20 4/200 2026-03-20 23:49 by alg094825
[考研] 304求调剂 +7 司空. 2026-03-18 7/350 2026-03-20 23:08 by JourneyLucky
[考研] 一志愿 西北大学 ,070300化学学硕,总分287,双非一本,求调剂。 +4 晨昏线与星海 2026-03-19 4/200 2026-03-20 22:15 by JourneyLucky
[考研] 295材料求调剂,一志愿武汉理工085601专硕 +5 Charlieyq 2026-03-19 5/250 2026-03-20 20:35 by JourneyLucky
[考研] 求调剂 +3 @taotao 2026-03-20 3/150 2026-03-20 19:35 by JourneyLucky
[考研] 材料与化工专硕调剂 +7 heming3743 2026-03-16 7/350 2026-03-20 19:31 by zhukairuo
[考研] 085600材料与化工调剂 324分 +10 llllkkkhh 2026-03-18 12/600 2026-03-19 14:33 by llllkkkhh
[考研] 材料专硕306英一数二 +10 z1z2z3879 2026-03-16 13/650 2026-03-18 14:20 by 007_lilei
[考研] 302求调剂 +4 小贾同学123 2026-03-15 8/400 2026-03-17 10:33 by 小贾同学123
信息提示
请填处理意见