Matlab中ODE45中的“容差”是什么?

计算科学 matlab 误差估计
2021-12-04 17:12:56

ode45在 Matlab 中使用过。而且,据我了解,4 和 5 分别用于全局和局部错误的顺序。所以,全局误差大约为h4并且本地错误大约是h5, 在哪里h是步长。

但是,还有一个名为 的选项RelTol,您可以通过以下方式设置它:odeset('RelTol',1e-6)

在这种情况下,如何将相对容差设置为低于全局或局部误差?还是这个名字ode45有点用词不当?

1个回答

而且,据我了解,4 和 5 分别用于全局和局部错误的顺序。

你的理解是错误的。

Runge-Kutta 顺序方法的局部误差n正比于hn.

所做的是ode45使用两种分别具有 4 和 5 局部阶数的 Runge-Kutta 方法来估计(一步)解(因此是这些数字)。它使用 5方法的解来估计 ODE 的解,并使用两种方法的解之间的差异来估计积分的误差。请注意,这只是一个估计——如果你知道精确的错误,你也已经精确地解决了这个问题。为了节省计算时间,设计了两种 Runge-Kutta 方法,以便它们使用通用的中间结果。其他嵌入的 Runge-Kutta 方法(即 Runge-Kutta 方法用两个数字表示顺序)的工作方式类似。

然后使用误差估计来优化步长:如果误差高于给定的容差(对于每个组件),则减小步长直到误差低于该容差。如果误差远低于该容差,则增加步长以节省时间。这个公差是

AbsToli+RelTol·|y^i|,

在哪里|y^i|是估计的解决方案。