来自scypy python模块的odeint()如何工作?

时间:2018-04-12 14:44:22

标签: python scipy numerical-methods differential-equations runge-kutta

我是一名有兴趣以数字方式解决ODE的物理学生。我通常使用Runge-Kutta方法在C中编写自己的求解器。

我最近学习了Python,并使用SciPy的odeint函数来解决ODE。但我担心函数算法是如何工作的,因为它不采用步长参数。那么,我怎样才能了解它是如何工作的?我怎么知道他们的结果的精确度是什么?

我咨询了this documentation, 但它没有提供太多信息,我也不太了解他们描述的可选参数。

1 个答案:

答案 0 :(得分:5)

SciPy有三个用于集成ODE的模块:

请注意,在询问第一个模块时,您使用了第二个模块。

这些解算器的所有都会调整步长。 这意味着他们估计积分误差,例如,通过比较两个简单积分器的结果(它们智能地交织在一起以节省运行时间)。 然后使用该估计来调整步长,使得估计的误差低于由参数rtolatol指定的用户定义的阈值。 这些参数允许您控制精度。