切换科目
重点科目
主要科目
次要科目
科数网
首页
刷题
学习
VIP会员
赞助
组卷
集合
教材
VIP
写作
游客,
登录
注册
在线学习
数值分析
第六篇 常微分方程的数值解法
线性多步法
最后
更新:
2026-06-29 13:00
查看:
3
次
纠错
评论(0)
课件
开VIP
线性多步法
8.4 线性多步法 前面介绍的方法,统称为单步法,就是在计算 $y_{n+1}$ 时,只用到前面一步 $y_n$ 的值.本节我们将介绍利用前边已经算出来的若干个值 $y_{n-k}, y_{n-k+1}, \cdots, y_{n-1}, y_n$ 来求得 $y_{n+1}$的高精度公式一一线性多步方法.下面我们来看一种比较简单的方法. 如果初值问题 $$ \left\{\begin{array}{l} y^{\prime}=f(x, y), \\ y\left(x_0\right)=y_0 \end{array}\right. $$ 与积分方程 $$ \begin{equation*} y\left(x_{n+1}\right)=y\left(x_n\right)+\int_{x_n}^{x_{n+1}} f(x, y(x)) \mathrm{d} x, \quad n=0,1,2, \cdots \tag{8.37} \end{equation*} $$ 等价,则我们可以用一个插值多项式 $P(x)$ 来代替(8.37)中的被积函数 $f(x, y)$ ,然后用数值积分方法 $$ \begin{equation*} y_{n+1}=y_n+\int_{x_n}^{k_{n+1}} P(x) \mathrm{d} x \tag{8.38} \end{equation*} $$ 代替式(8.37)进行计算.由于选取不同的数值积分(或不同的插值多项式),就会得出不同的数值解法,所以我们可以得到类型比较丰富的数值微分方法。比如,若选择单点积分(常数函数),我们可以得到左矩形公式、右矩形公式、中点公式等,若选择两点积分关系(线性函数),则可以得到梯形公式或预估校正公式等。 这里我们讨论另一类叫亚当斯(Adams)方法,它包含一组显式方法和一组隐式方法。显式方法是亚当斯-巴什福斯(Adams-Bashforth)方法,隐式方法是亚当斯-莫尔顿(Adams-Moulton)方法。为方便起见,在不引起混淆的情况下,后面将亚当斯-巴什福斯方法直接叫亚当斯显式公式,而把亚当斯-莫尔顿方法叫亚当斯隐式公式. 8.4.1 亚当斯显式公式 对关系式(8.37),假设在点 $x_{n-k}, k=0,1,2, \cdots, p$ ,有精确解 $y\left(x_{n-k}\right)$ ,我们可以构造一个 $p$ 次拉格朗日插值多项式 $P(x)$ 来近似 $f(x, y)$ 。比如取基函数为 $$ \begin{equation*} L_k(x)=\prod_{i=0, i \neq k}^p \frac{x-x_{n-i}}{x_{n-k}-x_{n-i}} . \tag{8.39} \end{equation*} $$ 然后令 $$ P(x)=\sum_{k=0}^p L_k(x) f\left(x_{n-k}, y\left(x_{n-k}\right)\right), $$ 则积分关系(8.37)可由式(8.38)来近似,即 $$ \begin{equation*} y\left(x_{n+1}\right)=y\left(x_n\right)+\int_{x_n}^{x_{n+1}} \sum_{k=0}^p L_k(x) f\left(x_{n-k}, y\left(x_{n-k}\right)\right) \mathrm{d} x+R_p\left(x_{n+1}\right), \tag{8.40} \end{equation*} $$ 其中 $$ \begin{equation*} R_p\left(x_{n+1}\right)=\int_{x_n}^{x_{n+1}} \frac{1}{(p+1)!}\left(x-x_n\right)\left(x-x_{n-1}\right) \cdots\left(x-x_{n-p}\right) y^{(p+2)}\left(\theta_{h, x}\right) \mathrm{d} x . \tag{8.41} \end{equation*} $$ 假设 $y^{(p+2)}(x)$ 在区间 $\left[x_n, x_{n+1}\right]$ 上连续,则存在一个数 $\xi_n$ ,使得 $$ R_p\left(x_{n+1}\right)=y^{(p+2)}\left(\xi_n\right) \int_{x_n}^{x_{n+1}} \frac{1}{(p+1)!}\left(x-x_n\right)\left(x-x_{n-1}\right) \cdots\left(x-x_{n-p}\right) \mathrm{d} x $$ 若令 $$ r_p=\int_{x_n}^{x_{n+1}} \frac{1}{(p+1)!}\left(x-x_n\right)\left(x-x_{n-1}\right) \cdots\left(x-x_{n-p}\right) \mathrm{d} x, $$ 则式(8.41)可记为 $R_p\left(x_{n+1}\right)=r_p y^{(p+2)}\left(\xi_n\right)$ . 这样一来,表达式(8.40)可以简化为 $$ y\left(x_{n+1}\right)=y\left(x_n\right)+\sum_{k=0}^p \lambda_k f\left(x_{n-k}, y\left(x_{n-k}\right)\right)+r_p y^{(p+2)}\left(\xi_n\right) $$ 其中 $$ \lambda_k=\int_{x_n}^{x_{n+1}} L_k(x) \mathrm{d} x $$ 通过去除残差项并将 $y\left(x_n\right)$ 置为近似值 $y_n$ ,我们得到如下的数值方法 $$ y_{n+1}=y_n+\sum_{k=0}^p \lambda_k f\left(t_{n-k}, y_{n-k}\right) $$ 该方法即为 $p+1$ 阶的亚当斯-巴什福斯方法.为简单起见,一般记 $f_{n-k}=f\left(t_{n-k}, y_{n-k}\right)$ . 如果采取间距为 $h$ 的等距节点网格,则系数 $\lambda_k, R_p$ 的公式可以简化,如表 8.4所示.  表8.4中这些方法都是显式方法,使用 $p+1$ 个节点,具有 $p+1$ 阶精度.例如实践中二阶显式方法常写为 $$ \begin{equation*} y_{n+1}=y_n+\frac{h}{2}\left(3 f_n-f_{n-1}\right) . \tag{8.42} \end{equation*} $$ 三阶方法为 $$ \begin{equation*} y_{n+1}=y_n+\frac{h}{12}\left(23 f_n-16 f_{n-1}+5 f_{n-2}\right) \tag{8.43} \end{equation*} $$ 四阶方法为 $$ \begin{equation*} y_{n+1}=y_n+\frac{h}{24}\left(55 f_n-59 f_{n-1}+37 f_{n-2}-9 f_{n-3}\right) \tag{8.44} \end{equation*} $$ 8.4.2 亚当斯隐式公式 和亚当斯-巴什福斯方法(显式)的推导过程类似,亚当斯-莫尔顿方法(隐式)采用节点 $x_n, x_{n-1}, \cdots, x_{n-p}$ 来定义的插值多项式 $P(x)$ 。如果我们使用相同数量的节点,但包括节点 $x=x_{n+1}$ ,则(8.40)变为 $$ y\left(x_{n+1}\right)=y\left(x_n\right)+\int_{x_n}^{x_{n+1}} \sum_{k=-1}^{p-1} L_k(x) f\left(x_{n-k}, y\left(x_{n-k}\right)\right) \mathrm{d} x+R_p\left(x_{n+1}\right) $$ 其中,拉格朗日基函数可以写为 $$ L_k(x)=\prod_{i=-1, i \neq k}^{p-1} \frac{x-x_{n-i}}{x_{n-k}-x_{n-i}} $$ 和前面显式方法的推导过程一样,我们可以得到 $p+1$ 阶的亚当斯-莫尔顿方法 $$ \begin{equation*} y_{n+1}=y_n+\sum_{k=-1}^{p-1} \gamma_k f\left(t_{n-k}, y_{n-k}\right) \tag{8.45} \end{equation*} $$ 其中,常数由下式给出: $$ \gamma_k=\int_{x_n}^{x_{n+1}} L_k(x) \mathrm{d} x $$ 表 8.5 给出了一些典型系数.  请注意,亚当斯-莫尔顿方法是隐式的,且 $p+1$ 步方法为 $p+1$ 阶精度.实践中二阶方法常写为 $$ \begin{equation*} y_{n+1}=y_n+\frac{h}{2}\left(f_{n+1}+f_n\right) . \tag{8.46} \end{equation*} $$ 四阶方法为 $$ \begin{equation*} y_{n+1}=y_n+\frac{h}{24}\left(9 f_{n+1}+19 f_n-5 f_{n-1}+f_{n-2}\right) . \tag{8.47} \end{equation*} $$ 从表 8.4 和表 8.5 中数据可以看出,这些方法包含了我们已经研究过的三种方法(欧拉法、后向欧拉法和梯形方法)。 例 8.8 求 $y^{\prime}=x+y, y(0)=1$ ,当 $x=0.1,0.2,0.3,0.4,0.5$ 时,步长 $h=0.1$ 的数值解. 解 先用前面讲过的方法计算出开头几个值 $$ y_0=1 ; \quad y_1=1.11034 ; \quad y_2=1.24281 ; \quad y_3=1.39972 . $$ 将上述值代入式(8.47),计算得 $$ y_4=1.58364 ; \quad y_5=1.79742 . $$ 例8.9 方程 $$ \left\{\begin{array}{l} y^{\prime}=-y \ln y, \\ y(0)=y_0 \end{array}\right. $$ 具有精确解 $y=\mathrm{e}^{-\ln 2} \mathrm{e}^{-t}$ . 当 $y_0=0.5$ 时,我们可用二阶和四阶亚当斯-巴什福斯方法计算.具体来讲,我们先用二阶、四阶龙格-库塔法生成初始值,再通过二阶、四阶亚当斯-巴什福斯方法进行改进.最大误差(1 范数)如表 8.6 中.由于它们是高阶方法,结果比较好.  比较显式法和隐式法的截断误差可知,在同样利用 $k+1$ 个已知值时,亚当斯隐式法的截断误差阶比显式法高一阶,因而隐式法更精确. 但隐式法(8.48)及(8.51)是隐式的,需要解方程.为了提高精度,通常流行的做法是用迭代法求解。例如可将 3 阶显式和 4 阶隐式方法联合起来交替使用 $$ \begin{gather*} y_{n+1}^{(0)}=y_n+\frac{h}{12}\left(23 f_n-16 f_{n-1}+5 f_{n-2}\right) \tag{8.48}\\ y_{n+1}=y_n+\frac{h}{24}\left[9 f\left(x_{n+1}, y_{n+1}^{(0)}\right)+19 f_n-5 f_{n-1}+f_{n-2}\right] \end{gather*} $$ 第一个方程的精度为 $O\left(h^4\right)$ ,用第二个方程迭代一次精度仍达 $O\left(h^5\right)$ .这样两个方程交替使用可达较好的效果。一般来说只要 $h$ 选得适当时,一般迭代二、三次即可得到满足精度要求的 $y_{n+1}$ 值。如果按照前面的叫法,我们可以把第一个方程称为预报方程,第二个方程称为校正方程。 例8.10 对例8.8用隐式法求解。 解 先用前面讲过的方法计算出前面几个数据 $$ y_0=1 ; \quad y_1=1.11034 ; \quad y_2=1.24281 . $$ 再用式(8.43)的第一个式子计算出 $y_3^{(0)}=1.39964$ ,最后用(8.48)的第二个式子进行迭代,得 $$ y_3=1.39972 . $$ 同样,可算出 $y_4$ 及 $y_5$ 。 此外,通常来说亚当斯隐式公式具有比亚当斯显式方法更好的稳定性. 8.4.3 有限差分法的稳定性理论 稳定性在微分方程求解过程中具有重要意义.先考虑下面的初始值问题: $$ \left\{\begin{array}{l} y^{\prime}=-100 y, \\ y(0)=1, \end{array}\right. $$ 此处的精确解是 $y=\mathrm{e}^{-100 x}$ ,该函数衰减比较快,我们可以用上述数值方法来得到稳定的数值解.然而对于下面的微分方程 $$ \left\{\begin{array}{l} y^{\prime}=100 y \\ y(0)=\frac{1}{100} \end{array}\right. $$ 此处的精确解是 $y=-\mathrm{e}^{\frac{1}{100} x}$ ,理论上这是一个有界的、连续、光滑的函数.然而由于 $\mathrm{e}^{100 x}$ 这项的存在,因此任何近似解几乎都将取决于项 $\mathrm{e}^{100 x}$ 。这样一来,即便初始计算只存在比较小的误差,用数值方法来计算时,由于解迅速增长最终会导致大部分的数值方法都会失败.所以数值计算的稳定性和模型方程有关. 此外,对于一阶常微分方程 $$ \left\{\begin{array}{l} y^{\prime}=-a y, \\ y(0)=1, \end{array}\right. $$ 其解析解为 $y=\mathrm{e}^{-a x}$ 。当 $x \rightarrow \infty$ 时,$y \rightarrow 0$ 。对于显式欧拉法而言, $$ y_{n+1}=y_n+h f\left(t_n, y_n\right)=y_n-a h y_n=(1-a h) y_n=(1-a h)^2 y_{n-1}=\cdots=(1-a h)^{n+1} y_0, $$ 所以为了保证上式收敛,需要保证 $|1-a h|<1$ ,得 $h<a / 2$ ,即为了保证显式欧拉法的稳定性,需要保证时间步长 $h<a / 2$ ,所以欧拉显式公式是条件稳定的. 而根据欧拉隐式格式 $$ y_{n+1}=y_n+h f\left(t_{n+1}, y_{n+1}\right)=y_n-a h y_{n+1}, $$ 则 $$ y_{n+1}=\frac{y_n}{1+a h} $$ 又因为 $a>0, h>0$ ,所以 $1+a h$ 恒大于 1 .即不管时间步长为多大,隐式欧拉始终稳定,即无条件稳定。 所以从上面的例子可以看出,微分方程数值解法的稳定性和模型方程有关,也和方法有关。但是一般来说尽管稳定性是微分方程本身所固有的性质,但是我们在分析数值方法的稳定性时,还是主要以模型方程 $$ \left\{\begin{array}{l} y^{\prime}=-\lambda y \\ y(0)=1 \end{array}\right. $$ 来说明,可以证明一般方法的稳定性比较复杂,详细结果请参阅相关文献.
科数题库(单机版)
会议室预约系统(book)
今日还可看
0
篇 未注册用户每天查看4篇,
注册
用户每天8篇,
开通VIP
会员无限制查看。
免费注册
《高等数学》难点解析
高数教程
泰勒公式
切线与法线
切平面与法平面
驻点·拐点·极值点·零点
间断点
渐进线
瑕积分
欧拉方程
伯努利方程
Abel 收敛定理
偏导数的几何意义
偏导数的几何意义
梯度
数量场与向量场
多元函数极值
拉格朗日算子
通量与散度
环流量与旋度
格林公式
高斯公式
斯托克斯公式
三大公式比较
傅里叶级数
极坐标微元
点法式方程
变上限定积分
X型计算面积
Y型计算面积
微分的意义
渐近线
间断点
y''+py'+qy=f(x)方程
高斯
黎曼
傅里叶变换(复数)
拉普拉斯变换(复数)
《线性代数》难点解析
线代教程
近世代数对数学的整体思考
线性的意义
矩阵乘法(列视角)
矩阵乘法(行视角)
矩阵左乘
矩阵右乘
逆矩阵求解方程组
阶梯形矩阵的求法
方程组解的判定
四阶行列式的计算
线性变换的意义
线性空间
向量组的等价
线性空间的几何意义
基础解系的求法
施密特正交化
特征值与特征向量的意义
矩阵相似的几何意义
矩阵可对角化的理解
秩的意义(向量版)
秩的意义(方程版)
二次型的意义
《概率论与数理统计》难点解析
概率教程
置信区间与上a分位数
概率中的“取”与“放”
贝叶斯公式
全概率公式
泊松分布
指数分布
伽玛分布
二维密度图的意义
卷积的意义
相关系数的意义
k阶矩是与矩母函数
卡方分布的作用
单正态区间估计理解
假设检验理解
切比雪夫不等式
中心极限定理
上一篇:
龙格-库塔法
下一篇:
解一阶微分方程组的差分法
本文对您是否有用?
有用
(
0
)
无用
(
0
)
赞助:
知乎 Mathhub
启明星
商务合作
赞助本站
科数网
是专业的数学网站,为您提供题库与教程 版权所有 禁止镜像
部分内容采用AI辅助生成,请注意识别
如果页面无法显示请联系 18155261033 或 983506039@qq.com