24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2137  |  回复: 6

Brono博博

铁虫 (初入文坛)

[求助] 动力学参数拟合问题求助已有3人参与

目前在做反应动力学拟合,可是实验室无人会,只能自己摸索,目前知道了动力学方程和一些数据,想拟合出参数,求各位大佬帮忙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
360         0.0000         2.1846         0.0000         0.4146         1.7942
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
月只蓝: 金币+1, 鼓励交流 2020-01-29 17:57:01
独孤神宇: 金币+1, 鼓励交流 2020-02-01 15:43:58
Brono博博: 金币+3, 有帮助 2020-02-02 22:00:04
自己先检查下模型公式是否正确无误?数据是否也无问题?
2楼2020-01-29 14:48:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lvdq44

木虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
独孤神宇: 金币+5, 鼓励交流 2020-02-01 15:43:48
Brono博博: 金币+7, ★★★很有帮助, 谢谢您! 2020-02-02 21:28:17
引用回帖:
2楼: Originally posted by dingd at 2020-01-29 14:48:56
自己先检查下模型公式是否正确无误?数据是否也无问题?

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

发自小木虫Android客户端

» 本帖已获得的红花(最新10朵)

3楼2020-02-01 13:49:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Brono博博

铁虫 (初入文坛)

送红花一朵
引用回帖:
3楼: Originally posted by lvdq44 at 2020-02-01 13:49:21
1.首先要确定你所有的微分方程是不是都写对了?比如括号成对等这问题。2.你的微分方程组等号的左边项应该是反应速率。而这个反应速率在求解动力学参数时,应该是一个实验测到的已知数或者是一个可以解得的数值。用 ...

谢谢您的指导!还是有个问题想请教您,我的反应动力学模型是基于羟醛缩合加氢过程集成一步的反应模型,即整个反应体系包含的是两个独立的反应步骤,即先进行羟醛缩合其次对缩合产物进行加氢,以往的研究基本上是分开段分别进行动力学的研究,这样研究的结果较好,根据经验羟醛缩合步为速率控制步骤,那么我这种集成研究是否会对整个体系的动力学研究有影响呢?
对您提出问题的回复:我是在Parr高压在线取样反应釜上进行的动力学研究,反应速率是对微分方程积分进而求得的,所以求解的是非线性微分方程组,但结果求出来的拟合线基本都是直线,这与实测各物质浓度变化规律根本不符,所以我想除了模型不合适外还可能是拟合计算方法有着较大的纰漏(因为数据拟合这方面从来没接触过)。最后还是谢谢您的回复,感谢!!
4楼2020-02-02 22:00:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Brono博博

铁虫 (初入文坛)

引用回帖:
2楼: Originally posted by dingd at 2020-01-29 14:48:56
自己先检查下模型公式是否正确无误?数据是否也无问题?

模型公式和数据应该是没问题的
5楼2020-02-02 22:02:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

独孤神宇

版主 (知名作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★
Brono博博: 金币+7, ★★★很有帮助 2020-02-05 21:29:18
Parameters k(1:10);
ParameterDomain = [0,];

参数比较多,微分方程拟合计算比较慢,一般迭代几次就可以大致预判结果了。多算几次试试。。

» 本帖已获得的红花(最新10朵)

数值计算
6楼2020-02-02 22:06:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Brono博博

铁虫 (初入文坛)

送红花一朵
引用回帖:
6楼: Originally posted by 独孤神宇 at 2020-02-02 22:06:39
Parameters k(1:10);
ParameterDomain = ;

参数比较多,微分方程拟合计算比较慢,一般迭代几次就可以大致预判结果了。多算几次试试。。

好的谢谢您!
7楼2020-02-05 21:29:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 Brono博博 的主题更新
信息提示
请填处理意见