24小时热门版块排行榜    

查看: 721  |  回复: 1
【悬赏金币】回答本帖问题,作者szy242424将赠送您 5 个金币

szy242424

新虫 (初入文坛)

[求助] matalb软件 ode23s,非线性最小二乘法模拟动力学参数 已有1人参与

function kk1
k0=[236,18,45.6,10,1.2,0.001,0.1,0.001,0.01,0.001,0.1,0.1];
lb=[236,18,45.6,10, 1.2, 0.001, 0.1,0.001,0.01,0.001,0.1,0.1];
ub=[inf,inf,inf,inf, 10.4,1.2, 2.4,1.2,0.8,0.1,4.5,4.5];
data=...
[0        0.562205        0        0        34.2775
6        0.618817941        0        0        33.9805
12        0.797936454        0        0        31.941
18        1.554008384        0.9935        0        28.739
24        2.141789344        1.3815        0        26.3835
30        2.543955264        1.5745        1.4795        23.8955
36        3.017273616        1.908        1.7625        21.334
42        3.295696176        2.9885        2.038        19.128
60        3.274041088        4.693        3.262        11.2065
66        3.4070652        5.1295        3.581        8.9005
72        3.753546608        5.6395        4.041        6.4395
84        3.595773824        6.6735        4.71        1.496
];


x0=data(1,2:end);
tspan =[0,6,12,18,24,30,36,42,60,66,72,84];
yexp = [data(2:end,2) data(2:end,3) data(2:end,4) data(2:end,5)  ];
ts=data(1:end,1);
[k,resnorm,residual,exitflag,output,lambda,jacobian] =lsqnonlin(@ObjFunc,k0,lb,ub,[],tspan,x0,yexp);
ci = nlparci(k,residual,jacobian);
fprintf('\n\n使用函数lsqnonlin()估计得到的参数值为:\n')
fprintf('\tk1 = %.9f ± %.9f\n',k(1),ci(1,2)-k(1))
fprintf('\tk2 = %.9f ± %.9f\n',k(2),ci(2,2)-k(2))
fprintf('\tk3 = %.9f ± %.9f\n',k(3),ci(3,2)-k(3))
fprintf('\tk4 = %.9f ± %.9f\n',k(4),ci(4,2)-k(4))
fprintf('\tk5 = %.9f ± %.9f\n',k(5),ci(5,2)-k(5))
fprintf('\tk6 = %.9f ± %.9f\n',k(6),ci(6,2)-k(6))
fprintf('\tk7 = %.9f ± %.9f\n',k(7),ci(7,2)-k(7))
fprintf('\tk8= %.9f ± %.9f\n',k(8),ci(8,2)-k(8))
fprintf('\tk9 = %.9f ± %.9f\n',k(9),ci(9,2)-k(9))
fprintf('\tk10 = %.9f ± %.9f\n',k(10),ci(10,2)-k(10))
fprintf('\tk11= %.9f ± %.9f\n',k(11),ci(11,2)-k(11))
fprintf('\tk12 = %.9f ± %.9f\n',k(12),ci(12,2)-k(12))
fprintf('  The sum of the squares is: %.9e\n\n',resnorm)
[ts, ys] = ode23s(@KineticsEqs,ts,x0,[],k);
yy = [data(:,2) data(:,3) data(:,4)  data(:,5)   ];
plot(ts,ys(:,1),'b',tspan,yy(:,1),'bo');
hold on
plot(ts,ys(:,2),'r',tspan,yy(:,2),'r*');
plot(ts,ys(:,3),'k',tspan,yy(:,3),'k+')
legend('DCW的计算值','DCW的实验值','SA的计算值','SA的实验值','AA的计算值','AA的实验值','X的计算值','X的实验值')
function f = ObjFunc(k,tspan,x0,yexp)           % 目标函数
[~, Xsim] = ode23s(@KineticsEqs,tspan,x0,[],k);
Xsim1=Xsim(:,1);%提取Xsim的第一列
Xsim2=Xsim(:,2);%提取Xsim的第二列
Xsim3=Xsim(:,3);%提取Xsim的第三列
Xsim4=Xsim(:,4);%提取Xsim的第四列

ysim(:,1) = Xsim1(2:end);%微分方程的第一个变量,从第二个解到最后一个解赋值给ysim的第一列
ysim(:,2) = Xsim2(2:end);%微分方程的第二个变量,从第二个解到最后一个解赋值给ysim的第二列
ysim(:,3) = Xsim3(2:end);%微分方程的第三个变量,从第二个解到最后一个解赋值给ysim的第三列
ysim(:,4) = Xsim4(2:end);%微分方程的第四个变量,从第二个解到最后一个解赋值给ysim的第四列
f = [(ysim(:,1)-yexp(:,1)) (ysim(:,2)-yexp(:,2)) (ysim(:,3)-yexp(:,3)) (ysim(:,4)-yexp(:,4))];
function dCdt = KineticsEqs(~,C,k)
% ODE模型方程,C1、C2、C3、C4分别为底物浓度、产物丁二酸浓度、产物乙酸浓度、DCW值,t为导数
dC1dt =(0.1933862*C(4)/(C(4)+0.78+C(4)^2/296.9)*(1-C(2)/k(1))^k(2)*(1-C(3)/k(3))^k(4))*C(1);
dC2dt =k(5)*dC1dt+k(6)*C(1);%第二个微分方程,等号前面是C(2)对t的微分
dC3dt =k(7)*dC1dt+k(8)*C(1);%第三个微分方程,等号前面是C(3)对t的微分
dC4dt =-((1/k(9))*dC1dt+k(10)*C(1)+(1/k(11))*dC2dt+(1/k(12))*dC3dt);
dCdt = [dC1dt; dC2dt;dC3dt;dC4dt];%微分方程组.

   各位大神,帮我看一下这个代码有什么错误没有,目标是用ode23s求解微分方程组,然后用非线性最小二乘模拟参数,急求回复,谢谢大家!
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
参考下面1stOpt计算的结果:

Root of Mean Square Error (RMSE): 0.673324275669162
Sum of Squared Residual: 19.9480855290377
Correlation Coef. (R): 0.983872215020488
R-Square: 0.968004535489321

Parameter                  Best Estimate
--------------------        -------------
k1        2255.98568602798
k2        2006.16856712862
k3        123314855.293705
k4        11.7085151403374
k5        1.20000000001939
k6        0.00942914835572298
k7        0.100000000023396
k8        0.0201718372859985
k9        0.799999999987507
k10        0.0999392603337909
k11        4.49999420593383
k12        0.75747434507548
2楼2021-03-10 10:18:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 szy242424 的主题更新
不应助 确定回帖应助 (注意:应助才可能被奖励,但不允许灌水,必须填写15个字符以上)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 求调剂 +6 博斯特525 2026-03-04 6/300 2026-03-04 16:09 by xxrvvv
[考研] 化学工程求调剂 +5 化工人999 2026-03-04 5/250 2026-03-04 16:02 by sslc1985
[考研] 一志愿314求调剂 +7 202111120625 2026-03-03 7/350 2026-03-04 15:56 by zhukairuo
[考研] 材料专硕290求调剂 +3 杰尼龟aaa 2026-03-04 3/150 2026-03-04 15:31 by syfwater
[考研] 264求调剂 +7 26调剂 2026-03-03 7/350 2026-03-04 02:51 by 无懈可击111
[考研] 0854总分272 +5 打小就是老实人 2026-03-02 6/300 2026-03-04 01:41 by ouhaiyu
[考研] 0703化学 学硕 理工科均可 不区分研究方向 总分279求调剂 +5 1一11 2026-03-03 5/250 2026-03-03 23:14 by zhukairuo
[考研] 环境调剂 +8 chenhanheng 2026-03-02 8/400 2026-03-03 22:13 by 刘兵
[考研] 298求调剂一志愿中海洋 +3 lour. 2026-03-03 3/150 2026-03-03 20:41 by gxg2025
[考研] 085700资环求调剂,初始279,六级已过,英语能力强 +3 085700资环调剂 2026-03-03 4/200 2026-03-03 19:10 by lature00
[考研] 085600材料与化工调剂 280分 +10 yyqqhh 2026-03-03 10/500 2026-03-03 18:37 by 386661696
[考研] 289求调剂 +7 BrightLL 2026-03-02 9/450 2026-03-03 16:02 by tgxtgxtgx9
[考研] 267求调剂 +6 钓鱼佬as 2026-03-02 6/300 2026-03-03 13:59 by 13589
[考研] 278求调剂 +3 满天星11_22 2026-03-02 3/150 2026-03-03 13:51 by Iveryant
[考研] 268求调剂 +6 好运连绵不绝 2026-03-02 6/300 2026-03-03 13:03 by 秋收
[考研] 0856调剂 +10 刘梦微 2026-02-28 10/500 2026-03-02 23:42 by hcy618
[考研] 285求调剂 +9 满头大汗的学生 2026-02-28 9/450 2026-03-02 20:29 by hypershenger
[考研] 化学,材料,环境类求调剂 +7 考研版棒棒 2026-03-02 7/350 2026-03-02 19:56 by hypershenger
[考研] 哈工大计算机刘劼团队招生 +4 hit_aiot 2026-03-01 6/300 2026-03-02 11:53 by 一声问好
[考研] 328求调剂 +3 aaadim 2026-03-01 5/250 2026-03-01 17:29 by njzyff
信息提示
请填处理意见