有没有办法像在 Mathematica 中那样在 scipy 中设置和求解多重数值积分?

Is there a way to setup and solve multiple numerical integration in scipy like in mathematica?

我想在 Python;

中对以下公式进行数值求解

在Mathematica 中,您可以输入多个微分方程并同时求解。有没有办法用 Scipy 做类似的事情?

编辑:是的,我已经看过 scipy.integrate.odeint,但我仍然不确定如何同时求解相互关联的多个方程。有人对此有什么建议吗?

在 SciPy 的集成包中获得战利品:

https://docs.scipy.org/doc/scipy/reference/integrate.html

特别是在 odeint 求解 ODE 的系统:

https://docs.scipy.org/doc/scipy/reference/generated/scipy.integrate.odeint.html#scipy.integrate.odeint

最终我弄清楚了自己,我正在为其他可能像我一样无能为力的人写下来; 在 odeint 中,您给出三个参数 modelyt,其中 model 是一个接受 y 和 [=14 的函数=] 然后 return dydt,yy 的初始值,而 t 是您要积分的变量。如果你有多个相互依赖的微分方程,你可以将它们全部传递给odeint。就我而言,

t = np.linspace(0, 20) # range of t
y0 = [No_0, Na_0, Ni_0, Nn_0] # initial condition for each Ns
def model(y, t):
    No, Na, Ni, Nn = y
    dNodt = -k_oa * No
    dNadt = k_oa * No - k_ai * Na
    dNidt = k_ai * Na - k_in * Ni
    dNndt = k_in * Ni
    return [dNodt, dNadt, dNidt, dNndt]
y = odeint(model, y0, t)

您可以在您定义的模型中定义多个要求解的微分方程,并将所有物种的初始值一起传递给 odeint