Dark Hypernova
Science and Fiction

Euler, Runge-Kutta and Adams Methods

Euler 方法

利用目前的 y 和斜率来预测下一步的 y。

推广:

即,我们可以对 Euler 方法进行高阶修正。为什么这么说?我们可以分别对上式的左边和右边进行 Taylor 展开,然后对照,发现 P,Q 与 $\Delta t$ 的高阶项的系数有关。 用同样的方法,可以得出 A, B, P, Q 之间的关系(当保留二阶无穷小的时候)。

推导过程中可以注意到,P,Q 只会影响到三阶无穷小。

而且如果我们在推导中,只保留更低阶的无穷小(一阶无穷小),就回到 Euler 方法了。

Heun’s method

$A=1/2$ 时,对应的是 Heun’s method.

Heun's Method

这种方法正好是取了 $y_n$ 点的和 $y_{n+1}$ 两点的切线做了平均来预测下一步的函数值的。

二阶 Runge-Kutta 方法

二阶的 RK 方法,要求

A=0

这种方法是取了中点的。

四阶的 RK

太精确了。

Integral and Anam’s Mehtod

积分有没有用呢?

利用积分,将我们要解决的问题

写成

但是,问题在于,我们并不知道右侧的那个积分是如何解的,因为只有我们知道了 y 的精确形式,才能解这个积分。

在计算中,我们的方法是

$p(t,y)$ 是 $f(t,y)$ 的多项式的近似。

这是很合理的,因为 $[t_n, t_{n+1}]$ 是一段很小的间隔,所以 $f(t,y)$ 的变化不大,可以用多项式来近似。

Adams Time-Stepping Schemes

从上一节,我们了解到 Adam’s 方法实际上就是利用了积分,并且采用多项式来代替 y 的斜率。具体说来,Adam’s 方法根据所使用的多项式是否包含过去、现在、未来的点,有以下几种。

Adams-Bashforth

最简单的可以用来对 f(t,y) 做近似的多项式是常数,所以我们来试试常数。

把这个形式代入

中,

这正好回到了 Euler 方法。

如果我们用 即考虑斜率的影响。

得到

Adams Moulton

可以用未来、现在、过去的点来计算未来的点。

我们得到

可是 $ f(t_{n+1}, y_{n+1}) $ 是未知的,一种做法是用其它的方法先获得一个未来的点,例如用 Euler 法来算出一个未来的点,再把这个点代入到这种方法中。

为什么要多次一举呢?因为这种方法的稳定性很棒。

By OctoMiao

Last updated