固定数量的RHS评估的最佳ODE方法


14

在实践中,数值求解运行时IVP X 0= X 0 通常通过评估右手侧(RHS)的持续时间支配 ˚F。因此,让我们假设所有其他操作都是即时的(即没有计算成本)。如果用于解决IVP整体运行时受到限制,那么这是相当于限制性的评估的数目 ˚F一些 Ñ Ñ

x˙(t)=f(t,x(t)) for t[t0,t1]
x(t0)=x0
ffNN

我们只对最终值感兴趣。x(t1)

我正在寻找理论和实践结果,以帮助我在这种情况下选择最佳的ODE方法。

例如,如果那么我们可以使用两个显式欧拉步长t 1 - t 0/ 2或一个宽度t 1 - t 0步长的中点方法求解IVP 。我现在还不清楚哪一个更可取。对于更大的N,当然也可以考虑多步方法,迭代的Runge-Kutta方案等。N=2(t1t0)/2t1t0N

我正在寻找的结果类似于例如正交规则的结果:我们可以选择权重{ w i }和关联点{ x i },这样正交规则n i = 1 w iX 是精确的对所有多项式使得d Ë 2 ñ - 1n{wi}{xi}i=1nwig(xi)gdeg(g)2n1

因此,鉴于允许的RHS 评估数量有限,我正在寻找ODE方法全局精度的上限或下限。如果边界仅对某些类的RHS成立,或对解x施加其他约束,就可以了(就像正交规则的结果一样,该规则仅在一定程度上适用于多项式)。fx

编辑:一些背景信息:这是用于硬实时应用程序,即结果必须在已知的截止日期之前可用。因此,作为主要成本因素的RHS评估数量N的限制。通常,我们的问题比较僵硬,相对较小。x(t1)N

EDIT2:不幸的是我没有精确的时序要求,但是可以安全地假设会很小(肯定小于100,可能更接近10)。考虑到实时性要求,我们必须在模型的精度(更好的模型导致更长的RHS执行时间,从而降低N)与ODE方法的精度(更好的方法需要更高的方法)之间进行权衡N的值)。NNN


固定步长Runge-Kutta方法与Newton-Cotes方法的通常对应关系适用于将RK方法应用于IVP ;例如,将经典的四阶方法应用于该IVP等效于对f x 执行Simpson规则。y=f(x)f(x)
JM

@JM:我知道。我仅打算将正交规则用作在函数评估数量有限的情况下针对一组特定输入表征数字方法精度的示例。除此之外,我对“真正的” ODE感兴趣,即那些不简化为标准集成的ODE。
弗洛里安·布鲁克

1
这变得越来越有趣。现在数字本身并不代表任何意义。什么可能是有帮助的是要知道λ Ñ / Ť,其中Ť是积分区间的长度和λ是的Lipschitz常数˚F相对于X。这将告诉我们问题的严重程度。假设它很僵硬,则可能的选择是二阶BDF方法。NλN/TTλfx
David Ketcheson

@DavidKetcheson:我对为给定问题选择合适方法的一般方法而不是针对特定问题的最优方法更感兴趣。我们有大量的模型,这些模型在刚度和时序要求方面有很大差异。
弗洛里安·布鲁克

您说非常昂贵。你能算出一个雅可比行列吗?可以校正主刚度的一些近似值呢?如果您的问题非常僵硬,并且无法纠正它,则您的身体状况不佳。f
杰德·布朗

Answers:


7

我认为,回答您的问题的关键参考是Hosea和Shampine撰写的这篇论文。现在,我将提供一些背景知识。

通常,在对IVP进行数值积分时可能会使用的步长受稳定性或准确性的限制。如果要在稳定性方面选择最佳的求解器,则需要考虑绝对稳定性区域。对于一步方法,这是

S={zC:|P(z)|1}.

这里是该方法的稳定性功能; 参见例如Hairer等人的文章。等 为稳定的必要条件是,λ ħ š其中λ范围以上的雅可比的特征值˚Fħ是步长。对于非线性问题,这并不总是足够的条件,但通常是一个很好的经验法则,并在实践中使用。P(z)λhSλfh

对于发现(显式)方法的问题的广泛处理,该方法允许较大的稳定步长,请参阅我的这篇关于稳定性多项式的文章以及关于Runge-Kutta方法针对可压缩流体模拟的优化的文章

如果您发现最大的稳定步长已经为您提供足够的精度,那么稳定性就是您的关注点。另一方面,步长大小可能会受到精度要求的限制。通常要做的是本地错误控制。该解决方案是使用两种方法计算的,它们的差异被用作对精度较低的方法的估计。自适应选择步长,以尽可能接近规定的公差。

两种理论方法是预测准确性效率的关键。第一个是方法的精确度,它描述了当步长减小时误差接近零的速率。第二个是准确性效率指数(请参见上面第一句话中的Hosea和Shampine论文),该指数考虑了误差项中出现的常数,并允许在相同顺序的方法之间进行比较。

可以使用NodePy以简单,自动化的方式计算多种方法的准确性和稳定性(免责声明:NodePy由我开发)。


谢谢。Hosea和Shampine的论文确实非常有趣。您知道僵化问题的类似结果吗?我知道人们通常会使用隐式方法,但是这些方法对RHS评估的数量没有先验限制,因此在我的案例中它们很少使用。
弗洛里安·布鲁克

我不知道像这样的僵化问题,但我怀疑有些东西存在。就像您说的那样,使用隐式方法时,这个问题更加微妙。一种方法可能是使用Rosenbrock方法,该方法可以很好地处理刚性问题,但是具有固定数量的RHS评估。
大卫·凯奇森

6

在这个方向上没有很多结果,因为它不仅比固定精度还难,因为出于稳定性考虑,您通常会选择比所需精度小的时间步长。因此,结果分为刚性和非刚性两种情况。前者的时间步长和RHS评估要求通常不受准确性的支配,而后者则由准确性决定。

我将重点介绍显式方法,因为隐式情况远不那么明显,您将需要使用多少RHS评估。这完全取决于您决定如何求解结果系统。

对于非刚性系统:

明确的Runge-Kutta方法具有阶段性限制,对于这些方法来说,要达到一定的精度顺序需要多少阶段(RHS评估)。在四阶之后,级数超过精度的阶数,并且视差继续增长。屠夫的ODE大书:http : //books.google.com/books/about/Numerical_Methods_for_Ordinary_Different.html? id= opd2NkBmMxsC

在解释其中一些“不存在”证明方面做得很好。

您的正交规则示例导致了诸如Adams-bashforth之类的多步类型方法,或者导致了现在称为频谱延迟校正方法的方法。对于adams-bashforth,您每个步骤只需要进行一次RHS评估,但是由于这些方法的稳定性区域通常很小,因此您在RHS评估方面通常要完成与Runge-Kutta方法相同的工作量。订购。

这是有关频谱延迟校正的论文:

https://www.google.com/search?q=spectral+deferred+correction&aq=f&oq=spectral+deferred+correction&aqs=chrome.0.57j0l2j62.3336j0&sourceid=chrome&ie=UTF-8

我不确定这些集成方法如何与标准的显式方法相提并论,它们通常需要更多的内存才能将解决方案状态保存在正交节点上,因此我从未亲自使用它们。

对于刚性系统:

虽然有“优化的”时间步长,但是关于这些变量能获得多好的精确的理论结果不幸地仅限于一些简单的案例(甚至那些事实证明不是很琐碎的工作)。三个标准结果说,对于龙格-库塔法与阶段:最负实轴可以包括在它的稳定性区域是长度的间隔2 s ^ 2,最虚轴,它可以包含是长度的区间小号- 如图1所示,它可以包含的与假想轴线相切的最大圆具有半径S(所有这些圆也是互斥的)。S2S2S1S


2
可能发生的事情是,使用可变步长(甚至可变顺序)方法可能比顽固地坚持固定步长方法更有效。例如,可以考虑使用Bulirsch-Stoer这样的外推方法:在某些步骤中进行一些评估,然后根据这些步骤的结果(表面上)建立更准确的估计。
JM

真正。实际上,许多最佳方法在某种意义上等同于另一个时间步长的可变步长形式。例如,可以将Runge-Kutta-Chebshev视为前向Euler,将可变的时间步长作为Chebyshev点。
Reid.Atcheson

@JM:是的。但是,除了数值实验(鉴于大量可能的方法,这将非常涉及),是否有一种方法可以通过RHS评估的数量来判断这些方法的准确性?
弗洛里安·布鲁克

@Florian,不是一般。我想你听说过洛伦兹方程式吗?
JM

1
@JM:是的:)这就是为什么我提到正交示例的原因,其中使用原始问题空间的子集(多项式)来测量准确性。我对仅适用于某些问题子集的结果感到满意。
弗洛里安·布鲁克

3

1014f(x)

当然也有例外(非常大的系统,非常僵硬的系统),但是社区中普遍的看法是,为“标准”系统设计ODE求解器的问题已得到解决。因此,我认为您提出的问题不是一个很有趣的问题,它解决了ODE求解器设计中不再重要的一个组件。这也可以解释缺乏有关该主题的文献。


+1。每当有人问高效的ODE求解器时,我只是假设他们对源自PDE半离散化或大型n体问题的大型ODE系统感兴趣。
David Ketcheson

您能解释一下这与我的问题有什么关系吗?我看不到这种联系,因为我对评估f(x)不是免费而是相当昂贵的情况感兴趣,因此评估数量有限。
弗洛里安·布鲁克

@DavidKetcheson:情况并非如此。相反,我们对弱硬件(嵌入式设备)有非常严格的时序要求(硬实时)。ODE系统本身相对较小。
弗洛里安·布鲁克

@FlorianBrucker我想我可能误解了您的问题。不是说您不在乎函数评估,而是说函数评估的数量是有限的。我想问题是:是ñ大还是小?因为ODE求解器的开发一直以最小化为指导ñ 保持误差数十年不变,至少在渐近范围内 ñ我们知道最好的方法:具有自适应时间步长的高阶方法(例如RK45)。对于这些,也很明显ñ误差越小。
Wolfgang Bangerth,

@FlorianBrucker:我认为还不太清楚的是,我们知道的相同方法对于渐近较大是否有效 ñ 也是小孩子的最佳选择 ññ<1000。换句话说,您需要根据可承受的功能评估次数告诉我们一些有关您的预算的信息。
Wolfgang Bangerth

1

My reasoning is the following. Since your problems are stiff and not big then most probably you should use some implicit method. If you use implicit method then you solve at least one linear system on each step. It means that if the Jacobian is not structured then each step will take O(dim3) or O(dim2) flops on each step (depending on how frequently you LU-decompose the Jacobian), aside from evaluating the RHS.

So the first point is to make sure if your RHS is really more expensive than the underlying linear algebra.

The second point: it is known from literature that solvers based on "expensive" methods (i. e. explicit RK methods) sometimes perform faster than "cheaper" ones (explicit multistep methods).

Summing up, I think that you should not only consider the RHS evaluations count.


You're correct that there's more to execution time and accuracy than the number of RHS evaluations. However, for the other factors (e.g. the linear algebra) there is a lot of material on execution speed vs. problem size. Hence my focus on N in this question.
Florian Brucker
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.