![]() |
寻找对派生精度具有宽松态度的ODE积分器/求解器
我有一个(一阶)ODE系统,其计算导数相当昂贵。
但是,导数可以在给定的误差范围内便宜得多,这是因为导数是从收敛序列计算得出的,并且可以将范围放在掉项的最大贡献上,或者可以使用存储在kd-tree中的预先计算的范围信息/ octree查找表。 不幸的是,我找不到能够从中受益的通用ODE求解器。他们似乎都只是给您坐标,并希望得到准确的结果。 (请记住,我不是ODE的专家;我对Runge-Kutta(《数值食谱》一书的材料,LSODE和Gnu科学图书馆的求解器很熟悉)。 例如,对于我见过的所有求解器,您提供一个derivs回调函数,该函数接受t和x数组,并返回dx/dt数组;但理想情况下,我正在寻找一种能够给回调t , x s [I]和可接受的错误的数组[/I] ,并接收回dx/dt_min和dx/dt_max数组,并保证派生范围在所需的精度内。 (可能存在许多同样有用的变体)。 任何考虑到此类问题而设计的求解器的指针,或解决问题的替代方法(我无法相信我是第一个想要这样的东西的人)将不胜感激。 回答: 再三考虑之后,我想到间隔算法可能是关键。我的derivs函数基本上返回间隔。使用间隔算术的积分器将保持x为间隔。我感兴趣的是在最后的t处获得x上的足够小的误差。一种明显的方法是迭代地重新整合,提高样本的质量,每次迭代引入最多的错误,直到最终获得可接受的范围的结果(尽管听起来这可能会“治愈得比疾病还糟”)。整体效率)。我怀疑自适应步长控制可以很好地适合这种方案,选择步长以使“隐式”离散化误差可与“显式误差”(即区间范围)相提并论。 无论如何,谷歌搜索“节点求解器间隔算术”或仅仅是“间隔节点”都会增加很多有趣的新内容和相关内容(尤其是[URL="http://www.cas.mcmaster.ca/%7Enedialk/Software/VNODE/VNODE.shtml"]VNODE[/URL]及其参考)。 [url=https://stackoverflow.com/questions/501111]更多&回答...[/url] |
所有时间均为北京时间。现在的时间是 23:19。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.