动力学参数拟合问题求助

来源:matlab  › 求助  › 倒序浏览
  • 回答数

    2

  • 浏览数

    2257

  • 收藏数

    0

作者:花妹妹 发表于 2020-5-22 11:34:38
跳转到指定楼层

目前在做反应动力学拟合,可是实验室无人会,只能自己摸索,目前知道了动力学方程和一些数据,想拟合出参数,求各位大佬帮忙matlab或1stop拟合一下,有搞动力学的同学可以一起讨论一下,真是太难了,麻烦各位了!!!下面是我初步写的1stopt程序,结果跑出来的数据根本不能用,想请教下大家拟合度低究竟是模型参数太多的原因还是算法有问题,请大神帮帮忙!!
Parameters k(1:10),k1=[0,],k2=[0,],k3=[0,],k4=[0,],k5=[0,],k6=[0,],k7=[0,],k8=[0,],k9=[0,],k10=[0,];
variables t,c(1:5);
ODEFunction
c1'=k1*c2*(c2+c3+c4)/(1+k2*(c2*(c2+c3+c4))^0.5+k3*c2+k4*c3+k5*c4+k6*c5)^2+k7*(c2*(c2+c3+c3))^0.5/(1+k2*(c2*(c2+c3+c3))^0.5+k3*c2+k4*c3+k5*c4+k6*c5)/(1+k8)^2;
c2'=k1*c2*(c2+c3+c4)/(1+k2*(c2*(c2+c3+c3))^0.5+k3*c2+k4*c3+k5*c4+k6*c5)^2-k9*c2/(1+k2*(c2*(c2+c3+c3))^0.5+k3*c2+k4*c3+k5*c4+k6*c5)/(1+k8)^2;
c3'=(k9*c2-k10*c3)/(1+k2*(c2*(c2+c3+c3))^0.5+k3*c2+k4*c3+k5*c4+k6*c5)/(1+k8)^2;
c4'=k10*c3/(1+k2*(c2*(c2+c3+c3))^0.5+k3*c2+k4*c3+k5*c4+k6*c5)/(1+k8)^2;
c5'=k7*(c2*(c2+c3+c3))^0.5/(1+k2*(c2*(c2+c3+c3))^0.5+k3*c2+k4*c3+k5*c4+k6*c5)/(1+k8)^2;
data;//
//t       c1       c2       c3      c4      c5
10         5.0249         0.0000         0.9794         0.0000         0.0000
20         4.8894         0.0000         1.3043         0.0000         0.0000
30         4.7004         0.0000         1.5203         0.0000         0.0000
45         4.4588         0.0000         1.7503         0.0000         0.0000
60         4.3103         0.0000         1.7336         0.0000         0.0000
75         4.2412         0.0000         1.7511         0.0000         0.0000
90         4.0658         0.0000         1.7148         0.0000         0.0000
105         3.9587         0.0000         1.7531         0.0000         0.0000
125         3.7984         0.1646         1.7507         0.1039         0.0000
140         3.5823         0.2002         1.6003         0.1406         0.0000
160         3.2773         0.2529         1.4905         0.2211         0.0000
175         2.9786         0.3404         1.4087         0.3433         0.0000
190         2.6945         0.4994         1.3894         0.6631         0.0000
210         2.3301         0.7709         0.9335         0.8718         0.0000
230         2.0823         0.8962         0.7938         1.1992         0.0000
250         1.3216         1.0824         0.3107         1.3042         0.0448
280         0.5662         1.7420         0.1108         1.4905         0.1773
300         0.2618         1.8755         0.0000         1.4112         0.3343
320         0.0000         2.1430         0.0000         0.7001         0.6788
340         0.0000         2.1758         0.0000         0.6303         1.3191
分享:
回复

使用道具

该用户从未签到

中级会员

Rank: 3Rank: 3

积分
619
极客币
91
主题
9
帖子
75
注册时间
2018-10-12
在线时间
3 小时
性别
保密
发表于 2020-5-22 11:35:09 | 显示全部楼层
1.首先要确定你所有的微分方程是不是都写对了?比如括号成对等这问题。2.你的微分方程组等号的左边项应该是反应速率。而这个反应速率在求解动力学参数时,应该是一个实验测到的已知数或者是一个可以解得的数值。用无梯度反应器可以直接测到反应速率。用管式等温反应器则需要对微分方程进行积分。这种情况下,积分反应器的进出口条件都是实验测到的,是已知的。而参数估计要做的就是:找到一组参数,它能使微分方程从已知的反应器进口条件积分到出口处的结果,与实测的出口组分浓度之间的误差为极小。3.所以,上述情况,一种是解非线性代数方程组;另一种是解非线性微分方程组。看你用的是哪一种实验反应器。4.给待求参数的初值时,要避免直接给“零”值。需要时,给个非常小的正值,例如1.0e-6。上面这些,与你用何种编程语言无关。
回复

使用道具 举报

该用户从未签到

中级会员

Rank: 3Rank: 3

积分
619
极客币
91
主题
9
帖子
75
注册时间
2018-10-12
在线时间
3 小时
性别
保密
发表于 2020-5-22 11:35:28 | 显示全部楼层
自己先检查下模型公式是否正确无误?数据是否也无问题?
回复

使用道具 举报

高级模式 评论
您需要登录后才可以回帖 登录 | 立即注册 微信登录