首页 > 解决方案 > GSL 上的自适应显式二阶龙格库塔方法

问题描述

GSL 中是否有内置的二阶显式 Runge Kutta 方案?我知道 gsl_odeiv2_step_rk2 函数是一个显式嵌入Runge-Kutta(2, 3) 方法,它收敛到我执行的所有测试的三阶方案。

任何人都可以确认(或纠正)我吗?

也有人可以请我指出 GSL 中的 EXPLICIT 2nd order RK step type 与自适应步进控制一起使用吗?

标签: gslrunge-kutta

解决方案


是的,gsl_odeiv2_step_rk2 使用包含显式中点方法作为嵌入方法的三阶龙格-库塔方法。Heun 方法和 Ralston 方法存在类似的扩展,请参阅https://www.math.auckland.ac.nz/~butcher/ODE-book-2008/Tutorials/low-order-RK.pdf中的 3 阶方法页面

GSL 实现使用外推变体,这是步长控制背后的基本思想的“错误”实现。这个基本思想是通过使用更高阶方法的估计来估计方法的误差,然后调整步长,以便估计的误差渐近地收敛到所要求的误差水平。因此,实现这一点的“正确”方法是采用二阶中点更新,而不是三阶更新。

或者换句话说,对于外推变体,虽然它使用更高阶的方法,因此通常给出的误差较低,但实际误差相对于误差容限没有下限,与此相关,不能保证步骤是针对方法的顺序和请求的错误级别最佳地采取的。


推荐阅读