数学 - 微分方程数值解 - 第 1 章 一阶常微分方程初值问题 - 1.4 线性多步公式

1.4 线性多步法

单步法的一般形式为 \(y_{n+1} = y_{n} + h \varphi(x_n, y_n, x_{n+1}, y_{n+1}, h)\),显式单步法为 \(y_{n+1} = y_{n} + h \varphi(x_n, y_n, h)\),其中 \(\varphi\) 称为增量函数。

线性多步法一般形式:

\[y_{n+1} = \sum_{i=0}^r \alpha_i y_{n-i} + h \sum_{i=-1}^r \beta_i f_{n-i} \tag{1.4.1} \]

其中 \(f_{n-i} = f(x_{n-i}, y_{n-i})\)\(\alpha_i\)\(\beta_i\) 为待定系数。

显然,当 \(\beta_{-1} = 0\) 是公式为显式格式,\(\beta_{-1} \neq 0\) 是公式为隐式格式。

例如,显式线性三步法的形式为

\[y_{n+1} = \sum_{i=0}^2 \alpha_i y_{n-i} + h \sum_{i=0}^2 \beta_i f_{n-i} \]

几何意义:

1.4.1 线性多部公式导出

对线性多步法的一般形式 \((1.4.1)\) 做 Taylor 展开求解局部截断误差。

考虑 \(y_{n+1}\)

\[y_{n+1} = \sum_{i=0}^r \alpha_i y_{n-i} + h \sum_{i=-1}^r \beta_i f_{n-i} \]

展开 \(y_{n+1}\) 之前,要估计 \(y_{n-i}\)\(f_{n-i}\)

\[\begin{align*} y_{n-i} & = y(x_n - ih) = y_n + h (-i) y'_n + \frac{h^2}{2} (-i)^2 y''_n + \cdots + \frac{h^p}{p \, !} (-i)^p y^{(p)}_n + O(h^{p+1}) \\ f_{n-i} & = y'(x_{n-i}) = y_n' + h (-i) y''_n + \frac{h^2}{2} (-i)^2 y'''_n + \cdots + \frac{h^{p - 1}}{(p - 1) \, !} (-i)^{p-1} y^{(p)}_n + O(h^p) \\ f_{n+1} & = f(x_{n+1}, y(x_{n+1})) = y'(x_{n+1}) = y_n' + h y''_n + \frac{h^2}{2} y'''_n + \cdots + \frac{h^{p - 1}}{(p - 1) \, !} y^{(p)}_n + O(h^p) \end{align*} \]

因此得到 \(y_{n+1}\)

\[y_{n+1} = \left[ \sum_{i=0}^r \alpha_i \right] y_n + h \left[ \sum_{i=1}^r (-i) \alpha_i + \sum_{i=-1}^r \beta_i \right] y'_n + \frac{h^2}{2} \left[ \sum_{i=1}^r (-i)^2 \alpha_i + 2\sum_{i=-1}^r (-i) \beta_i \right] y''_n + \cdots + \frac{h^p}{p \, !} \left[ \sum_{i=1}^r (-i)^p \alpha_i + p \sum_{i=-1}^r (-i)^{p-1} \beta_i \right] y^{(p)}_n + O(h^{p+1}) \]

再考虑 \(y(x_{n+1})\)

\[y(x_{n+1}) = y_n + h y'_n + \frac{h^2}{2 \, !} y''_n + \cdots + \frac{h^p}{p \, !} y^{(p)}_n + O(h^{p+1}) \]

要求局部截断误差最小,需待定参数满足:

\[\left\{ \begin{align*} & \sum_{i=0}^r \alpha_i = 1 \\ & \sum_{i=1}^r (-1)^k \alpha_i + k \sum_{i=-1}^r (-i)^{k-1} \beta_i = 1, \quad k = 1,\cdots,p \end{align*} \right. \]

\(p\) 阶公式的局部截断误差为

\[R_{n+1} = \frac{h^{p+1}}{(p+1) \, !} \left[ 1 - \sum_{i=1}^r (-i)^{p+1} \alpha_i - (p+1) \sum_{i=-1}^r (-i)^{p} \beta_i \right] y^{(p+1)}_n + O(h^{p+2}) \]

1.4.2 常用的线性多步公式

(1) Adams 公式

四阶 \(Adams\) 显式公式:

\[y_{n+1} = y_n + \frac{h}{4} (55 f_n - 59 f_{n-1} + 37 f_{n-2} - 9 f_{n-3}) \]

局部截断误差为:

\[R_{n+1} = \frac{251}{720} h^5 y^{(5)}_n + O(h^6) \]

四阶 \(Adams\) 隐式公式:

\[y_{n+1} = y_n + \frac{h}{24} (9 f_{n+1} + 19 f_{n} - 5 f_{n-1} + f_{n-2}) \]

局部截断误差为:

\[R_{n+1} = -\frac{19}{720} h^5 y^{(5)}_n + O(h^6) \]

(2) Milne 公式

\(Milne\) 公式:

\[y_{n+1} = y_{n-3} + \frac{4}{3} h (2 f_n - f_{n-1} + 2 f_{n-2}) \]

局部截断误差为:

\[R_{n+1} = \frac{14}{45} h^5 y^{(5)}_n + O(h^6) \]

(3) Hamming 公式

\(Hamming\) 公式:

\[y_{n+1} = \frac{1}{8} (9 y_{n} - y_{n-2}) + \frac{3}{8} h (f_{n+1} + 2 f_{n} - f_{n-1}) \]

局部截断误差为:

\[R_{n+1} = -\frac{1}{40} h^5 y^{(5)}_n + O(h^6) \]

一些说明:

  • 线性多步公式不能自启动,一般需要用同阶的单步法求得初值后再用线性多步公式计算。

  • 一般地,同阶隐式公式比同阶显式公式精确,但隐式公式计算复杂,需要迭代法求解。

1.4.3 预测-校正系统

\(Adams\) 预测-校正公式:

\[\left\{ \begin{align*} & \overline{y}_{n+1} = y_n + \frac{h}{24} (55 f_n - 59 f_{n-1} + 37 f_{n-2} - 9 f_{n-3})\\ & y_{n+1} = y_n + \frac{h}{24} (9 f(x_{n+1}, \overline{y}_{n+1}) + 19 f_{n} - 5 f_{n-1} + f_{n-2}) \end{align*} \right. \]

\(Milne\) - \(Hamming\) 预测-校正公式:

\[\left\{ \begin{align*} & \overline{y}_{n+1} = y_{n-3} + \frac{4}{3} h (2 f_n - f_{n-1} + 2 f_{n-2}) \\ & y_{n+1} = \frac{1}{8} (9 y_{n} - y_{n-2}) + \frac{3}{8} h (f(x_{n+1}, \overline{y}_{n+1}) + 2 f_{n} - f_{n-1}) \end{align*} \right. \]

例 1.4.1

讨论二步公式 \(y_{n+1}=y_{n-1} + \frac{h}{3}(f_{n+1} + 4f_{n} + f_{n-1})\) 怎么由数值积分公式导出,并求出它的局部截断误差,判断是几阶公式。

解:将初值问题转化为等价的积分形式

\[y(x_{n+1}) - y(x_{n-1}) = \int_{x_{n-1}}^{x_{n+1}} f(x, y) \, \mathrm{d} x \]

\(F(x) = f(x, y(x))\),利用 Simpson 公式

\[y(x_{n+1}) - y(x_{n-1}) \approx \frac{h}{3} (F(x_{n-1})+ 4F(x_n) + F(x_{n+1})) \]

由此得求解格式:

\[y_{n+1}=y_{n-1} + \frac{h}{3} (f_{n-1} + 4f_{n} + f_{n+1}) \]

其中 \(f_k = f(x_k, y_k)\)\(k=n-1,n,n+1\)

然后计算局部截断误差。

先考虑 \(y_{n+1}\),有迭代格式可知需先估计 \(y_{n-1}\)\(f_{n-1}\)\(f_n\)\(f_{n+1}\)

\[\begin{align*} y_{n-1} & = y(x_n - h) = y_n - hy_n' + \frac{h^2}{2} y''_n - \frac{h^3}{3 \, !} y'''_n + \frac{h^4}{4 \, !} y^{(4)}_n - \frac{h^5}{5 \, !} y^{(5)}_n + O(h^6) \\ f_{n-1} & = f(x_{n-1}, y(x_{n-1})) = y'(x_{n-1}) = y'(x_n - h) = y'_n - h y''_n + \frac{h^2}{2} y'''_n - \frac{h^3}{3 \, !} y^{(4)}_n + \frac{h^4}{4 \, !} y^{(5)}_n + O(h^5) \\ f_{n+1} & = f(x_{n+1}, y(x_{n+1})) = y'(x_{n+1}) = y'(x_n + h) = y'_n + h y''_n + \frac{h^2}{2} y'''_n + \frac{h^3}{3 \, !} y^{(4)}_n + \frac{h^4}{4 \, !} y^{(5)}_n + O(h^5) \\ \end{align*} \]

可得 \(y_{n+1}\)

\[\begin{align*} y_{n+1} & = y_{n-1} + \frac{h}{3} (f_{n+1} + 4f_{n} + f_{n-1}) \\ & = y_n + hy_n' + \frac{h^2}{2} y''_n + \frac{h^3}{3 \, !} y'''_n + \frac{h^4}{4 \, !} y^{(4)}_n + \frac{7 h^5}{360} y^{(5)}_n + O(h^6) \end{align*} \]

考虑 \(y(x_{n+1})\)

\[y(x_{n+1}) = y(x_n + h) = y_n + h y'_n + \frac{h^2}{2 \, !} y''_n + \cdots + \frac{h^5}{5 \, !} y^{(5)}_n + O(h^{6}) \]

可得局部截断误差为

\[R_{n+1} = y(x_{n+1}) - y_{n+1} = (\frac{1}{5 \, !} - \frac{7}{360} ) h^5 y_n^{(5)} + O(h^{6}) = -\frac{h^5 }{90} y_n^{(5)} + O(h^{6}) \]

解毕。

posted on 2022-03-05 16:26  Black_x  阅读(654)  评论(0)    收藏  举报