小编loi*_*wer的帖子

Python GEKKO:模拟化学反应

我正在使用 Python GEKKO 来模拟化学反应,可以这样描述:

1 -> 2 -> 3 -> 4

副反应如下:

2 -> 5

3 -> 5

产物(4)是稳定的。这导致了以下一组 ODE(速率方程),具有速率常数 k 和组分 c(i) 的浓度。

m.Equation(c_1p.dt() == -k1*c_1p)
m.Equation(c_2p.dt() == k1*c_1p - (k21 + k22)*c_2p)
m.Equation(c_3p.dt() == k21*c_2p - (k31 + k32)*c_3p)
m.Equation(c_4p.dt() == k31*c_3p)
Run Code Online (Sandbox Code Playgroud)

我在 GEKKO 中实现了这些方程来估计速率常数。我将测量值​​初始化为参数,将预测值初始化为变量,将速率常数初始化为固定值(有限制)。目标函数是最小二乘法。这工作正常,结果在预期范围内(R2 > 0.99)。

问题是,当我尝试通过使用计算出的速率常数来求解 ODE(使用 GEKKO 或 scipy odeint)来验证这些结果时,我得到了不同的结果(见图 1)。点是测量值,X 标记预测值,虚线表示使用 odeint 使用计算的速率常数计算的曲线。

浓度图

问题是,这种偏差从何而来?我找不到来源。

谢谢!

from gekko import GEKKO
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint

m = GEKKO(remote=False) …
Run Code Online (Sandbox Code Playgroud)

python gekko

5
推荐指数
1
解决办法
354
查看次数

标签 统计

gekko ×1

python ×1