第七章 常微分方程数值解
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
欧拉(Euler)公式当然很粗糙。
例1 用欧拉法解初值问题
y y xy 2 y (0) 1 (0 x 0.6)
取步长h=0.2 ,计算过程保留4位小数
解: h=0.2, f ( x, y) y xy 2 欧拉迭代格式 yi 1 yi hf ( xi , yi ) yi hyi hxi yi2
xi p , yi p ( p 1,2,, k )
,即前面k步的值,此类方法称为多步法;其代表
是亚当斯法。
7.2 欧拉(Euler)法 7.2.1 Euler公式 欧拉(Euler)方法是解初值问题的最 简单的数值方法。初值问题
y f ( x, y ) y ( x0 ) y 0
的解y=y(x)代表通过点 ( x0 , y0 ) 的一条称之为 微分方程的积分曲线。积分曲线上每一点 ( x, y ) 的切线的斜率 y (x) 等于函数 f ( x, y) 在 这点的值。
Euler法的求解过程是:从初 始点P0(即点(x0,y0))出发, 作积分曲线y=y(x)在P0点上
P0
对于初值问题
y f ( x, y ) y ( x0 ) y 0
的数值解法,首先要解决的问题就是如何对微分方 程进行离散化,建立求数值解的递推公式。递推公 式通常有两类,一类是计算yi+1时只用到xi+1, xi 和yi,
即前一步的值,因此有了初值以后就可以逐步往下
计算,此类方法称为单步法;其代表是龙格—库塔 法。另一类是计算yi+1时,除用到xi+1,xi和yi以外, 还要用到
长可以相等,也可以不等。本章总是假定h为定数, 称为定步长,这时节点可表示为
xi x0 ih, i 1,2,, n 数值解法需要把连续性的问题加以离散化,从而求
出离散节点的数值解。
对常微分方程数值解法的基本出发点就是离散 化。其数值解法有两个基本特点,它们都采用“步 进式”,即求解过程顺着节点排列的次序一步一步
h y i f ( xi , y i ) f ( xi 1 , y i 1 ) ( 7.5 ) 2
(7.5)式的右端含有未知的yi+1,它是一个关于
yi+1的函数方程,这类数值方法称为隐式方法。相
反地,欧拉法是关于yi+1的一个直接的计算公式,
这类数值方法称为显式方法。
欧拉法的局部截断误差 衡量求解公式好坏的一个主要标准是求解公式的 精度, 因此引入局部截断误差和阶数的概念。
xi 1
xi
y dx
xi 1
xi
f ( x, y)dx
xi 1 xi
y( xi 1 ) y( xi )
xi 1
xi
f ( x, y)dx y( xi )
f x, y( x)dx
(7.3)
选择不同的计算方法计算上式的积分项
xi 1
xi
f x, y( x)dx ,就会得到不同的计算公式。
用左矩形方法计算积分项
xi 1
xi
f x, y( x)dx ( xi 1 xi ) f xi , y( xi )
代入(7.3)式,并用yi近似代替式中y(xi)即可得到 向前欧拉(Euler)公式
yi 1 yi hf ( xi , yi )
由于数值积分的矩形方法精度很低,所以
yi 1 y( xi 1 ) 2hf ( xi , y( xi ))
把y(xi-1)在xi处展开成Taylor级数,即
y ( xi ) y ( xi 1 ) y ( xi ) y ( xi )(xi 1 xi ) ( xi 1 xi ) 2 O(h 3 ) 2!
y , y ,, y
( n)
都是一次的,则称它是线性的,否则称为非线性的。
在高等数学中,对于常微分方程的求解,给出
了一些典型方程求解析解的基本方法,如可分离变
量法、常系数齐次线性方程的解法、常系数非齐次
线性方程的解法等。但能求解的常微分方程仍然是 有限的,大多数的常微分方程是不可能给出解析解。 譬如
h y i f ( xi , y i ) f ( xi 1 , y i 1 ) 2
代入(7.4)式,并用近似代替式中即可得到梯形公式
y i 1
( 7.5 )
由于数值积分的梯形公式比矩形公式的精度高, 因此梯形公式(7.5)比欧拉公式( 7.2 )的精度高 一个数值方法。
y i 1
对R内任意两个 y1 , y2 都成立,则方程( 7.1 )的解 y y (x) 在a, b上存在且唯一。
数值方法的基本思想 对常微分方程初值问题(7.1)式的数值解法,就 是要算出精确解y(x)在区间a,b上的一系列离散节
点 a x0 x1 xn1 xn b 处的函数值 y( x0 ), y( x1 ),, y( xn ) 的近似值 y 0 , y1 ,, y n 。相邻两个节点的间距 h xi 1 xi 称为步长,步
P1 P1
Pi+1 Pn y=y(x) Pi Pn Pi Pi+1
切线 P0 P1 (其斜率为 y( x0 ) f ( x0 , y0 ) ),与x=x1直线
x0
x1
xi
xi+1
xn
相交于P1点(即点(x1,y1),得到y1作为y(x1)的近似值,
如上图所示。过点(x0,y0),以f(x0,y0)为斜率的切线 方程为
地向前推进,描述这类算法,要求给出用已知信息
yi , yi 1 , yi 2 ,, y0 计算 y i 1 的递推公式。建立
这类递推公式的基本方法是在这些节点上用数值积
分、数值微分、泰勒展开等离散化方法,对初值问 题
y f ( x, y ) y ( x0 ) y 0
中的导数 y 进行不同的离散化处理。
y y0 f ( x0 , y0 )(x x0 )
当x x1时,得
y1 y0 f ( x0 , y0 )(x1 x0 )
这样就获得了P1点的坐标。
P1 P1 P0
Pi+1 Pn y=y(x) Pi Pn Pi+1 Pi
x0
x1
xi
xi+1
xn
同样, 过点P1(x1,y1),作积分曲线y=y(x)的切线 交直线x=x2于P2点,切线 P P 的斜率 y( x1 ) = f ( x1 , y1 ) 1 2 直线方程为
y ( xi 1 ) y ( xi ) y ( xi )(xi 1
h y ( xi ) hy ( xi ) y ( xi ) O(h 3 ) 2!
y ( xi ) xi ) ( xi 1 xi ) 2 O(h 3 ) 2! 2
由 yi 1 y( xi 1 ) 2hf ( xi , yi )
以 y ( xn ) = f ( xn , yn ) 为斜率作直线 y yn f (xn , yn )(x xn )
当 x xn1 时,得 yn1 yn f ( xn , yn )(x x1 xn ) 取 y( xn ) y n
P1 P1 P0
Pi+1 Pn Pi Pi+1 Pi
y x y
2
2
这个一阶微分方程就不能用初等函数及其积 分来表达它的解。
再如,方程
y y y (0) 1
的解 y e x ,虽然有表可查,但对于表 上没有给出 e x 的值,仍需插值方法来 计算
从实际问题当中归纳出来的微分方程,通常主要依 靠数值解法来解决。本章主要讨论一阶常微分方程 初值问题
定义7.2 数值方法的局部截断误差为 O(h p1 ) ,则称这 种数值方法的阶数是P。步长(h<1) 越小,P越高, 则局 部截断误差越小,计算精度越高。欧拉公式的局部截
断误差为 O(h 2 ) , 欧拉方法仅为一阶方法。
两步欧拉公式比欧拉公式精度也是高一个数值
方法,设 yi y( xi ) , yi1 y( xi 1 ) 前两步准确,则两步 欧拉公式
对于欧拉公式,假定 yi y( xi ) ,则有
而将真解y(x)在xi处按二阶泰勒展开
h2 y ( xi 1 ) y ( xi ) hy ( xi ) y ( ) 2!
( xi , xi 1 )
因此有
y ( xi 1 ) y i 1
h2 y ( ) 2!
yi 1 yi hf ( xi , yi ) y 0 y ( x0 )
i=0,1,…,n ( 7.2 )
还可用数值微分、数值积分法和泰勒展开法推导
Euler格式。以数值积分为例进行推导。
将方程 y f ( x, y)的两端在区间 xi , xi 1 上积分得,
第七章 常微分方程的数值解法
7.1 引言
包含自变量、未知函数及未知函数的导数或微
分的方程称为微分方程。在微分方程中, 自变量的 个数只有一个, 称为常微分方程.。自变量的个数 为两个或两个以上的微分方程叫偏微分方程。微分 方程中出现的未知函数最高阶导数的阶数称为微分
方程的阶数。如果未知函数y及其各阶导数
定义7.1 在yi准确的前提下, 即 yi y( xi ) 时, 用数值
方法计算yi+1的误差 Ri y( xi 1 ) yi 1 , 称为该数值方法
计算时yi+1的局部截断误差。
yi 1 y( xi ) h f ( xi , y( xi )) y( xi ) hy ( xi )
y f ( x, y ) y ( x0 ) y 0
( 7.1 )
Байду номын сангаас
在区间a ≤ x ≤ b上的数值解法。 可以证明,如果函数在带形区域 R=a≤x≤b, -∞<y<∞}内连续,且关于y满足李普希兹
(Lipschitz)条件,即存在常数L(它与x,y无关)使
f ( x, y1 ) f ( x, y2 ) L y1 y2
y=y(x) Pn
x0
x1
xi
xi+1
xn
这样,从x0逐个算出 x1 , x2 , xn 对应的数值解
y1 , y 2 , y n
从图形上看,就获得了一条近似于曲线y=y(x) 的折线 P P P P 。 1 2 3 n
通常取 xi1 xi hi h (常数),则Euler法的计算格式
y y1 f ( x1 , y1 )(x x1 )
当 x x2 时,得
y2 y1 f ( x1 , y1 )(x2 x1 )
P1 P1 P0
Pi+1 Pn Pi Pi+1 Pi
y=y(x) Pn
x0
x1
xi
xi+1
xn
由此获得了P2的坐标。重复以上过程,就可获得一系 列的点:P1,P1,…,Pn。对已求得点 Pn ( xn , yn )
0.2 yi (4 xi yi ) (i 0,1,2)
当 k=0, x1=0.2时,已知x0=0,y0=1,有 y(0.2)y1=0.2×1(4-0×1)=0.8 当 k=1, x2=0.4时,已知x1 =0.2, y1 =0.8,有 y(0.4) y2 =0.2×0.8×(4-0.2×0.8)=0.6144 当 k=2, x3 =0.6时,已知x2 =0.4, y2 =0.6144,有 y(0.6) y3=0.2×0.6144×(4-0.4×0.6144)=0.4613
h2 y( xi ) hy ( xi ) y ( xi ) O(h 3 ) 2hf ( xi , yi ) 2! h2 (7.8) y ( xi ) hy ( xi ) y ( xi ) O(h 3 ) 2!
7.2.2 梯形公式 为了提高精度,对方程 y f ( x, y) 的两端在区间上
( 7.4 )
xi , xi1 积分得,
y( xi 1 ) y( xi )
xi 1 xi
f x, y( x)dx
改用梯形方法计算其积分项,即
xi 1
xi
xi 1 xi f ( xi , y( xi )) f ( xi 1 , y( xi 1 )) f x, y ( x)dx 2
例1 用欧拉法解初值问题
y y xy 2 y (0) 1 (0 x 0.6)
取步长h=0.2 ,计算过程保留4位小数
解: h=0.2, f ( x, y) y xy 2 欧拉迭代格式 yi 1 yi hf ( xi , yi ) yi hyi hxi yi2
xi p , yi p ( p 1,2,, k )
,即前面k步的值,此类方法称为多步法;其代表
是亚当斯法。
7.2 欧拉(Euler)法 7.2.1 Euler公式 欧拉(Euler)方法是解初值问题的最 简单的数值方法。初值问题
y f ( x, y ) y ( x0 ) y 0
的解y=y(x)代表通过点 ( x0 , y0 ) 的一条称之为 微分方程的积分曲线。积分曲线上每一点 ( x, y ) 的切线的斜率 y (x) 等于函数 f ( x, y) 在 这点的值。
Euler法的求解过程是:从初 始点P0(即点(x0,y0))出发, 作积分曲线y=y(x)在P0点上
P0
对于初值问题
y f ( x, y ) y ( x0 ) y 0
的数值解法,首先要解决的问题就是如何对微分方 程进行离散化,建立求数值解的递推公式。递推公 式通常有两类,一类是计算yi+1时只用到xi+1, xi 和yi,
即前一步的值,因此有了初值以后就可以逐步往下
计算,此类方法称为单步法;其代表是龙格—库塔 法。另一类是计算yi+1时,除用到xi+1,xi和yi以外, 还要用到
长可以相等,也可以不等。本章总是假定h为定数, 称为定步长,这时节点可表示为
xi x0 ih, i 1,2,, n 数值解法需要把连续性的问题加以离散化,从而求
出离散节点的数值解。
对常微分方程数值解法的基本出发点就是离散 化。其数值解法有两个基本特点,它们都采用“步 进式”,即求解过程顺着节点排列的次序一步一步
h y i f ( xi , y i ) f ( xi 1 , y i 1 ) ( 7.5 ) 2
(7.5)式的右端含有未知的yi+1,它是一个关于
yi+1的函数方程,这类数值方法称为隐式方法。相
反地,欧拉法是关于yi+1的一个直接的计算公式,
这类数值方法称为显式方法。
欧拉法的局部截断误差 衡量求解公式好坏的一个主要标准是求解公式的 精度, 因此引入局部截断误差和阶数的概念。
xi 1
xi
y dx
xi 1
xi
f ( x, y)dx
xi 1 xi
y( xi 1 ) y( xi )
xi 1
xi
f ( x, y)dx y( xi )
f x, y( x)dx
(7.3)
选择不同的计算方法计算上式的积分项
xi 1
xi
f x, y( x)dx ,就会得到不同的计算公式。
用左矩形方法计算积分项
xi 1
xi
f x, y( x)dx ( xi 1 xi ) f xi , y( xi )
代入(7.3)式,并用yi近似代替式中y(xi)即可得到 向前欧拉(Euler)公式
yi 1 yi hf ( xi , yi )
由于数值积分的矩形方法精度很低,所以
yi 1 y( xi 1 ) 2hf ( xi , y( xi ))
把y(xi-1)在xi处展开成Taylor级数,即
y ( xi ) y ( xi 1 ) y ( xi ) y ( xi )(xi 1 xi ) ( xi 1 xi ) 2 O(h 3 ) 2!
y , y ,, y
( n)
都是一次的,则称它是线性的,否则称为非线性的。
在高等数学中,对于常微分方程的求解,给出
了一些典型方程求解析解的基本方法,如可分离变
量法、常系数齐次线性方程的解法、常系数非齐次
线性方程的解法等。但能求解的常微分方程仍然是 有限的,大多数的常微分方程是不可能给出解析解。 譬如
h y i f ( xi , y i ) f ( xi 1 , y i 1 ) 2
代入(7.4)式,并用近似代替式中即可得到梯形公式
y i 1
( 7.5 )
由于数值积分的梯形公式比矩形公式的精度高, 因此梯形公式(7.5)比欧拉公式( 7.2 )的精度高 一个数值方法。
y i 1
对R内任意两个 y1 , y2 都成立,则方程( 7.1 )的解 y y (x) 在a, b上存在且唯一。
数值方法的基本思想 对常微分方程初值问题(7.1)式的数值解法,就 是要算出精确解y(x)在区间a,b上的一系列离散节
点 a x0 x1 xn1 xn b 处的函数值 y( x0 ), y( x1 ),, y( xn ) 的近似值 y 0 , y1 ,, y n 。相邻两个节点的间距 h xi 1 xi 称为步长,步
P1 P1
Pi+1 Pn y=y(x) Pi Pn Pi Pi+1
切线 P0 P1 (其斜率为 y( x0 ) f ( x0 , y0 ) ),与x=x1直线
x0
x1
xi
xi+1
xn
相交于P1点(即点(x1,y1),得到y1作为y(x1)的近似值,
如上图所示。过点(x0,y0),以f(x0,y0)为斜率的切线 方程为
地向前推进,描述这类算法,要求给出用已知信息
yi , yi 1 , yi 2 ,, y0 计算 y i 1 的递推公式。建立
这类递推公式的基本方法是在这些节点上用数值积
分、数值微分、泰勒展开等离散化方法,对初值问 题
y f ( x, y ) y ( x0 ) y 0
中的导数 y 进行不同的离散化处理。
y y0 f ( x0 , y0 )(x x0 )
当x x1时,得
y1 y0 f ( x0 , y0 )(x1 x0 )
这样就获得了P1点的坐标。
P1 P1 P0
Pi+1 Pn y=y(x) Pi Pn Pi+1 Pi
x0
x1
xi
xi+1
xn
同样, 过点P1(x1,y1),作积分曲线y=y(x)的切线 交直线x=x2于P2点,切线 P P 的斜率 y( x1 ) = f ( x1 , y1 ) 1 2 直线方程为
y ( xi 1 ) y ( xi ) y ( xi )(xi 1
h y ( xi ) hy ( xi ) y ( xi ) O(h 3 ) 2!
y ( xi ) xi ) ( xi 1 xi ) 2 O(h 3 ) 2! 2
由 yi 1 y( xi 1 ) 2hf ( xi , yi )
以 y ( xn ) = f ( xn , yn ) 为斜率作直线 y yn f (xn , yn )(x xn )
当 x xn1 时,得 yn1 yn f ( xn , yn )(x x1 xn ) 取 y( xn ) y n
P1 P1 P0
Pi+1 Pn Pi Pi+1 Pi
y x y
2
2
这个一阶微分方程就不能用初等函数及其积 分来表达它的解。
再如,方程
y y y (0) 1
的解 y e x ,虽然有表可查,但对于表 上没有给出 e x 的值,仍需插值方法来 计算
从实际问题当中归纳出来的微分方程,通常主要依 靠数值解法来解决。本章主要讨论一阶常微分方程 初值问题
定义7.2 数值方法的局部截断误差为 O(h p1 ) ,则称这 种数值方法的阶数是P。步长(h<1) 越小,P越高, 则局 部截断误差越小,计算精度越高。欧拉公式的局部截
断误差为 O(h 2 ) , 欧拉方法仅为一阶方法。
两步欧拉公式比欧拉公式精度也是高一个数值
方法,设 yi y( xi ) , yi1 y( xi 1 ) 前两步准确,则两步 欧拉公式
对于欧拉公式,假定 yi y( xi ) ,则有
而将真解y(x)在xi处按二阶泰勒展开
h2 y ( xi 1 ) y ( xi ) hy ( xi ) y ( ) 2!
( xi , xi 1 )
因此有
y ( xi 1 ) y i 1
h2 y ( ) 2!
yi 1 yi hf ( xi , yi ) y 0 y ( x0 )
i=0,1,…,n ( 7.2 )
还可用数值微分、数值积分法和泰勒展开法推导
Euler格式。以数值积分为例进行推导。
将方程 y f ( x, y)的两端在区间 xi , xi 1 上积分得,
第七章 常微分方程的数值解法
7.1 引言
包含自变量、未知函数及未知函数的导数或微
分的方程称为微分方程。在微分方程中, 自变量的 个数只有一个, 称为常微分方程.。自变量的个数 为两个或两个以上的微分方程叫偏微分方程。微分 方程中出现的未知函数最高阶导数的阶数称为微分
方程的阶数。如果未知函数y及其各阶导数
定义7.1 在yi准确的前提下, 即 yi y( xi ) 时, 用数值
方法计算yi+1的误差 Ri y( xi 1 ) yi 1 , 称为该数值方法
计算时yi+1的局部截断误差。
yi 1 y( xi ) h f ( xi , y( xi )) y( xi ) hy ( xi )
y f ( x, y ) y ( x0 ) y 0
( 7.1 )
Байду номын сангаас
在区间a ≤ x ≤ b上的数值解法。 可以证明,如果函数在带形区域 R=a≤x≤b, -∞<y<∞}内连续,且关于y满足李普希兹
(Lipschitz)条件,即存在常数L(它与x,y无关)使
f ( x, y1 ) f ( x, y2 ) L y1 y2
y=y(x) Pn
x0
x1
xi
xi+1
xn
这样,从x0逐个算出 x1 , x2 , xn 对应的数值解
y1 , y 2 , y n
从图形上看,就获得了一条近似于曲线y=y(x) 的折线 P P P P 。 1 2 3 n
通常取 xi1 xi hi h (常数),则Euler法的计算格式
y y1 f ( x1 , y1 )(x x1 )
当 x x2 时,得
y2 y1 f ( x1 , y1 )(x2 x1 )
P1 P1 P0
Pi+1 Pn Pi Pi+1 Pi
y=y(x) Pn
x0
x1
xi
xi+1
xn
由此获得了P2的坐标。重复以上过程,就可获得一系 列的点:P1,P1,…,Pn。对已求得点 Pn ( xn , yn )
0.2 yi (4 xi yi ) (i 0,1,2)
当 k=0, x1=0.2时,已知x0=0,y0=1,有 y(0.2)y1=0.2×1(4-0×1)=0.8 当 k=1, x2=0.4时,已知x1 =0.2, y1 =0.8,有 y(0.4) y2 =0.2×0.8×(4-0.2×0.8)=0.6144 当 k=2, x3 =0.6时,已知x2 =0.4, y2 =0.6144,有 y(0.6) y3=0.2×0.6144×(4-0.4×0.6144)=0.4613
h2 y( xi ) hy ( xi ) y ( xi ) O(h 3 ) 2hf ( xi , yi ) 2! h2 (7.8) y ( xi ) hy ( xi ) y ( xi ) O(h 3 ) 2!
7.2.2 梯形公式 为了提高精度,对方程 y f ( x, y) 的两端在区间上
( 7.4 )
xi , xi1 积分得,
y( xi 1 ) y( xi )
xi 1 xi
f x, y( x)dx
改用梯形方法计算其积分项,即
xi 1
xi
xi 1 xi f ( xi , y( xi )) f ( xi 1 , y( xi 1 )) f x, y ( x)dx 2