Euler法

对于常微分方程(ODE)问题:

其中 $f(t, u)$ 关于 $u$ 满足 Lipschitz 条件

欧拉法推导:

连续问题离散化

设真解为 $u(t)$。将区间 $[0, T]$ 离散化,令 $\displaystyle \frac{T}{N}=h$,其中 $h$ 为步长,且 $0 = t_0 < t_1 < \cdots < t_N = T$,$t_n=nh$

已知 $u(t_0)=u_0$,$u’(t_0)=f(t_0, u_0)$

利用 Taylor 展开推导近似值

对 $u(t_1)$ 进行 Taylor 展开:$\displaystyle u(t_1)=u(t_0 + h)=u(t_0)+u’(t_0)h+\frac{u’’(\xi)}{2!}h^2$ ,其中 $\displaystyle \xi\in(t_0,t_1)$ ,记为 $\displaystyle u(t_0)+u’(t_0)h + R_0$ ,$\displaystyle R_0 = O(h^2)$ 是二阶小量

略去二阶小量 $R_0$ ,得到 $u(t_1)$ 的近似值 $\displaystyle u_1 = u_0+hf(t_0, u_0)\approx u(t_1)$

类似地,可得到 $u(t_2)$ 的近似值 $u_2 = u_1+hf(t_1, u_1)$

以此类推,得到递推公式:$u_{n + 1}=u_n+hf(t_n, u_n)$ ,这就是 Euler 法

显格式与隐格式

显格式

$u_{n+1} = u_n + h f(t_n, u_n)$,变形为 $\displaystyle \frac{u_{n + 1}-u_n}{h}=f(t_n, u_n)$ ,即用差商 $\displaystyle \frac{u_{n + 1}-u_n}{h}$(向前差分)代替导数 $u’(t_n)$

隐格式

$\displaystyle \frac{u_n - u_{n - 1}}{h}=f(t_n, u_n)$ ,也可写成 $\displaystyle u_{n + 1}=u_n+hf(t_{n + 1}, u_{n + 1})$ ,这里用向后差分 $\displaystyle \frac{u_n - u_{n - 1}}{h}$ 近似 $u’(t_n)$ ,隐格式一般需要迭代求解

迭代公式为

数值积分法:ODE 数值解的等价积分形式

常微分方程 $u’(t)=f(t, u(t))$ ,$u(t_0)$ 已知,其等价积分形式为:

通过对积分项进行不同的数值近似,可得到不同的数值解法

矩形公式

左矩形公式(显式 Euler 法)

公式:$\displaystyle u_1 = u_0 + f(t_0, u_0)h$

原理:用左端点的函数值 $f(t_0, u_0)$ 近似积分区间 $[t_0, t_0 + h]$ 上 $\displaystyle f(\tau, u(\tau))$ 的平均值,来计算积分 $\displaystyle \int_{t_0}^{t_0 + h}f(\tau, u(\tau))d\tau\approx hf(t_0, u_0)$ ,进而得到 $u(t_1)$($t_1=t_0 + h$ )的近似值 $u_1$

右矩形公式(隐式 Euler 法)

公式:$\displaystyle u_1 = u_0 + f(t_1, u_1)h$

原理:用右端点的函数值 $f(t_1, u_1)$ 近似积分区间 $[t_0, t_0 + h]$ 上 $f(\tau, u(\tau))$ 的平均值 ,但由于 $u_1$ 未知,该方法是隐式的,一般需迭代求解

梯形公式(改进 Euler 法)

公式:$\displaystyle u_{n + 1}=u_n+\frac{h}{2}[f(t_n, u_n)+f(t_{n + 1}, u_{n + 1})]$

原理:用梯形面积公式近似积分,即把积分区间 $[t_n, t_{n + 1}]$ 上 $f(\tau, u(\tau))$ 的平均值近似为 $\displaystyle \frac{1}{2}[f(t_n, u_n)+f(t_{n + 1}, u_{n + 1})]$ ,从而计算积分

Euler 误差分析

数值解与精确解

数值解:显式 Euler 法的迭代公式为 $\displaystyle u_{n + 1}=u_n+hf(t_n, u_n)$

精确解:对 $u(t_{n + 1})$ 在 $t_n$ 处进行 Taylor 展开,$\displaystyle u(t_{n + 1})=u(t_n)+hf(t_n, u(t_n))+\frac{u’’(t_n)}{2!}h^2+\frac{u’’’(\xi)}{3!}h^3$ ,$\xi\in(t_n, t_{n + 1})$

局部截断误差

定义:把精确解 $u(t)$ 代入差分格式得到的余项。差分格式 $\displaystyle L[u_n, h]=u_{n + 1}-u_n - hf(t_n, u_n)$ ,将真解代入得 $\displaystyle L[u(t_n), h]=u(t_{n + 1})-u(t_n)-hf(t_n, u(t_n))\neq0$ ,余项 $\displaystyle R_n=\frac{u’’(t_n)}{2!}h^2+\frac{u’’’(\xi)}{3!}h^3$ 。当 $h\to0$ 时,Euler 法的局部截断误差为 $O(h^2)$ ,意味着随着步长 $h$ 趋于 0 ,误差主要由 $h^2$ 阶项决定

改进 Euler 法局部截断误差

利用积分中值定理相关结论

将真解代入改进 Euler 法格式 $\displaystyle u_{n + 1}-u_n-\frac{h}{2}[f(t_n, u_n)+f(t_{n + 1}, u_{n + 1})]=0$ ,得到余项为 $\displaystyle -\frac{h^3}{12}u’’’(\xi)$ ,$\xi\in(t_n, t_{n + 1})$ ,所以改进 Euler 法的局部截断误差为 $O(h^3)$ ,比 Euler 法精度更高

整体误差

记 $\displaystyle e_n = u(t_n)-u_n$

Euler 法

作差:

记 $R=\max|R_n|$,由于 $f$ 满足 Lipschitz 条件得:

由 $\ln(1 + Lh)\leq Lh$,$\Rightarrow n\ln(1 + Lh)\leq n\cdot Lh\leq L(T - t_0)$,$\Rightarrow(1 + Lh)^n\leq e^{L(T - t_0)}$

于是

对 Euler 法,可取 $e_0 = 0$,$R = ch^2$

即 $e_n = o(h)$

注意比较局部截断误差与整体误差的关系

稳定性

定义:中途误差是否连续地依赖于初始值误差。初始误差包括测量误差、舍入误差

Euler 法稳定性分析

从初值 $u_0$,$v_0$ 算出的节点值分别记为 ${u_n}$,${v_n}$。

两式相减,记 $e_n = u_n - v_n$,则

由 Lipschitz 条件,有

递推可得:

这表明 $e_n$ 连续地依赖于初始误差 $e_0$,即 Euler 法稳定

线性多步法

数值积分法

数值积分公式:

思想:适当地选取节点,用 Lagrange 插值多项式代替 $f(t,u(t))$

Adams 外插法(显式)

节点:$t_{n - k},\cdots,t_n$($k + 1$ 个点),对应 $k + 1$ 步法

使用 $k$ 次 Lagrange 插值多项式

Adams 内插法(隐式)

节点:$\displaystyle t_{n - k},\cdots,t_n,t_{n + 1}$(未知 $t_{n + 1}$ 故仍为 $k + 1$ 步法)

使用 $k + 1$ 次 Lagrange 插值多项式

Adams 外插法

插值分解

将 $f(t, u(t))$ 分解为 $\displaystyle f(t, u(t)) = L_{n,k}(t) + r_{n,k}(t)$ ,其中 $\displaystyle L_{n,k}(t)$ 是插值多项式,$\displaystyle r_{n,k}(t)$ 是插值余项

根据积分的线性性质,有

记为式 ①

离散格式

是通过用插值多项式 $L_{n,k}(t)$ 近似 $f(t, u(t))$ 并积分得到的数值求解公式

局部截断误差

局部截断误差 $\displaystyle R_{n,k}=\int_{t_n}^{t_{n + 1}}r_{n,k}(t)dt$ ,它衡量了用插值多项式近似 $f(t, u(t))$ 并积分时产生的误差

Lagrange 插值公式回顾

Lagrange 插值多项式

对于给定节点 $x_0, x_1,\cdots, x_k$ ,函数 $f(x)$ 的 $k$ 次 Lagrange 插值多项式为 $\displaystyle L_k(x)=\sum_{i = 0}^{k}f(x_i)l_i(x)$ ,其中 $l_i(x)$ 是 Lagrange 基函数

Newton 型插值多项式

向前形式:

向后形式: ,其中 $\displaystyle f[x_i,\cdots,x_j]$ 是 $i$ 阶差商

差分

向前差分:$\displaystyle \Delta_+ f_j = f_{j + 1}-f_j$

向后差分:$\displaystyle \Delta_- f_j = f_j - f_{j - 1}$ ,且 $\displaystyle \Delta_-^k f_j=\Delta_+^k f_{-k}$

采用 Newton 向后插值公式

Newton 向后插值公式 $L_{n,k}(t)$ 是基于节点处函数值 $g(t_i)$ 及其差商,通过差商的线性组合来近似 $g(t)$ ,进而用于数值积分求解 $u(t_{n + 1})$ ,展开形式是利用差商和节点信息逐步构建,以逼近 $g(t)$ 在区间 $[t_n, t_{n + 1}]$ 上的积分

设 $t_{n - k},\cdots,t_{n - 1},t_n$ 为节点,令 $f(t, u(t)) = g(t)$ ,$t = t_n+\tau h$,$\tau\in[0,1]$

Newton 向后插值多项式展开

把 $L_{n,k}(t)$ 在 $t = t_n+\tau h$ 处展开,$\displaystyle g_{n - j}=f_{n - j}=f(t_{n - j},u_{n - j})$ 是节点处的函数值。利用向前差分 $\displaystyle \Delta_+^i g_{n - i}$ 来构建插值多项式,$\displaystyle \binom{s}{j}=\frac{s(s - 1)\cdots(s - j + 1)}{j!}$ ,$\displaystyle \binom{s}{0}=1$ ,得到 $L_{n,k}(t)$ 的具体形式

代入积分并化简

将 $L_{n,k}(t)$ 代入 $\displaystyle u_{n + 1}=u_n+\int_{t_n}^{t_{n + 1}}L_{n,k}(t)dt$ ,通过换元 $t = t_n+\tau h$ ,$dt = h d\tau$ ,把积分区间从 $[t_n,t_{n + 1}]$ 转换为 $[0,1]$ 。然后对积分进行计算,提出与 $j$ 无关的项 $h$ 和 $\Delta_+^j f_{n - j}$ ,得到 $\displaystyle u_{n + 1}=u_n + h\sum_{j = 0}^{k}a_j\Delta_+^j f_{n - j}$ ,其中记 $\displaystyle a_j = (-1)^j\int_{0}^{1}\binom{-\tau}{j}d\tau$

具体步骤如下:

计算系数(生成函数法)

把 $(-1)^j(-\tau)(-\tau - 1)\cdots(-\tau - j + 1)$ 看成是 $(1 - t)^{-\tau}$ 关于 $t$ 在 $t = 0$ 处的导数

利用泰勒级数展开

对上述展开式的左右两端在 $[0,1]$ 上积分并进行一系列变形

变形得

代入得

比较系数得到 $a_j$

计算 $\Delta_+^j f_{n-j}$

原理:利用向前差分算子 $\Delta_+$ 的性质,$\Delta_+=(S - I)$($S$ 为移位算子,$\displaystyle Sf_n = f_{n + 1}$ ,$I$ 为恒等算子 ),通过二项式定理 $\displaystyle (a + b)^j=\sum_{l = 0}^{j}C_{j}^{l}a^{j - l}b^{l}$ 展开 $(E - I)^j$ 来计算 $\Delta_+^j f_{n - j}$

具体实现步骤:

因而

其中记 $\displaystyle b_{kl}=\sum_{j = 0}^{k}(-1)^la_j\binom{j}{l}$

$k=0$:此时公式为 $\displaystyle u_{n + 1}=u_n+hf(t_n,u_n)$ ,这就是显式 Euler 法,它是 Adams 外插法的最简单形式,基于当前点的函数值来预估下一点的值

$k=1$:$\displaystyle u_{n + 1}=u_n+\frac{h}{2}(3f_n - f_{n - 1})$ ,利用前两个节点的函数值来计算下一个节点的数值解,相比 Euler 法考虑了更多历史信息

$k=2$:$\displaystyle u_{n + 1}=u_n+\frac{h}{12}(23f_n - 16f_{n - 1}+5f_{n - 2})$ ,使用了前三个节点的函数值,精度进一步提高

$k=3$:$\displaystyle u_{n + 1}=u_n+\frac{h}{24}(55f_n - 59f_{n - 1}+37f_{n - 2}-9f_{n - 3})$ ,借助更多历史节点信息来逼近真实解

Adams 外插法局部截断误差

插值余项公式:对于函数 $f(x)$ 的 $n$ 次插值多项式 $P_n(x)$

插值余项

应用到 Adams 外插法:这里 $g(t)=f(t,u(t))$ ,$L_{n,k}(t)$ 是插值多项式,$\displaystyle r_{n,k}(t)=g(t)-L_{n,k}(t)$ 为插值余项

根据插值余项公式

$\xi$ 与 $t$ 有关,局部截断误差就是对 $\displaystyle r_{n,k}(t)$ 在积分区间上积分产生的误差

将 $t = t_n+\tau h$ 代入插值余项表达式 $\displaystyle r_{n,k}(t)$ 。根据插值余项公式 $\displaystyle r_{n,k}(t)=\frac{(t - t_{n - k})(t - t_{n - k + 1})\cdots(t - t_n)}{(k + 1)!}u^{(k + 2)}(\xi)$ ,当 $t = t_n+\tau h$ 时,$\displaystyle t - t_{n - i}=\tau h + ih = (\tau + i)h$ ($i = 0,1,\cdots,k$ ),

代入后经过整理得到

进一步变形为

积分变换:已知 $\displaystyle R_{n,k}=\int_{t_n}^{t_{n + 1}}r_{n,k}(t)dt$ ,通过换元 $t = t_n+\tau h$ ,$dt = h d\tau$ ,积分区间从 $[t_n,t_{n + 1}]$ 变为 $[0,1]$

代入化简:将 $\displaystyle r_{n,k}(t_n+\tau h)=(-1)^{k + 1}\binom{-\tau}{k + 1}h^{k + 1}u^{(k + 2)}(\xi)$ 代入上式

得到

结果分析:由于 $\displaystyle u^{(k + 2)}(\xi)$ 在积分区间内有界(在一定条件下 ),令 $\displaystyle \alpha_{k + 1}=\int_{0}^{1}(-1)^{k + 1}\binom{-\tau}{k + 1}d\tau$

可知 $\displaystyle R_{n,k}=O(h^{k + 2})$ ,这表明 Adams 外插法的局部截断误差阶为 $h^{k + 2}$ ,即随着步长 $h$ 减小,误差以 $\displaystyle h^{k + 2}$ 的速度趋近于 0

Adams 内插法

Adams 内插法为隐格式

局部截断误差比外插法高一阶,为 $O(h^{k + 3})$

$k = 0, 1, 2, 3$的内插公式:

$k = 0$:$\displaystyle u_{n + 1} = u_n + hf_{n + 1}$ → 隐式 Euler

$k = 1$:$\displaystyle u_{n + 1} = u_n + \frac{h}{2}(f_{n + 1} + f_n)$ → 改进 Euler

$k = 2$:$\displaystyle u_{n + 1} = u_n + \frac{h}{12}(5f_{n + 1} + 8f_n - f_{n - 1})$

$k = 3$:$\displaystyle u_{n + 1} = u_n + \frac{h}{24}(9f_{n + 1} + 19f_n - 5f_{n - 1} + f_{n - 2})$

多步法一般形式:

由 $\displaystyle u_n, u_{n + 1}, \cdots, u_{n + k - 1}$ → $u_{n + k}$ (共 $k$ 个,即$k$步法)

Adams 方法:

注:$\alpha_k$ 总可取成 1,显方法 $\beta_k = 0$,隐方法 $\beta_k \neq 0$

实际计算时,初始 $u_0, u_1, \cdots, u_{k - 1}$,可由单步法算

待定系数法

将真解 $u(t)$ 代入格式:$\displaystyle L[u(t_n); h] = \sum_{j = 0}^{k} [\alpha_j u(t_{n + j}) - h\beta_j f(t_{n + j}, u(t_{n + j}))]$

为简便且讨论一般,在 $t_n$ 处作 Taylor 展开:

则:

其中:

若 $u(t)$ 有 $p + 2$ 次连续导数,则可选 $\alpha_j, \beta_j$

使得:

此时:

得到了 $p$ 阶 $k$ 步法:

局部截断误差为 $O(h^{p + 1})$
整体误差为 $O(h^p)$

相容性、稳定性和误差估计

k 步法

相容性

相容性:差分算子逼近微分算子

以 Euler 法为例

差分算子

差商算子

微分算子

Euler 法相容性

k 步法相容性

其中

特征多项式

第一特征多项式:

第二特征多项式:

定理3.1

其中:

稳定性

稳定性:解对初值的连续依赖性

k 步法:由初值 $u_0, u_1, \cdots, u_{k - 1}$ 得到 $u_n$ 。若 $u_0, u_1, \cdots, u_{k - 1}$ 有误差,$u_n$ 的误差是否会无限增长?

定义 3.2:若 $\exists \tau > 0, h_0 > 0$ ,使得当网格步长 $h$ 满足 $0 < h < h_0$ 时,对 $k$ 步法的任意两个解 ${u_n}$, ${v_n}$

都有

则称 $k$ 步法稳定

具体方法的误差递推关系

显式 Euler:

此为误差递推关系

隐式 Euler:

k 步法:

已知:由 $u_0, u_1, \cdots, u_{k - 1}$ 得到 $u_n$ ,满足

由 $v_0, v_1, \cdots, v_{k - 1}$ 得到 $v_n$ ,满足

记 $e_n = u_n - v_n$ ,则

记 $hb_n$ 为:

进一步得到

将 $k$ 个连续的 $e_i$ 构成向量形式:

类似数值代数中迭代法

关于 $C^n$ 有界性分析

特征方程

计算 $\det(C - \lambda I_k)$ ,其结果为

利用 Jordan 标准型计算

设 $\lambda_j$ 是 $C$ 的特征值,$\displaystyle x_j=(d_{k - 1},\cdots,d_0)^T$ 是相应特征向量 ,则有 $Cx_j=\lambda_jx_j$ ,由此推导出一系列等式:

进而得到

因而 $C$ 的每个特征值的特征子空间维数都是 1,即每个特征值几何重数为 1,每个特征值的 Jordan 块只有 1 块。记 $C$ 的 Jordan 标准型为 $J$

Jordan 块形式:$J$ 的 Jordan 块要么是 $\lambda$ ,要么是 $J_r(\lambda)$,$r$ 是 $\lambda$ 的重数

$\displaystyle C^n = PJ^nP^{-1}$ ,且 $J^n$ 也是分块矩阵,每一块形式为 $\lambda^n$ 或 $J_r^n$

对于 $J_r=\lambda I + S$ ,(其中 $S$ 是幂零矩阵)

利用二项式定理计算

这里 $\displaystyle C_{n}^{j}=\frac{n!}{j!(n - j)!}$

引理 1.1

$C^n$有界 $\Leftrightarrow |\lambda_j| \leq 1$ ,且若 $|\lambda_j| = 1$ ,则 $\lambda_j$ 是单根

$C^n$有极限 $\Leftrightarrow |\lambda_j| \leq 1$ ,且若 $|\lambda_j| = 1$ ,则 $\lambda_j$ 不仅是单根且 $\lambda_j = 1$

$C^n \to 0 \Leftrightarrow |\lambda_j| < 1$

定理:线性多步法稳定的充要条件

线性 $k$ 步法稳定 $\Leftrightarrow$ 第一特征多项式 $\rho(\lambda)$ 的根满足 $|\lambda| \leq 1$ ,且位于单位圆周上的根都是单根(即 $\rho(\lambda)$ 满足根条件

证明

必要性证明

将 $k$ 步法用于方程 $u’ = 0$ ,此时 $f(t, u) \equiv 0$ ,则 $\displaystyle \sum_{j = 0}^{k} \alpha_j u_{n + j} = 0$ ,${u_n = 0}$ 是上述方程的平凡解。

因为 $k$ 步法稳定,所以 $\exists \tau, h_0$ ,使得当 $0 < h < h_0$ 时,$\displaystyle \max_{n \leq \frac{T}{h}} |u_n| \leq \tau \max_{0 \leq j \leq k} |u_j|$ ,即 ${u_n}$ 关于 $n, h$ 一致有界。

又因为 $u_n = C^n u_0$ (这里 $\displaystyle u_0 = [u_{k - 1}, \cdots, u_0]^T$ ,$\displaystyle u_n = [u_{n + k - 1}, \cdots, u_n]^T$ ),所以 ${C^n}$ 一致有界,从而 $\rho(\lambda)$ 满足根条件。

充分性证明

设 ${u_n}, {v_n}$ 是 $k$ 步法的两个解,令 $e_n = u_n - v_n$ ,则

设 $B = \max{|\beta_0|, \cdots, |\beta_k|}$ ,由 $f$ 关于 $u$ 满足 Lipschitz 条件,可得

记 $\displaystyle E_n = (e_{n + k - 1}, \cdots, e_n)^T$ ,$\displaystyle B_n = (h\alpha_k^{-1}b_n, 0, \cdots, 0)^T$ ,则 $E_{n + 1} = CE_n + B_n$ ,进而有

由于 $\rho(\lambda)$ 满足根条件,所以 $|C^n| \leq M, \forall n$ ,且

经过推导可得

对 $\displaystyle \sum_{l = 0}^{n - 1} \sum_{j = 0}^{k} |e_{n - l - 1 + j}|$ 进行放缩:

利用向量范数性质,有

进一步得到

结合前面 $|E_n|$ 的表达式

在 $\displaystyle MBL|\alpha_k^{-1}| h_0 < 1$ 条件下,令 $\displaystyle K_1=\frac{M}{1 - M B L|\alpha_k^{-1}| h_0}$ ,$\displaystyle K_2 = K_1 M B L|\alpha_k^{-1}|(\sqrt{k}+1)$ ,可得

再由 Gronwall 不等式,得到

进而有

说明方法稳定

应用:Euler 法稳定性、Adams 外插和内插法稳定性

收敛性与误差估计

定义与设定:设真解 $u(t_n)$ 和数值解 $u_n$ 满足 :

令 $\displaystyle e_n = u(t_n) - u_n$

设 $\displaystyle R_n = C_{p + 1}h^{p + 1}$ ,记 $\displaystyle E_{n + 1} = CE_n + B^{\ast}_n$ ,其中 $\displaystyle B^{\ast}_n=(h\alpha_k^{-1}b^{\ast}_n, 0, \cdots, 0)^T$ ,且

定理

相容性 + 稳定性 $\Rightarrow$ 收敛。且若 $E_0 = 0$ ,则 $|E_n| \leq C h^p$ 。即当数值方法满足相容性(差分算子能逼近微分算子)和稳定性(解对初值连续依赖)时,随着步长 $h$ 趋于 0 ,数值解会收敛到真解 ,且在初始误差为 0 时,误差阶为 $O(h^p)$