scipy.integrate.odeint和scipy.integrate.ode有什么区别?

18 投票
2 回答
7300 浏览
提问于 2025-04-18 01:16

我看过这些文档,里面提到 odeint 是“基于 ODEPACK 的 lsoda 的一个更简单的接口的积分器”。

那么,实际的区别是什么呢?在什么情况下使用其中一个会更合适呢?

2 个回答

0

我也在想同样的问题,后来发现scipy.integrate里还有另一个API可用。这个方法在文档里解释得很清楚。

这可能会吸引那些在比较odeint(复杂数用odeintw)和ode(复杂数用complex_ode)的人。

这个方法叫做scipy.integrate.solve_ivp,从scipy v1.0.0开始就可以用了:https://scipy.github.io/devdocs/generated/scipy.integrate.solve_ivp.html#scipy.integrate.solve_ivp。在这个求解器中,LSODA不能处理复杂数,但在我的情况下,BDF的速度更快。

14

如果你能用 odeint 来解决你的问题,我建议你使用它。这个函数就是用来通过 lsoda 方法来进行微分方程的积分。

如果你需要更多的选择,ode 是一个包含许多方法和求解器的类:

撰写回答