当前课程知识点:数值分析 >  第九章 常微分方程数值解法 >  9.2 Euler方法及其改进方法 >  Euler方法及其改进方法

返回《数值分析》慕课在线视频课程列表

Euler方法及其改进方法在线视频

返回《数值分析》慕课在线视频列表

Euler方法及其改进方法课程教案、知识点、字幕

大家好

我们在上节课学习了如何离散

微分方程的初值问题

今天我们来学习Euler方法及其改进方法

首先 我们来看一下Euler方法的求解公式

所谓Euler方法

是以这样一个差分方程的初值问题

yn+1等于yn加上hf(xn yn)

y₀=y(a)

它的解作为微分方程初值问题的数值解

即y(xn)近似的等于yn

我们在前面讲了单步法

它的一般形式为

yn+1等于yn加上h乘上Φ(xn yn

xn+1 yn+1)

对于Euler方法来说

我们这里的Φ取的即为

f(xn yn)

即xn yxn这一点

它的切线斜率的一个近似

我们用差分方程的解

作为微分方程解的一个近似

从图形上来看

就是对于微方程解的这条曲线

用一条分段的折线来逼近它

我们来看一个例子

用Euler方法求解下列方程的数值解

即dy dx等于x根下y

当x大于等于0 小于等于1的时候

初值条件是y₀=1

这里我们的步长分别取0.5和0.25

我们知道Euler公式

它的迭代格式为yn+1等于yn加上hf(xn yn)

我们把f的表达式代进来

即为yn加上hxn根下yn

当步长h取0.5的时候

我们

可以得到y0.5

近似的就等于y₁等于y₀加上

hx₀根下y₀

把y₀=1代进去

我们就可以得到y0.5近似的等于1.0

求出y₁之后

我们再把它代入迭代格式的右端

可以计算y₂等于y₁加上hx₁根下y₁

把y₁的值1.0代进来之后 我们可以求出

y₂是1.25

因此 这时候y在1.0的

值 我们就近似的等于1.25

这是步长h取0.5的时候

我们可以求出在两个节点0.5和1.0它的近似值

当步长h取0.25的时候

我们可以分别代入这个公式求出

y(0.25)近似的等于

y₁=1

y(0.5) 近似的等于y₂

等于1.0625

y的0.75

近似的等于y₃

计算出来 是1.191347

而y的1.0近似的是等于y₄

这个值是1.39600

如果我们把它的解析解

和它的数值解画在图形上 我们可以看出

这条黄色的曲线 就是它的精确解

即y=(1+x²/4)²

而当步长h等于0.5的时候

近似解的曲线 就为这条绿色的曲线

当步长h等于0.25的时候

我们的数值解的曲线就为这条黑色的曲线

从这个图形上我们可以看出

当步长变小即由0.5变为0.25的时候

我们这个数值解对真解的逼近更精确

接下来 我们来看向后Euler方法 它的

计算公式为 yn+1等于yn加上hf(xn+1 yn+1)

初值 y₀=ya

我们知道 这个向后Euler方法是一个隐式的公式

当f是一个非线性函数的时候

我们通常需要来求解一个非线性方程

所以在实际计算当中

一般是要用迭代法来进行求解

这时候我们选的初值

一般用显格式 Euler格式给出初值

然后代入向后Euler格式的右端

不断进行迭代

即可以得到yn+1

它的k+1次迭代值等于 yn加上hf(xn+1 yn+1 k

第k次的迭代值

对于这样的一个迭代求解格式

我们这里有两个问题

向后Euler迭代序列是否是收敛的

向后Euler迭代序列在什么条件下收敛

我们来看一下

我们要讨论这个

迭代序列的收敛性

我们就来比较一下yn+1的(k+1)次减掉yn+1的(k) 次

它的差的绝对值

我们把这个迭代格式代入

就可以得到

它等于h乘上f(xn+1 yn+1(k)) 减掉

f(xn+1 yn+1(k-1))

我们知道右端函数f关于y满足Lipschitz条件

因此它小于等于h乘上这个Lipschitz常数大L

再乘以yn+1的(k)减yn+1(k-1)的绝对值

由这样的一个递推的不等式

我们继续往前递推即可以得到

yn+1(k+1)减yn+1(k)

它的绝对值小于等于(hL)的k次方

乘上yn+1(1)减掉yn+1(0)的绝对值

因此 如果(hL)是严格小于1的

当k趋向于无穷大的时候

我们这个迭代序列 就是收敛

所以向后Euler迭代法收敛的条件即为hL小于1

接下来我们再来看

梯形公式

梯形公式为yn+1等于yn

加上2分之h

[f(xn yn)+f(xn+1 yn+1)]

y₀=a

梯形公式也是一个隐式格式

所以我们在求解的时候 也需要迭代求解

它的求解公式初值也是由Euler格式给出

然后

进行迭代计算

yn+1(k+1)等于 yn加2分之h

[f(xn yn)+f(xn+1 yn+1(k))]

对于这个迭代序列

它的收敛性是什么样子的

我们来分析一下

yn+1(k+1)减yn+1(k)它的绝对值

把迭代公式代入

即得到它等于2分之h

f(xn+1 yn+1(k))减f(xn+1 yn+1(k-1)

还是由Lipschitz条件

可以得到 它小于等于2分之hL

乘上yn+1(k)减yn+1(k-1)

我们继续往前递推

即可以得到小于等于2分之hL的k次方

yn+1(1)减掉yn+1(0)

当2分之hL是大于0小于1的时候

我们可以证明这个迭代格式就是收敛的

因此梯形公式迭代法收敛的条件即为

2分之hL严格小于1

接下来 我们来学习改进Euler法

改进Euler法

它是用显格式Euler格式 先来做一个预测

即yn+1拔等于yn加上hf(xn yn)

我们把yn+1拔

去替代梯形格式右端的yn+1

即可以得到yn+1等于yn加上2分之h f(xn yn)

加f(xn+1 yn+1)拔

这样得到的格式

称为Euler公式与梯形公式组成的预测校正系统

又称改进Euler法

我们可以看出

改进Euler法是一个显格式

为了便于编制程序计算

对改进Euler法 我们通常改写成以下形式

即先用Euler格式做一个预测

yp等于yn加上hf(xn yn)

把它代入向后Euler的右端

得到yq等于yn加上hf(xn+1 yp)

然后我们把yp和yq做一个平均

作为我们的数值解

对于改进Euler法我们可以这样来理解

分为预测和校正两步

在预测的时候 我们是用Euler法来预测

这个时候我们选的这种步进的斜率

是(xn yxn)这一点它的切线的斜率

在校正的时候

我们选的斜率是

(xn yxn)和(xn+1 yxn+1)这两个点

它的切线斜率的一个平均

下面我们来看一个例子

用改进Euler法计算初值问题

y'=-y-y²sinx

初始条件是当x=1的时候y=1

它的解在1.2和1.4处的近似值

取步长h是等于0.2

要求计算过程保留小数点后5位

对于这个问题我们的右端项f(x y)=-y-y²sinx

我们把它代入改进Euler格式的计算公式得

yp=yn+h(-yn-yn²sinxn)

yq就等于

yn+h(-yp-yp²sinxn+1)

然后 我们把yp和yq做一下平均记为yn+1

初始值y₀是等于1

由这个公式即可以得到

当n等于0的时候

我们的yp是0.631706

yq是0.799272

因此我们算出来1.2这一点

它的真解的近似值y₁就是

0.71549

当n取1的时候我们算出yp是

0.476964

yq是0.575259

由此我们可以得出解在1.4的值近似的等于y₂

是0.52611

接下来 我们给出单步法的误差估计

我们在前面给出单步法的一般形式为

yn+1等于yn加上hΦ(xn yn xn+1 yn+1)

这里 我们首先给出局部截断误差的定义

局部截断误差它等于真解y(xn+1)减掉yn+1拔

其中这个yn+1拔

等于y(xn)加上h

我们把Φ里面的yn和yn+1都换成真解

即 Φ(xn y(xn) xn+1 y(xn+1))

我们这里得到局部截断误差的技巧 就是Taylor公式

我们再给出整体截断误差的定义

在节点xn+1处

整体截断误差en+1就等于y(xn+1)

减掉yn+1

其中y(xn+1)是这个节点的精确值

而yn+1是这个节点的数值解

我们这两张图上

左边给出来的这张图即为

局部截断误差

而右边我们给出来的

这个真解和近似解的误差就是整体截断误差

如果某种数值方法

它的局部截断误差是

大Oh的p+1次方

我们称这个方法是一个p阶方法

如果我们把它的局部截断误差做一个更精确的展开

把它的hp+1次方这一项精确的表述出来

即写为ψ(xn y(xn))乘上h的p+1次方

加上大Oh的p+2次方

那这时候我们就称ψ(xn y(xn))h的p+1次方

为局部截断误差的主项

下面我们给出Euler方法的局部截断误差估计

我们知道Euler方法的计算公式为

yn+1等于yn加上hf(xn yn)

那所以yn+1拔就等于

y(xn)加上hf(xn y(xn))

而f(xn y(xn))就是y'(xn)

所以yn+1-拔就等于y(xn)加上hy'(xn)

然后我们把y(xn+1)这个精确解

在xn点做Taylor展开

即得到

它等于y(xn)加上hy'(xn)加2分之h的平方y''(ξ)

这个ξ大于xn小于xn+1

我们把两个式子相减即可以得到

局部截断误差Rn+1等于2分之h平方y''(ξ)

ξ是大于xn小于xn+1

Euler方法的局部截断误差为

2分之h平方y''(ξ)

根据定义 我们可以知道

Euler方法是一个一阶方法

下面我们来看一下Euler方法它的整体截断误差

我们这里记 yn+1- 等于y(xn)加上hf(xn y(xn))

en+1就等于真解减掉数值解

我们这里把这个yn+1-给它插进去利用

这个绝对值的三角不等式可以得到

en+1的绝对值

小于等于y(xn+1)减yn+1- 再加上

yn+1- 减掉yn+1的绝对值

这两部分我们再用绝对值给它分开

即可以得到en+1的绝对值小于等于

Rn+1的绝对值加上y(xn)减yn的绝对值

加上hf(xn y(xn))减掉f(xn yn)

我们这里的第二项实际上就是

xn这个节点的整体截断误差

而第三部分 我们可以利用f

它关于y的 条件

把它放大到hL乘上y(xn)减掉yn

那因此啊

在x(n+1)这个节点的整体截断误差

en+1它的绝对值

就小于等于它的局部截断误差Rn+1的绝对值

再加上(1+hL)乘上xn这一点的

整体截断误差的绝对值

那这样的话我们就可以得到

整体截断误差的一个递推关系

如果我们假设右端函数充分光滑

使得这个解是二阶导数连续的

这样话就可以保证它的二阶导数

在这个区间上是有界的

因此局部截断误差Rn+1它的绝对值

就小于等于2分之h的平方乘上大M

那所以整体截断误差en+1它的绝对值

就小于等于2分之h平方大M

加上1+hL的en的绝对值

然后把en它就应该小于等于2分之h平方大M

加上1+hL的en-1的绝对值

然后我们一直递推下去

注意到这个e0是等于零的

那这样话我们即可以得到

en+1的绝对值小于等于2分之h的平方大M

乘上1加上1+hL

一直加到1+hL的n次方

括号里边这个我们可以利用等比数列的求和公式

可以得到en+1的绝对值就小于等于

2L分之hM乘上(1+hL)的n+1次方减1

我们注意到n+1乘上步长是小于等于b-a的

那因此这个(1+hL)的n+1次方

它小于等于(1+hL)的b-a除以h次幂

小于e的大L乘上b-a这样一个常数

那最后我们就可以得到这样一个估计

en+1的绝对值

小于等于2L分之hM乘上e的L(b-a)减1

那因此它是大O(h)的

所以Euler方法它的整体截断误差

是与h同阶的 是一阶方法

由这个误差估计我们可以看出

当步长h趋向于0的时候 在所有的节点

这个整体截断误差它的极限都是0

也即我们的数值解是收敛于真解的

对于向后Euler方法

我们可以完全类似的处理

可以得到它的局部截断误差

即y(xn+1)减掉yn+1-是

负的2分之h²y''(xn)加上大O(h)³

因此它的局部截断误差的主项就为

负的2分之h²y''(xn)

它是一个一阶的方法

对于梯形公式我们也可以做类似的推导

这个时候大家注意对于梯形公式yn+1- 它是

y(xn)加2分之h(f(xn y(xn))加f(xn+1 y(xn+1))

而f(xn) y(xn)即y'(xn)

f(xn+1) y(xn+1)

为y'(xn+1)

我们再把y'(xn+1)

在xn点继续做Taylor展开

就可以得到这个表达式

然后我们把y(xn+1)在xn点也做Taylor展开

我们把y(xn+1)的展开式和y(n+1)-的展开式

两式相减就可以得到

局部截断误差Rn+1等于负的12分之h³y'''(xn)加上大O(h⁴)

因此它的局部截断误差主项为

负的12分之h³y'''(xn)

因此梯形公式是一个二阶的方法

我们总结一下

在本节我们

主要介绍了Euler方法

向后Euler方法

梯形公式 改进Euler方法

以及它们的局部截断误差

和整体截断误差

谢谢大家

数值分析课程列表:

第一章 误差

-1.1 误差的概念

--误差的概念

-1.2 误差的传播

--误差的传播

-第一章 习题

--第一章 习题

第二章 解线性方程组的直接解法

-2.1 Gauss消去法

--Gauss消去法

-2.2 矩阵的三角分解

--矩阵的三角分解

-2.3 直接三角分解法

--直接三角分解法

-2.4 平方根法和改进的平方根法

--平方根法和改进的平方根法

-2.5 误差分析(1)向量和矩阵范数

--误差分析(1)向量和矩阵范数

-2.6 误差分析(2)条件数

--误差分析(2)条件数

-第二章 习题

--第二章 习题

第三章 解线性方程组的迭代法

-3.1 Jacobi迭代法和Gauss-Seidel 迭代法

--Jacobi迭代法和Gauss-Seidel 迭代法

-3.2 迭代法收敛性的判别

--迭代法收敛性的判别

-3.3 误差分析

--误差分析

-第三章 习题

--第三章 习题

第四章 矩阵特征值与特征向量的计算

-4.1 幂法

--幂法

-4.2 反幂法

--反幂法

-第四章 习题

--第四章 习题

第五章 插值法

-5.1 多项式插值理论

--多项式插值理论

-5.2 Lagrange 插值多项式

--Lagrange 插值多项式

-5.3 Newton 插值多项式(1)差商型

--Newton 插值多项式(1)差商型

-5.4 Newton 插值多项式(2)差分型

--5.4 Newton 插值多项式(2)差分型

-5.5 分段线性插值

--分段线性插值

-5.6 Hermite 插值

--Hermite 插值

-第五章 习题

--第五章 习题

第六章 函数逼近

-6.1 数据拟合的最小二乘法(1)多项式拟合

--数据拟合的最小二乘法(1)多项式拟合

-6.2 数据拟合的最小二乘法(2)其他函数拟合

--数据拟合的最小二乘法(2)其他函数拟合

-6.3 正交多项式

--正交多项式

-6.4 函数的最佳平方逼近

--函数的最佳平方逼近

-第六章 习题

--第六章 习题

第七章 数值微分与数值积分

-7.1 数值微分

--数值微分

-7.2 Newton-Cotes求积公式(1)数值积分的基本思想、Newton-Cotes公式

--Newton-Cotes求积公式(1)数值积分的基本思想、Newton-Cotes公式

-7.3 Newton-Cotes求积公式(2)误差估计

--Newton-Cotes求积公式(2)误差估计

-7.4 复化求积公式

--复化求积公式

-7.5 Romberg求积公式、Gauss型求积公式

--Romberg求积公式、Gauss型求积公式

-第七章 习题

--第七章 习题

第八章 非线性方程的求解

-8.1 Romberg求积公式、Gauss型求积公式

--Romberg求积公式、Gauss型求积公式

-8.2 简单迭代法的加速、牛顿法与弦截法

--简单迭代法的加速、牛顿法与弦截法

-第八章 习题

--第八章 习题

第九章 常微分方程数值解法

-9.1 常微分方程数值解法概述

--常微分方程数值解法概述

-9.2 Euler方法及其改进方法

--Euler方法及其改进方法

-第九章 习题

--第九章 习题

Euler方法及其改进方法笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。