实现自适应数值积分

时间:2016-04-09 18:48:43

标签: python algorithm ode numerical-integration numerical-stability

我编写了一个可以集成常微分方程系统的Python 3软件包。在写这篇文章时,我遇到了一个我似乎无法找到任何信息的问题。

问题:

基本上我有一个自适应算法,根据局部误差调整步长(实际方法是使用Cash-Karp系数实现RKF算法)并且在某一点之后,如果步长足够大,该方法将超过结束时间。

我的解决方案:

我已将其设置为如果当前步长将导致积分超过结束时间,那么我将步长设置为剩余时间值的一半。 在等式中:dt =(t_end - t_current)/ 2

但是,对于自适应算法中使用的相对误差的某些要求,这将导致时间步长变得微不足道。大约在1e-15的数量级,然后由于机器精度的限制而导致数值不稳定,因为t_current永远不会增加。

我的问题:

我想知道是否有更有效的方法来实现积分算法,以便结束时间相对于预期的结束时间精确到小数点后15位,而不会产生这样的数值不稳定性。

0 个答案:

没有答案