有没有办法像在 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 的系统:
最终我弄清楚了自己,我正在为其他可能像我一样无能为力的人写下来;
在 odeint
中,您给出三个参数 model
、y
和 t
,其中 model
是一个接受 y
和 [=14 的函数=] 然后 return dydt,y
是 y
的初始值,而 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
。
我想在 Python;
中对以下公式进行数值求解在Mathematica 中,您可以输入多个微分方程并同时求解。有没有办法用 Scipy 做类似的事情?
编辑:是的,我已经看过 scipy.integrate.odeint,但我仍然不确定如何同时求解相互关联的多个方程。有人对此有什么建议吗?
在 SciPy 的集成包中获得战利品:
https://docs.scipy.org/doc/scipy/reference/integrate.html
特别是在 odeint
求解 ODE 的系统:
最终我弄清楚了自己,我正在为其他可能像我一样无能为力的人写下来;
在 odeint
中,您给出三个参数 model
、y
和 t
,其中 model
是一个接受 y
和 [=14 的函数=] 然后 return dydt,y
是 y
的初始值,而 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
。