python的ODE求解器尊重周期性

问题描述

我想整合一个控制问题,即形式为 dx/dt = A.f(t) 的 ODE,其中 x(t) 是 R^3 中的函数,f(t) 是 R^4 中的函数,A 是矩阵 3x4。在我的特殊情况下,f(t) = F'(t),即函数 F 的时间导数。此外,F 是 1-周期的。因此,在区间 [0,1] 上对 ODE 进行积分应该再次产生起始位置。但是,solve_ivp 中的 scipy.integrate 之类的方法根本不尊重这种周期性(我已经尝试了所有可能的方法,例如 RK45,Radau,DOP853,LSODA)。

是否有一种特殊的 ODE 求解器可以高度精确地考虑这种周期性?

解决方法

无论如何,所有算法都会遭受精度损失,因此您很可能永远无法实现精确的周期性。尽管如此,您也可以尝试通过使用参数“atol”和“rtol”来提高积分的精度,这大致将每个时间步的积分误差保持在 (atol + rtol*y) 以下。您通常可以低至 atol=rtol=1e-14。