Raf*_*ael 3 python scipy numerical-methods differential-equations runge-kutta
我是一名有兴趣以数字方式解决ODE的物理学生.我通常使用Runge-Kutta方法在C中编写自己的求解器.
我最近学习了Python,并使用SciPy的odeint函数来解决ODE.但我担心函数算法是如何工作的,因为它不采用步长参数.那么,我怎样才能了解它是如何工作的?我怎么知道他们的结果的精确度是多少?
我查阅了这个文档,但它没有提供太多信息,我也不太了解他们描述的可选参数.
SciPy有三个用于集成ODE的模块:
scipy.integrate.odeint,它使用LSODA算法.scipy.integrate.ode,支持四种不同的后端(LSODA,DoPri5,DoP853和VODE).scipy.integrate.solve_ivp,支持五个后端(LSODA,DoPri5,Bogacki-Shampine,Radau和后向差分方法).请注意,在询问第一个模块时,您使用了第二个模块的文档.
所有这些求解器都适应步长.这意味着他们估计积分误差,例如,通过比较两个简单积分器(智能交织以节省运行时)的结果.然后将该估计用于调整步长,使得所估计的误差低于由参数指定的用户定义的阈值rtol和atol.这些参数允许您控制精度.
| 归档时间: |
|
| 查看次数: |
1189 次 |
| 最近记录: |