24小时热门版块排行榜    

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

自制奶酪

铜虫 (小有名气)

[求助] 用matlab求动力学参数已有2人参与

我不知道MATLAB怎么输入求动力学函数的方程,抄了木虫大佬的内容,请大家帮我把它弄到能运行出来,动力学参数拟合问题,求助大家~~~



function odes_fit
format long
clear all
clc
k0=[0 0 0 0 0 0 0 0];%参数初值
lb=[0 0 0 0 0 0 0 0];ub=[+inf +inf +inf +inf +inf +inf +inf +inf];%lb、ub:参数下限和上限
x0=[0 0 0 0 0];

data=...
    [0.5         1             1.5            2            3           4           5           6
          18.7    6.5    2.7    2.1   1.7   1.5   1.2   0.2;
          48.9    31.3   15.3   6.9   2.2   1.8   1.7   0.5;
          19.3    34.7   41.2   40.9   37.2   31.7   26.1   19.4;
          9.7    19.6    28.7   34.5   38.4   38.2   36.3   33.4;
          0.2    2.6    5.7    9.3   17.1   24.8   30.5   36.7;
];
x0=data(1,2:end);
tspan = [data(:,1)'];
yexp = [data(2:end,2) data(2:end,3) data(2:end,4) data(2:end,5) data(2:end,6) data(2:end,7) data(2:end,8)];
%使用函数fmincon()进行参数估计
[k,fval,flag]=fmincon(@ObjFunc4Fmincon,k0,[],[],[],[],lb,ub,[],[],x0,yexp);
fprintf('\n\n使用函数lsqnonlin()估计得到的参数值为:\n')
fprintf('\tk1 = %.9f \n',k(1))
fprintf('\tk2 = %.9f \n',k(2))
fprintf('\tk3 = %.9f \n',k(3))
fprintf('\tk4 = %.9f \n',k(4))
fprintf('\tk5 = %.9f \n',k(5))
fprintf('\tk6 = %.9f \n',k(6))
fprintf('The sum of the squares is:%.le\n\n',fval)
k_fmincon=k;
%使用函数lsqnonlin()进行参数估计
[k,resnorm,residual,exitflag,output,lambda,jacobian]=...
    lsqnonlin(@ObjFunc4LNL,k0,lb,ub,[],x0,yexp);
ci=nlparci(k,residual,jacobian);
fprintf('\n\n使用函数lsqnonlin()估计得到的参数值:\n'),output
%以函数fmincon()估计得到的结果为初值,使用函数lsqnonlin()进行参数估计
k0=k_fmincon;
[k,resnorm,residual,exitflag,output,lambda,jacobian]=lsqnonlin(@ObjFunc4LNL,k0,lb,ub,[],x0,yexp);
ci=nlparci(k,residual,jacobian);
fprintf('\n\n以fmincon()的结果为初值,使用函数lsqnonlin()估计得到的参数值:\n')
output
figure(1)

ts=0(max(tspan)-min(tspan))/100):max(tspan);
[ts, ys] = ode45(@KineticsEqs,ts,x0,[],k);
yy = [data(:,2) data(:,3) data(:,4) data(:,5) data(:,6)];
figure(1)
plot(ts,ys(:,1),'b',tspan,yy(:,1),'bo');
figure(2)
plot(ts,ys(:,2),'r',tspan,yy(:,2),'ro');
figure(3)
plot(ts,ys(:,3),'k',tspan,yy(:,3),'ko');
figure(4)
plot(ts,ys(:,4),'g',tspan,yy(:,4),'ko');
figure(5)
plot(ts,ys(:,4),'g',tspan,yy(:,4),'ko');
figure(6)
plot(ts,ys(:,6),'m',tspan,yy(:,6),'mo');
%legend('C1的计算值','C1的实验值','C2的计算值','C2的实验值','C3的计算值','C3的实验值','C4的计算值','C4的实验值','C5的计算值','C5的实验值','C6的计算值','Location','best');



function f = ObjFunc(k,tspan,x0,yexp)           % 目标函数
[t, Xsim] = ode45(@KineticsEqs,tspan,x0,[],k);
Xsim1=Xsim(:,1);
Xsim2=Xsim(:,2);
Xsim3=Xsim(:,3);
Xsim4=Xsim(:,4);
Xsim5=Xsim(:,5);
Xsim6=Xsim(:,6);

ysim(:,1) = Xsim1(2:end);
ysim(:,2) = Xsim2(2:end);
ysim(:,3) = Xsim3(2:end);
ysim(:,4) = Xsim4(2:end);
ysim(:,5) = Xsim5(2:end);
ysim(:,6) = Xsim6(2:end);



f = [(ysim(:,1)-yexp(:,1)) (ysim(:,2)-yexp(:,2)) (ysim(:,3)-yexp(:,3)) (ysim(:,5)-yexp(:,5)) ...
    (ysim(:,6)-yexp(:,6))];

function dCdt = KineticsEqs(t,C,k)              % ODE模型方程
C1=C(1);C2=C(2);C3=C(3);C4=C(4);C5=C(5);C6=C(6);
k1=k(1);k2=k(2);k3=k(3);k4=k(4);k5=k(5);k6=k(6);k7=k(7);
dC1dt = -k1*C1-k7*C1;
dC2dt = k1*C1-k2*C2-k5*C2;
dC3dt = k2*C2-k3*C3-k6*C3;
dC4dt = k3*C3-k4*C5;
dC5dt = k4*C5;
dC6dt = k5*C2+k6*C3+k7*C1;

dCdt = [dC1dt;dC2dt;dC3dt;dC4dt;dC5dt;dC6dt]; @beefly
回复此楼
简单快乐
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

流浪在地球

新虫 (初入文坛)

5楼2022-11-17 13:58:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 自制奶酪 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[有机交流] TsCl保护羟基为什么不反应 +4 853015158 2024-05-21 13/650 2024-05-22 10:30 by czyzsu
[硕博家园] 2024/2025碳纳米材料方向博士/科研助理申请 +4 小二仙 2024-05-21 7/350 2024-05-22 09:51 by 呼呼一哈黑
[基金申请] 审不上青基又非升即走的青椒 和 牢里踩缝纫机的犯人哪个活的更舒服一点? +15 非非飞远了 2024-05-20 18/900 2024-05-22 09:38 by Sun_1234
[找工作] 浙江的高校现在门槛都这么高吗 +12 dadqweq_qw 2024-05-16 12/600 2024-05-21 22:30 by foolishmani
[论文投稿] SCI论文寻合作者,可以让出一作,深度学习方向。 +3 枯禅 2024-05-21 3/150 2024-05-21 21:46 by lizhengke06
[无机/物化] 请问什么溶剂能溶解二氧化锰 (金币+5) +4 这是春天 2024-05-15 5/250 2024-05-21 18:24 by 这是春天
[博后之家] 山东大学(青岛)“天然药物生物智造”课题组 招聘“博士后”(年薪20.4-55.6万元) +3 第二种态度 2024-05-18 6/300 2024-05-21 15:37 by 安小樱
[硕博家园] 民办高校入职后稳定吗? +16 905452934 2024-05-16 24/1200 2024-05-21 15:29 by given898
[基金申请] 这个模块怎么成了烧香拜佛的地方了 +7 shrz98 2024-05-18 7/350 2024-05-21 10:26 by lancet0903
[硕博家园] 海外博士,国内博后找工作求建议 +8 905452934 2024-05-16 22/1100 2024-05-20 21:42 by littlezl
[有机交流] 除DMSO +5 Spiralup 2024-05-15 6/300 2024-05-20 17:49 by 刘洪振
[基金申请] 基金评审 +4 阿呆不呆 2024-05-20 4/200 2024-05-20 15:10 by 一路向东
[考博] 25年博士申请 +6 lixinmiao9 2024-05-18 6/300 2024-05-20 11:19 by 裴先生533
[考博] 【2025 申博】材料或者冶金工程 +4 枫落孤城 2024-05-19 5/250 2024-05-20 10:52 by 枫落孤城
[基金申请] 数理学部函评几号结束? +6 科研孤勇者 2024-05-16 7/350 2024-05-20 09:05 by 6543yes
[教师之家] “直接受聘正高专业技术职务”怎么理解 +8 ZHONGWU_U 2024-05-17 10/500 2024-05-19 18:29 by Quakerbird
[论文投稿] 推荐转投( transfer pending)是否有用? 50+3 lily5289 2024-05-17 7/350 2024-05-19 15:11 by wanghuawei
[论文投稿] 投稿成功后又想撤回 +5 otani 2024-05-16 5/250 2024-05-17 16:02 by topedit
[电化学] 锂离子电池石墨负极用 1M LiPF6 in DEC:EC=1:1 Vol% 可以吗? 50+3 fffhhhhh 2024-05-15 8/400 2024-05-17 14:57 by 多点关心多点i
[教师之家] 问题已解觉,谢谢大家关注! +7 lzgj258 2024-05-15 11/550 2024-05-15 19:15 by 环境检测2024
信息提示
请填处理意见