我有一个(一阶)ODE 系统,计算导数相当昂贵。
然而,在给定的误差范围内,导数的计算成本要低得多,因为导数是从收敛序列计算的,并且边界可以放在丢弃项的最大贡献上,或者通过使用存储在 kd-tree 中的预先计算的范围信息/octree 查找表。
不幸的是,我还没有找到任何可以从中受益的通用 ODE 求解器;他们似乎都只是给你坐标并想要一个准确的结果。(请注意,我不是 ODE 方面的专家;我熟悉 Runge-Kutta、Numerical Recipies 书中的材料、LSODE 和 Gnu 科学图书馆的求解器)。
即对于我见过的所有求解器,您提供了一个derivs
回调函数,接受 at
和一个数组x
,并返回一个返回数组dx/dt
;但理想情况下,我正在寻找一个能提供回调t
、x
s和一系列可接受的错误,并接收dx/dt_min
和dx/dt_max
返回数组的方法,其导数范围保证在所需的精度范围内。(可能有许多同样有用的变体)。
任何考虑到这种事情而设计的求解器的指针,或解决问题的替代方法(我不敢相信我是第一个想要这样的东西的人)将不胜感激。