切换科目
重点科目
主要科目
次要科目
科数网
首页
刷题
学习
VIP会员
赞助
组卷
集合
教材
VIP
写作
游客,
登录
注册
在线学习
数值分析
第六篇 常微分方程的数值解法
改进欧拉法
最后
更新:
2026-06-28 20:57
查看:
2
次
纠错
评论(0)
课件
开VIP
改进欧拉法
8.2.4 改进欧拉法 为了构造精度比较高的数值方法,我们从另一角度重新分析一下初值问题 (8.19)。 一般说来,一阶方程的初值问题与积分方程 $$ y(x)=y_0+\int_{x_0}^x f(t, y(t)) \mathrm{d} t $$ 是等价的,当 $x=x_1$ 时, $$ \begin{equation*} y\left(x_1\right)=y_0+\int_{x_0}^{x_1} f(t, y(t)) \mathrm{d} t \tag{8.28} \end{equation*} $$ 所以要得到 $y\left(x_1\right)$ 的值,就必须计算出式(8.28)右端的积分.但积分式中含有未知函数,无法直接计算,只好借助数值积分.例如用左矩形法进行数值积分,则 $$ \int_{x_0}^{x_1} f(t, y(t)) \mathrm{d} t \approx f\left(x_0, y\left(x_0\right)\right)\left(x_1-x_0\right) $$ 因此有 $$ \begin{aligned} y\left(x_1\right) & \approx y_0+f\left(x_0, y\left(x_0\right)\right)\left(x_1-x_0\right) \\ & =y_0+h f\left(x_0, y_0\right) \end{aligned} $$ 可见,用左矩形法计算右端的积分与用欧拉法计出的结果完全相同。因此也可以说欧拉法的精度之所以很低是由于采用左矩形法计算右端积分的结果。可以想象,用梯形公式计算式(8.28)右端的积分,可期望得到较高的精度。这时 $$ \int_{x_0}^{x_1} f(t, y(t)) \mathrm{d} t \approx \frac{1}{2}\left[f\left(x_0, y\left(x_0\right)\right)+f\left(x_1, y\left(x_1\right)\right)\right]\left(x_1-x_0\right) . $$ 将这个结果代入(8.28)并将其中的 $y\left(x_1\right)$ 用 $y_1$ 近似代替,则得 $$ y_1=y_0+\frac{1}{2} h\left[f\left(x_0, y_0\right)+f\left(x_1, y_1\right)\right] $$ 这里得到了一个含有 $y_1$ 的方程式,如果能从中解出 $y_1$ ,用它作为 $y\left(x_1\right)$ 的近似值,可以认为比用欧拉法得出的结果要好些。仿照求 $y_1$ 的方法,可以逐个地求出 $y_2, y_3, \cdots$. 这里得到了一个含有 $y_1$ 的方程式,如果能从中解出 $y_1$ ,用它作为 $y\left(x_1\right)$ 的近似值,可以认为比用欧拉法得出的结果要好些。仿照求 $y_1$ 的方法,可以逐个地求出 $y_2, y_3, \cdots$ . 一般地,当求出 $y_n$ 以后,求 $y_{n+1}$ 可归结为解方程 $$ y_{n+1}=y_n+\frac{h}{2}\left[f\left(x_n, y_n\right)+f\left(x_{n+1}, y_{n+1}\right)\right] . $$ 这个方法称为梯形公式.用梯形公式求解,需要解含有 $y_{n+1}$ 的非线性方程,这常常不容易.为此,在实际计算时,可将欧拉法与梯形公式相结合,例如,计算公式可为 $$ \left\{\begin{array}{l} y_{n+1}^{(0)}=y_n+h f\left(x_n, y_n\right), \tag{8.29}\\ y_{n+1}^{(k+1)}=y_n+\frac{h}{2}\left[f\left(x_n, y_n\right)+f\left(x_{n+1}, y_{n+1}^{(k)}\right)\right], \quad k=0,1,2, \cdots, \end{array}\right. $$ 即先用欧拉法由 $\left(x_n, y_n\right)$ 得出 $y\left(x_{n+1}\right)$ 的初始近似值 $y_{n+1}^{(0)}$ ,然后用(8.29)中第二式进行迭代,反复改进这个近似值,直到 $\left|y_{n+1}^{(k+1)}-y_{n+1}^{(k)}\right|<\varepsilon$( $\varepsilon$ 为所允许的误差)为止,并把 $y_{n+1}^{(k)}$取作 $y\left(x_{n+1}\right)$ 的近似值 $y_{n+1}$ 。这个方法就叫改进欧拉格式. 显然,应用改进欧拉法,如果序列 $y_{n+1}^{(0)}, y_{n+1}^{(1)}, \cdots$ 收敛,它的极限便满足方程 $$ y_{n+1}=y_n+\frac{h}{2}\left[f\left(x_n, y_n\right)+f\left(x_{n+1}, y_{n+1}\right)\right], $$ 即序列的极限可取作 $y_{n+1}$ .可以证明,如果 $\frac{\partial f}{\partial y}$ 有界,则只要 $h$ 取得适当小,上述序列必定收敛.这样当 $h$ 取得充分小时,就可保证上述迭代过程收敛到一个解.当步长 $h$ 取得适当时,欧拉法算出的值已是较好的近似,因此改进欧拉法收敛很快,通常只需二三次迭代即可.如果迭代很多步仍不收敛,这表明步长 $h$ 选得过大,应缩小步长后再计算. 在实际计算过程中,我们常常采取如下的计算方法: $$ \left\{\begin{array}{l} y_{n+1}=y_n+\frac{1}{2} k_1+\frac{1}{2} k_2, \tag{8.30}\\ k_1=h f\left(x_n, y_n\right), \\ k_2=h f\left(x_n+h, y_n+k_1\right) . \end{array}\right. $$ 通常把式(8.30)称为预估计-校正公式,其中第一式叫预估公式,第二式叫校正公式。 由于微分方程比较复杂,所以数值方法的准确性至关重要,一般来说,如果微分方程的解足够光滑,则计算误差与截断误差成正比.所以我们有如下的结果. 定义8.2 如果求解初值问题(8.19)的数值方案的局部截断误差为 $O\left(h^{p+1}\right)$ ,那么我们说该方法的精度为 $p$ 阶。 现在考察欧拉公式和预估-校正法的截断误差 $y\left(x_{n+1}\right)-y_{n+1}$ 有多大?这里假定前一步得到的结果 $y_n=y\left(x_n\right)$ 是准确的。 $y\left(x_{n+1}\right)$ 的泰勒展开式有 $$ y\left(x_{n+1}\right)=y\left(x_n+h\right)=y\left(x_n\right)+h y^{\prime}\left(x_n\right)+\frac{h^2}{2!} y^{\prime \prime}\left(x_n\right)+\cdots . $$ 由欧拉格式得 $$ y_{n+1}=y_n+h f\left(x_n, y_n\right)=y\left(x_n\right)+h y^{\prime}\left(x_n\right) . $$ 两式相减得 $$ y\left(x_{n+1}\right)-y_{n+1}=\frac{h^2}{2} y^{\prime \prime}\left(x_n\right)+\cdots=O\left(h^2\right), $$ 即欧拉法的局部截断误差为 $O\left(h^2\right)$ ,当 $h \rightarrow 0$ 时它与 $h^2$ 是同阶无穷小量,所以欧拉法具有 1 阶精度。 对于改进的欧拉法,我们以迭代一次的预估-校正格式(8.29)为例来说明.因为 $$ \begin{aligned} & \qquad k_1=h f\left(x_n, y_n\right)=h f\left(x_n, y\left(x_n\right)\right)=h y^{\prime}\left(x_n\right), \\ & k_2=h f\left(x_n+h, y_n+k_1\right) \\ & =h f\left[x_n+h, y\left(x_n\right)+k_1\right] \end{aligned} $$ $$ \begin{aligned} & =h\left\{f\left[x_n, y\left(x_n\right)\right]+h \frac{\partial}{\partial x} f\left[x_n, y\left(x_n\right)\right]+k_1 \frac{\partial}{\partial y} f\left[x_n, y\left(x_n\right)\right]+\cdots\right\} \\ & =h f\left[x_n, y\left(x_n\right)\right]+h^2\left\{\frac{\partial}{\partial x} f\left[x_n, y\left(x_n\right)\right]+y^{\prime}\left(x_n\right) \frac{\partial}{\partial y} f\left[x_n, y\left(x_n\right)\right]\right\}+\cdots \\ & =h y^{\prime}\left(x_n\right)+h^2 y^{\prime \prime}\left(x_n\right)+\cdots \end{aligned} $$ 把它们代入式(8.29)第二式即得 $$ \begin{aligned} y_{n+1} & =y_n+\frac{h}{2} y^{\prime}\left(x_n\right)+\frac{h}{2} y^{\prime}\left(x_n\right)+\frac{h^2}{2} y^{\prime \prime}\left(x_n\right)+\cdots \\ & =y\left(x_n\right)+h y^{\prime}\left(x_n\right)+\frac{h^2}{2} y^{\prime \prime}\left(x_n\right)+\cdots, \end{aligned} $$ 这里未把含有 $h$ 的三次幕以上的项写出,因此有 $$ y\left(x_{n+1}\right)-y_{n+1}=O\left(h^3\right) $$ 即迭代一次的预估-校正格式(8.29)的截断误差为 $O\left(h^3\right)$ 。因此,改进的欧拉法的精度为 $p=2$ ,而欧拉法的精度为 $p=1$ 。可见改进的欧拉法比欧拉法的精度提高了。 例 8.4 考虑用改进的欧拉格式计算下面的微分方程: $$ \left\{\begin{array}{l} y^{\prime}=-y \ln y, \\ y(0)=\frac{1}{2}, \end{array}\right. $$ 这里取 $h=0.25$ 来近似 $t=1$ 时的解.我们具有以下计算顺序: $$ \begin{aligned} & \bar{y}=y_0+h f\left(t_0, y_0\right)=0.5-0.25 \times 0.5 \ln 0.5=0.5866433976, \\ & y_1=y_0+\frac{1}{2} h\left[f\left(t_0, y_0\right)+f\left(t_1, \bar{y}\right)\right]=0.58243161136465 . \\ & \bar{y}=y_1+h f\left(t_1, y_1\right)=0.66113901764113, \\ & y_2=y_1+\frac{1}{2} h\left[f\left(t_1, y_1\right)+f\left(t_2, \bar{y}\right)\right]=0.65598199856663 . \\ & \bar{y}=y_2+h f\left(t_2, y_2\right)=0.72512609790319, \\ & y_3=y_2+\frac{1}{2} h\left[f\left(t_2, y_2\right)+f\left(t_3, \bar{y}\right)\right]=0.71968686944048 . \\ & \bar{y}=y_3+h f\left(t_3, y_3\right)=0.77887015094459, \\ & y_4=y_3+\frac{1}{2} h\left[f\left(t_3, y_3\right)+f\left(t_4, \bar{y}\right)\right]=0.77360953103925 . \end{aligned} $$ 较为准确的值为 $y(1)=0.7749206845$ ,因此即使采用比较大的时间步长,上述计算结果还是相差不远。 例8.5 在区间 $[0,1.5]$ 上,取 $h=0.1$ ,求解下面的微分方程: $$ \left\{\begin{array}{l} y^{\prime}=y-\frac{2 x}{y}, \\ y(0)=1 . \end{array}\right. $$ 解(1)用欧拉法计算公式如下: $$ y_{n+1}=y_n+h\left(y_n-\frac{2 x_n}{y_n}\right), \quad y_0=1, \quad h=0.1 . $$ (2)用迭代一次的改进的欧拉法计算公式如下: $$ \begin{gathered} y_0=1, h=0.1 . \\ y_{n+1}^{(0)}=y+h\left(y_n-\frac{2 x_n}{y_n}\right), \\ y_{n+1}=y_n+\frac{h}{2}\left[f\left(x_n, y_n\right)+f\left(x_{n+1}, y_{n+1}^{(0)}\right)\right] \\ =y_n+\frac{h}{2}\left[\left(y_n-\frac{2 x_n}{y_n}\right)+\left(y_{n+1}^{(0)}-\frac{2 x_{n+1}}{y_{n+1}^{(0)}}\right)\right] . \end{gathered} $$ 可用本题的精确解 $y(x)=\sqrt{1+2 x}$ 来检验近似解的精确程度。计算结果如表 8.3所示. 
科数题库(单机版)
会议室预约系统(book)
今日还可看
0
篇 未注册用户每天查看4篇,
注册
用户每天8篇,
开通VIP
会员无限制查看。
免费注册
《高等数学》难点解析
高数教程
泰勒公式
切线与法线
切平面与法平面
驻点·拐点·极值点·零点
间断点
渐进线
瑕积分
欧拉方程
伯努利方程
Abel 收敛定理
偏导数的几何意义
偏导数的几何意义
梯度
数量场与向量场
多元函数极值
拉格朗日算子
通量与散度
环流量与旋度
格林公式
高斯公式
斯托克斯公式
三大公式比较
傅里叶级数
极坐标微元
点法式方程
变上限定积分
X型计算面积
Y型计算面积
微分的意义
渐近线
间断点
y''+py'+qy=f(x)方程
高斯
黎曼
傅里叶变换(复数)
拉普拉斯变换(复数)
《线性代数》难点解析
线代教程
近世代数对数学的整体思考
线性的意义
矩阵乘法(列视角)
矩阵乘法(行视角)
矩阵左乘
矩阵右乘
逆矩阵求解方程组
阶梯形矩阵的求法
方程组解的判定
四阶行列式的计算
线性变换的意义
线性空间
向量组的等价
线性空间的几何意义
基础解系的求法
施密特正交化
特征值与特征向量的意义
矩阵相似的几何意义
矩阵可对角化的理解
秩的意义(向量版)
秩的意义(方程版)
二次型的意义
《概率论与数理统计》难点解析
概率教程
置信区间与上a分位数
概率中的“取”与“放”
贝叶斯公式
全概率公式
泊松分布
指数分布
伽玛分布
二维密度图的意义
卷积的意义
相关系数的意义
k阶矩是与矩母函数
卡方分布的作用
单正态区间估计理解
假设检验理解
切比雪夫不等式
中心极限定理
上一篇:
欧拉格式与改进欧拉法
下一篇:
龙格-库塔法
本文对您是否有用?
有用
(
0
)
无用
(
0
)
赞助:
知乎 Mathhub
启明星
商务合作
赞助本站
科数网
是专业的数学网站,为您提供题库与教程 版权所有 禁止镜像
部分内容采用AI辅助生成,请注意识别
如果页面无法显示请联系 18155261033 或 983506039@qq.com