数值分析71常微分方程初值问题数值解引言
第9章常微分方程初值问题数值解法
h2 y(n )
2!
略去 h2项: y( xn1) y( xn ) hf ( xn1, y( xn1))
然后用 yn代替 y( xn ) ,即得
yn1 yn hf ( xn1, yn1) n 0,1, 2, , N 1
称上述公式为向后Euler 公式。
向后Euler 公式为隐式格式,需要利用迭代法求解
dx
x
,
0
y
0
13
数值分析
第9章 常微分方程初值问题数值解法
等步长为h,则 x1 x0 h,可由切线算出y1 : y1 y0 hf(x0 , y0)
逐步计算出y y( x) 在 xn1点的值 : yn1 yn hf(xn , yn) n 0,1,2,
D {a x b; y }
且关于 y满足Lipschitz条件,即存在常数 L, 使0
| f ( x, y1) f ( x, y2 ) | L | y1 y2 |;x, y D
则初值问题 (存) 在唯一解,且解是连续可微的。
Def 所谓数值解是指:在解的存在区间上取一系列点
x0 x1 x2 ... xn ...
数值分析
Numerical Analysis
李小林
重庆师范大学数学学院
数值分析
第9章 常微分方程初值问题数值解法
第九章 常微分方程初值问题数值解法
/*Numerical Method for Ordinary Differential Equations*/
许多实际问题的数学模型是微分方程或微分方 程的初值问题,如物体运动,电路震荡,化学反映及 生物群体的变化等。
(1) 用差商近似导数
dy
y xn1 y xn
数值分析常微分方程数值解法
第8页/共105页
➢ 数值积分方法(Euler公式)
设将方程 y=f (x, y)的两端从 xn 到xn+1 求积分, 得
y( xn1) y( xn )
xn1 f ( x, y( x))dx :
xn
xn1 F ( x)dx
xn
用不同的数值积分方法近似上式右端积分, 可以得到计算 y(xn+1)的不同的差分格 式.
h2 2
y''( )
Rn1
:
y( xn1)
yn1
h2 2
y''( )
h2 2
y''( xn ) O(h3 ).
局部截断误差主项
19
第20页/共105页
➢ 向后Euler法的局部截断误差
向后Euler法的计算公式
yn1 yn hf ( xn1, yn1 ), n 0, 1, 2,
定义其局部截断误差为
y 计算 的n递1 推公式,此类计算格式统称为差分格式.
3
第4页/共105页
数值求解一阶常微分方程初值问题
y' f ( x, y), a x b,
y(a)
y0
难点: 如何离散 y ?
➢ 常见离散方法
差商近似导数 数值积分方法 Taylor展开方法
4
第5页/共105页
➢ 差商近似导数(Euler公式)
(0 x 1)
y(0) 1.
解 计算公式为
yn1
yn
hfn
yn
h( yn
2xn ), yn
y0 1.0
n 0, 1, 2,
取步长h=0.1, 计算结果见下表
13
常微分方程初值问题数值解法
数值解法的必要性
实际应用需求
许多实际问题需要求解常微分方程初值问题,如物理、 化学、生物、工程等领域。
解析解的局限性
对于复杂问题,解析解难以求得或不存在,因此需要 采用数值方法近似求解。
数值解法的优势
未来发展的方向与挑战
高精度算法
研究和发展更高精度的算法,以提高数值解的准确性和稳定性。
并行计算
利用并行计算技术,提高计算效率,处理大规模问题。
自适应方法
研究自适应算法,根据问题特性自动调整计算精度和步长。
计算机技术的发展对数值解法的影响
1 2
硬件升级
计算机硬件的升级为数值解法提供了更强大的计 算能力。
它首先使用预估方法(如欧拉方法)得到一个 初步解,然后使用校正方法(如龙格-库塔方法) 对初步解进行修正,以提高精度。
预估校正方法的优点是精度较高,且计算量相 对较小,适用于各种复杂问题。
步长与误差控制
01
在离散化过程中,步长是一个重要的参数,它决定 了离散化的精度和计算量。
02
误差控制是数值逼近的一个重要环节,它通过设定 误差阈值来控制计算的精度和稳定性。
能够给出近似解的近似值,方便快捷,适用范围广。
数值解法的历史与发展
早期发展
早在17世纪,科学家就开始尝 试用数值方法求解常微分方程。
重要进展
随着计算机技术的发展,数值 解法在20世纪取得了重要进展, 如欧拉法、龙格-库塔法等。
当前研究热点
目前,常微分方程初值问题的 数值解法仍有许多研究热点和 挑战,如高精度算法、并行计
软件优化
软件技术的发展为数值解法提供了更多的优化手 段和工具。
第九章常微分方程初值问题的数值解法
当r=0时,称为单步法,这恰好就是欧拉方法.
3 当r =1时,称为二步法,其局部截断误差为 O h .
Adams线性多步法的特点:
r r , 1. 对任意的 j 1
r j 0
2. Adams线性多步法的截断误差的来源是数值积分的截断误差, 而数值积分的截断误差来源于插值误差,因此阿达姆斯方法的 的局部截断误差是 O hr 2 3. Adams线性多步法与Runge-Kutta法比较,R-K每提高一阶精 度至少需要多计算一个函数值;而线性多步法每提高一阶精 度只需多用一个已知的数据,所以从这个角度看计算量较小, 但线性多步法必须在单步法的基础上做. 所以在实际计算时 常常把两者相结合. 13
i
再对右端的积分应用数值积分(用函数值的线性组合来近似积分)
r yi 1 yi h j f xi j , yi j r j 0
12
由于 j 仅与r , j 有关, 而与f , i 无关,所以可以事先制成表。
r
当r =2时,称为三步法,其局部截断误差为 O h
i i
这个方法称二阶泰勒方法
6
2. 梯形方法和改进欧拉方法
xi 1 x i
h y x dx y xi 1 y xi [ f xi , yi f xi 1, yi 1 ] 2 h yi 1 yi [ f xi , yi f xi 1 , yi 1 ] 2
常微分方程初值问题解的存在唯一性定理:
以后我们总假定给出的方程都满足该定理的条件. 微分方程初值问题数值解法的特点: 先把方程离散化,即在区间[a,b ]中插入一些节点(通常采用等 距节点) ba
数值计算中的常微分方程初值问题
数值计算中的常微分方程初值问题常微分方程是描述许多自然规律和现象的数学方法之一,常常在科学研究和工程应用中被广泛应用。
求解常微分方程的数值算法称为数值方法,这些方法用于求解微分方程的初始值问题(Initial Value Problem,简称IVP)。
本文将讨论常微分方程初值问题以及数值方法的应用。
1. 常微分方程初值问题常微分方程初值问题是一类形如$y^{\prime}=f(t,y),y(t_0)=y_0$的微分方程。
其中,$f(t,y)$是已知的函数,$y^{\prime}$表示$y$对$t$的导数,$y_0$和$t_0$是已知的初始条件。
将微分方程的解表示为$y=y(t)$,则其在$t=t_0$处的值为$y(t_0)=y_0$。
对于一个给定的常微分方程初值问题,我们需要求出其解$y=y(t)$。
常微分方程的解是一类内禀函数,通常没有解析表达式。
因此,求解微分方程的目标是得到一个数值近似解,以使得这个近似解能够满足应用上的需要。
但是,求解微分方程时需要注意最小化误差,以充分利用计算机资源和减小不确定性。
2. 数值方法数值方法是一种使用数值计算技术快速求解微分方程的方法。
常见的数值方法包括显式欧拉法,向后欧拉法,中点法,龙格–库塔法等。
2.1 显式欧拉法显式欧拉法是最简单的求解微分方程的数值方法之一,它通过计算初始值函数的斜率来求解下一个点的值,使得下一个点的值可读性更高。
具体来说,显式欧拉法使用前项差分公式:$$y_{n+1}=y_n+hf(t_n,y_n)$$其中$t_n=n \cdot h$是离散时间步($h$是时间步长)。
显式欧拉法的误差随时间步长变小。
但显式欧拉法的缺点是它难以处理比较复杂的微分方程,因为这可能需要使用较小的时间步长。
此外,显式欧拉法可能产生的数值不稳定性也是一个挑战。
2.2 龙格-库塔法龙格-库塔方法是一种经典的提高微分方程数值解精度的数值方法。
龙格-库塔法是一类迭代方法,它使用多次计算初始值函数的斜率,以生成更准确的导数值。
数值分析-常微分方程初值问题的解法
2 e O ( h ) n 1
2阶的方法
是个隐式的方法, 要用迭代法求解
5、欧拉公式的改进:
• 隐式欧拉法 向后差商近似导数
y ( x ) y ( x ) 1 0 y ( x ) 1 h
y ( x1 ) y0 h f ( x1 , y ( x1 ))
多一个初值, 可能影响精度
• 改进欧拉法
Step 1: 先用显式欧拉公式作预测,算出 y Step 2: 再将 y
n1 n1
代入隐式梯形公式的右边作校正,得到
y y h f( x ,y ) n 1 n n n h y y x ,y )f( x ,y ) ] n 1 n [f( n n n 1 n 1 2
局部截断误差
2 h h y ( x ) y ( x ) [ f ( x , y ( x )) f ( x , y ( x ))] f ' ' ' ( ) n 1 n n n n 1 n 1 2 12
所以,有
h y y [ f ( x , y ) f ( x , y )] n 1 n n n n 1 n 1 2
例如:
=x+y , x [01 ,] y (0 )1 y
x
其解析解为: y x 1 2 e
但是, 只有一些特殊类型的微分方程问题能够得到用解析 表达式表示的函数解,而大量的微分方程问题很难得到其解 析解。 因此,只能依赖于数值方法去获得微分方程的数值解。
y =e , x [0,1] 例如: y(0) 1
i 0 ,, 1, 9
算例 分别用显式Euler方法,梯形方法和预估-校正Euler方法
常微分方程出值问题得数值解法
ቤተ መጻሕፍቲ ባይዱ、离散化方法
建立常微分方程初值问题数值解法的过程,就是通 过一定的离散化方法,将对连续性问题的求解转化 为求解常微分方程在有限个离散节点上解的近似值 的过程,这个过程通常称为数值离散.常用的数值 离散化方法有: 差商代替微商法 Taylor展开法 数值积分法
2019/2/10
y ( x n 1 ) y ( x n ) hf ( x n 1 , y ( x n 1 )), n 0,1, 2,
y n 1 y n hf ( x n 1 , y n 1 ), n 0,1, 2,
上式是一个隐式的单步方法,称为隐式欧拉公式或后 退的欧拉公式。利用此公式,每一步都要把上式作为 yn+1的一个方程来求解。从数值积分的误差分析,很 难期望隐式欧拉法比显式欧拉法更精确。
2019/2/10 11
隐式Euler公式(续)
通常情况下,隐式欧拉公式很难直接求出yn+1的值, 故常用迭代法求解。在实际计算时,该公式通常与 显式Euler公式结合使用,并由显式Euler公式的结果 作为迭代的初始值,从而有如下数值格式 ( 0) yn 1 y n hf ( x n , y n ) ( s 1) (s) y y hf ( x , y n1 n n 1 n 1 ) n 1,2,, N 1 对 s 0,1,2, 循环计算,若 ( s 1) y 给定的误差限),则取 n1 作为yn+1的近似值.
四、等价的积分方程
若y(x)是初值问题的解,对方程两边同时积分, 利用初始条件可得:
该方程为与初值问题同解的积分方程,我们可以 从积分方程出发去构造初值问题的求解公式。
2019/2/10 4
常微分方程初值问题数值解法 ppt课件
数值方法的基本思想 对常微分方程初值问题(9.1)式的数值解法,就 是要算出精确解y(x)在区间a,b上的一系列离散节
点
处的函数值 a x0 x1 xn1 xn b y( x0 ), y( x1 ),, y( xn ) 的近似值 y0 , y1 , , yn .
( k 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
2017/7/23
4
从实际问题当中归纳出来的微分方程,通常主 要依靠数值解法来解决。本章主要讨论一阶常微分 方程初值问题
y f ( x , y ) ( 9.1 ) y ( x ) y 0 0 在区间a ≤ x ≤ b上的数值解法。 可以证明,如果函数在带形区域 R:{ a≤x≤b,
yn1 yn hf ( xn , yn )
2017/7/23 16
Euler 格式用数值微分方法得到。 将方程 y f ( x , y )的两端在区间 xi , xi 1 上积分得,
xi 1
xi
ydx
xi 1 xi
xi 1
xi
f ( x, y )dx
xi 1 xi
中的导数 y 进行不同的离散化处理。
2017/7/23 7
对于初值问题
y f ( x , y ) y ( x 0 ) y0
数值分析-第五讲:常微分方程数值解 共49页
为便于处理,通常假定
y ' ( x n 1 ) f ( x n 1 ,y ( x n 1 ) ) f ( x n 1 ,y n 1 )否则见P108
又 y(xn),yn y'(xn)f(xn,yn)
则
11 yn1yn2h'y n2h'y n1
并记 y'(xn)yn'
第五章:常微分方程数值解
例 P106
yn 1ynh(x fn,yn)
初值问题
y'y2x/y 0x1 Bernoulli方程 y(0)1
由Bernoulli方程的求解方法可得解析解 y 12x
Euler格式为
yn1
yn
hyn
2xn yn
令 h0.1 将 x00, y01 代入Euler格式
用改进格式计算例5.1的结果见P110表5.2
第五章:常微分方程数值解
第五章:常微分方程数值解
5、两步Euler格式
一般,如果 y(xn 1)yn 1o(hp 1) 称计算格式具有 p阶精度。
已知Euler格式 yn 1ynh(x fn,yn) h2
y(xn1)yn12y''(xn)
即 yn y(xn) 讨论 y(xn1)yn1
由Taylor公式
y ( x n 1 ) y ( x n ) y ' ( x n )x n ( 1 x n ) 1 2 y ' ' ()x n ( 1 x n ) 2
y(xn)y'(xn)h1 2y''()h2
为方程的解。 一般称为方程的通解。
如果 y(0)1 则有 y x2 1
数值分析常微分方程初值问题的数值解
2、分别取步长 ,用显式欧拉法和隐式欧拉法求解初值问题
由结果分析算法的稳定性。(解析解为 )
解:当取步长 ,计算得到以下结果
准确值
显示欧拉法
隐式欧拉法
0
100.0000
100
0.5
0.0000
5776.5
0.0004
当取步长为 ,计算结果如下:
准确值
显示欧拉法
隐式欧拉法
0.0
100
100
100
0.01
60.6531
50
66.6667
0.02
36.7879
25
44.4445
0.03
22.3130
12.5
29.6296
0.04
13.5335
6.25
19.7531
0.05
8.2085
0.025
28.6505
23.7305
32.768
0.03
22.3130
17.79797
26.2144
由结果可知,当 时,显式欧拉法不太稳定,而隐式欧拉法发散;
当 时,显式欧拉法和隐式欧拉法都是稳定的。
3、选择某常微分方程初值问题的数值方法计算 的近似值,并保证有四位有效数字。
, ,
t
0.1
0.2
0.3
0.15
0.0553
-337.5
2.3324
0.2
0.0045506.20.66640.250.0004
-759.4
0.1904
0.3
常微分方程初值问题的数值解法
常微分方程初值问题数值解法初值问题:即满足初值条件的常微分方程的解y′=f(x,y),x∈[x0,b]y(x0)=y0.定理1(利普希茨条件)若存在正数L,使得对任意,y1,y2,有|f(x,y1)−f(x,y2)|≤L|(y1−y2)|定理2(解存在性)①若函数f在方区域x∈[a,b],y∈R连续,②函数f关于y 满足利普希茨条件,则对任意x∈[a,b],常微分方程存在唯一的连续可微数值解.两类问题:①单步法---计算下一个点的值yn+1只需要用到前面一个点的值yn②多步法---计算下一个点的值yn+1需要用到前面l个点的值yl1、欧拉法---下一个点的计算值等于前一个点的计算值加上步长乘以前一个点的函数值•具体过程一些批注:显式欧拉方程指下一步要计算的值,不在迭代方程中;隐式欧拉方程指下一步要计算的值,在迭代方程中。
怎么计算隐式欧拉方程----要借助显示欧拉迭代计算---一般用迭代法-----迭代---将微分方程在区间[xn,xn+1]进行积分,然后函数f进行近似,即可得到迭代方程-----迭代方程收敛性?由函数关于y满足利普希茨条件,可以推出迭代公式收敛。
•局部截断误差:假设前n步误差为0,我们计算第n+1步的误差,将次误差称为局部截断误差,且局部误差为O(hp+1)•p阶精度:由理论证明:若局部误差阶的时间复杂度为O(hp+1),则整体误差阶为O(hp)我们称公式精度为p。
•显示欧拉法与隐式欧拉法•梯形方法----将显式欧拉迭代方程与隐式欧拉迭代方程做一下加权平均,构造的计算公式.•改进的欧拉方法---思想:因为梯形公式是隐式公式,将显式欧拉公式对下一步的计算值进行预估,用梯形公式对下一步的计算值进行校正.2、龙格-库塔方法思想:根据Lagrange中值定理,下一次的计算值可以用前一次的计算值加上h乘以前一个点的斜率;而这个斜率用该区间上的多个点的斜率的算数平均来逼近。
注意:怎么计算任意斜率Ki?第i个点的斜率Ki有微分方程可以算出f′=f(xn,yn)所以要算的f(xn,yn)值,由欧拉法即可算出, yn+1=yn+hf′•2阶-龙格-库塔方法----类似改进的欧拉法根据Lagrange中值定理,下一次的计算值可以用前一次的计算值加上h乘以斜率;而这个斜率用区间上的端点和中点的斜率的算数平均来逼近。
第九章常微分方程初值问题数值解法数值分析
yn1
由此只要 hL<1 上述迭代就可收敛到 y n+1
又如把积分区间改为[xn-1, xn+1],并对右端用中矩形公式代替
积分,可得到:
y(xn1)
y ( xn1 )
2hf
(xn ,
y(xn ))
h3 3
y( )
(xn , xn1)
推出: yn1 yn1 2hf (xn , yn ) n 1,2,
对任意的 x ∈[a, b] 和任意的y1, y2 成立,则称 f (x , y)对 y 满足利普希茨(Lipschitz)条件, L称利普希茨常数. 若f ( x, y) 在 区域G连续,关于y 满足利普希茨条件,则上述一阶常微分方 程的初值问题的解存在且唯一. 我们以下的讨论,都在满足 上述条件下进行.
决定其精度的是函数 f (xn , yn). 改进成上述增量函数, 就可 提高公式的精度.
前面所得的改进的欧拉法可表示为:
yn1
yn
h[ 2
f
(xn ,
yn )
f
( xn
h, hf
(xn ,
yn ))]
增量函数
(xn ,
yn , h)
1[f 2
(xn ,
yn )
f
( xn
h,
yn
hf
(xn ,
yn ))]
由欧拉法的公式:
yn+1= yn+h f (xn ,yn)
n=0,1,2,… 20
线法. 8
欧拉隐式公式和欧拉中点公式
对(*)式的右端用右矩形公式代替积分,可得到
y(xn1)
y(xn ) hf
(xn1, y(xn1))
#07_常微分方程初值问题的数值解法#
第九章常微分方程初值问题的数值解法第一部分内容提要一、数值解的一般概念常微分方程初值问题00'()(,)()y x f x y y x y =⎧⎨=⎩的数值解是指通过一定的近似方法得出准确解()y y x =在一列离散点012,,,,,n x x x x 上的近似值012,,,,,n y y y y 。
数值解的特征是步进式,即()y x 在1n x +点的近似值1n y +是由1,,n n x x -等若干点处的近似值1,,n n y y -的信息给出的递推公式。
若1n y +依赖于前面k 步的值11,,,n n n k y y y --+,则称为k 步法;1k =称为单步法。
利用()y x 在11,,,n n n k x x x --+的精确解11(),(),,()n n n k y x y x y x --+借助某种算法计算出1n y +,则称11()n n y x y ++-为该方法的局部截断误差。
如果一个算法的局部截断误差是1()p O h +,则称该方法是p 阶的;而利用数值解11,,,n n n k y y y --+得到的1n y +与微分方程的精确解之差11()n n y x y ++-称为整体截断误差,即是该数值方法的误差。
对于固定的0x x >,取0x x h n-=,用某种算法得到n y ,如有lim ()n h y x y →-=0,则称该方法是收敛的。
注意,因x 是固定的,随着0h →,数值解的步数n →∞。
二、在实际计算时因为舍入误差不可避免,实际得到数值解是n y ,稳定性即研究n n y y -是否随着计算步骤n 的增加而增加。
通常所提的稳定性是通过模型方程(0)y y λλ'=<来讨论的。
若当某一步n y 有舍入误差时,在以后的计算中误差不会逐步扩大,则称这种稳定性为绝对稳定性。
三、简单单步法及其收敛性、稳定性Euler 法1(,)n n n n y y hf x y +=+的局部截断误差为2()O h ,整体截断误差为()O h ,即一阶收敛。
第九章常微分方程初值问题的数值解法ppt课件
y ( xi 1 )
y(
xi ) hf
hr f r!
(
xi
,
y(
xi
))
h2 2
(r1) (xi , y(xi ))
f (xi ,
O(h r 1
y(
)
xi
))
yi1
yi
hf
(xi ,
yi )
h2 2
f (xi , yi )
hr r!
f
(r1) (xi , yi )
式中的 f (r1) (xi , yi ) 可利用原有关系 y(x) f (x, y) ,
例 1 用欧拉方法和改进的欧拉方法对初值问
题
y y(0)
y 1
2x y
,取
h
0.1,在区间
0,1
上计算。
解 首先节点为 xi 0 ih 0.1i (i 0,1,2, ,10 ),其中
h
1 0 10
0.1 ,由欧拉方法的公式得
因为假定 f (x, y) 充分光滑,所以它满足李普希兹 条件,即存在正常数 L 使
f (xm, y(xm)) f (xm, ym) L y(xm) ym
并记 em y(xm ) ym ,这样就得到
em1 Rm (1 hL) em (9.13)
把截断误差 em y(xm ) ym 就称为第 m 步的整体截断 误差。
令
i1
yi1
y* i 1
(9.17)
其中,
y* i1
是
yi
1
的近似值,若
i
1
不大,则
y* i1
可以
作为 y(xi1) 的近似值,若 i1很大,yi*1 就不能用。
常微分方程初值问题的数值解法
常微分方程初值问题的数值解法在实际应用中,对于某些微分方程,我们并不能直接给出其解析解,需要通过数值方法来求得其近似解,以便更好地理解和掌握现象的本质。
常微分方程初值问题(IVP)即为一种最常见的微分方程求解问题,其求解方法有多种,本文将对常微分方程初值问题的数值解法进行较为详细的介绍。
一、欧拉法欧拉法是最基本的一种数值解法,它采用泰勒级数展开并截断低阶项,从而获得一个差分方程近似求解。
具体来讲,设 t 为独立变量,y(t) 为函数 y 关于 t 的函数,方程为:$$y'(t) = f(t, y(t)), \qquad y(t_0) = y_0$$其中 f(t,y(t)) 为已知的函数,y(t_0) 为已知的初值。
将函数 y(t) 进行泰勒级数展开:$$y(t+h) = y(t) + hf(t, y(t)) + O(h^2)$$其中 h 表示步长,O(h^2) 表示其他高阶项。
为了使误差较小,一般取步长 h 尽可能小,于是我们可以用欧拉公式表示数值解:$$y_{n+1} = y_n + hf(t_n, y_n), \qquad y_0 = y(t_0)$$欧拉法的优点是容易理解和实现,但是由于截取低阶项且使用的单步法,所以误差较大,精度较低,在具体应用时需要慎重考虑。
二、龙格-库塔法龙格-库塔法(Runge-Kutta method)是一种多步法,比欧拉法更加精确。
龙格-库塔法的主要思想是使用不同的插值多项式来计算近似解,并且将时间步长分解,每次计算需要多次求解。
以下简要介绍二阶和四阶龙格-库塔法。
二阶龙格-库塔法将时间步长 h 分解成两步 h/2,得到近似解表达式:$$\begin{aligned} k_1 &= hf(t_n, y_n)\\ k_2 &= hf(t_n+h/2,y_n+k_1/2)\\ y_{n+1} &= y_n+k_2+O(h^3)\\ \end{aligned}$$四阶龙格-库塔法四阶龙格-库塔法是龙格-库塔法中应用最为广泛的一种方法,其需要计算的中间值较多,但是具有更高的精度。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 7.1 引言 • 7.2 欧拉方法与改进的欧拉方法 • 7.3 龙格-库塔方法
7.1 引 言
本章将考察一阶方程的初值问题
y f ( x, y),
y(
x0
)
y0 .
(1.1) (1.2)
我们知道,只要 f(x, y) 适当光滑—譬如关于 y 满 足利普希茨(Lipschitz)条件
可得欧拉法(2.1)的公式误差为
y( xn1)
yn1
h2 2
y(n )
h2 2
y( xn ),
(2.3)
称为此方法的局部截断误差.
如果对方程(1.1)从xn到xn+1积分,得
y( xn1) y( xn )
xn1 f (t, y(t))dt .
xn
(2.4)
右端积分用左矩形公式 hf(xn,y(xn)) 近似,再以 yn代 替 y(xn),yn+1代替 y(xn+1)也得到欧拉公式(2.1),局部 截断误差也是(2.3).
如果右端积分用右矩形公式 hf(xn+1,y(xn+1))近似, 则得到另一个公式
yn1 yn hf (xn1, yn1),
(2.5)
称为(隐式)后退的欧拉公式.
后退的欧拉公式与欧拉公式有着本质的区别, 后 者是关于yn+1的一个直接计算公式,这类公式称作是 显式的;前者公式的右端含有未知的yn+1,它实际上 是关于yn+1的一个函数方程,这类方程称作是隐式的.
7.2 欧拉方法与改进的欧拉方法
7.2.1 欧拉法与后退欧拉法
在xoy平面上,微分方程(1.1)式的解y=f(x)称作它 的积分曲线,积分曲线上一点(x, y)的切线斜率等于 函数f(x, y)的值. 如果按 f(x, y) 在xoy平面上建立一个 方向场,那么,积分曲线上每一点的切线方向均与 方向场在该点的方向相一致.
上的近似值 y1, y2, ,yn, yn+1, . 相邻两个节点的间距 hn=xn+1-xn 称为步长. 假定 hi=h (i=1,2, )为定数, 这时 节点为 xi=x0+ih (i=0,1,2, ) (等距节点).
初值问题的数值解法有个基本特点: 都采取“步 进式”,即求解过程顺着节点排列的次序一步一步地 向前推进.
y1
h( y1
2 x1 y1
)
1.1
0.1(1.1
0.2 ) 1.1
1.191818
依次计算下去,部分计算结果见下表.
xn 欧拉公式数值解yn 准确解y(xn)
0.2 1.191818
1.183216
0.4 1.358213
1.341641
0.6 1.508966
1.483240
0.8 1.649783
点Pn,Pn+1的坐标有关系
yn1 yn xn1 xn
yn1 yn h
f ( xn , yn ),
斜率
即
yn1 yn hf (xn, yn )
(2 .1)
这就是著名的(显式)欧拉(Euler)公式. 若初值y0已知,
则依公式(2.1)可逐次逐步算出各点数值解.
y1 y0 hf (x0, y0 ), y2 y1 hf (x1, y1),
例1 用欧拉公式求解初值问题
y
Байду номын сангаас
y
2x y
(0 x 1),
y(0) 1.
(2.2)
解 取步长h=0.1,欧拉公式的具体形式为
yn1
yn
h( yn
2xn yn
)
其中xn=nh=0.1n (n=0,1, ,10), 已知y0 =1, 由此式可得
y1
y0
h(
y0
2 x0 y0
)
1
0.1
1.1
y2
f (x, y) f (x, y) L y y .
理论上就可以保证初值问题的解 y=f(x) 存在并且唯一.
虽然求解常微分方程有各种各样的解析方法,但 解析方法只能用来求解一些特殊类型的方程,实际问 题中归结出来的微分方程主要靠数值解法.
所谓数值解法, 就是寻求解y(x)在一系列离散节点
x1 x2 xn xn1
还可以通过几何直观来考察欧拉方法的精度.假设
yn=y(xn),即顶点Pn落在积分曲线y=y(x)上,那么,
按欧拉方法做出的折线
PnPn+1便是y=y(x)过点Pn y
pn1
y y(x)
的切线.从图形上看,这样
定出的顶点Pn+1偏离了 原来的积分曲线,可见
pn
p xn1
欧拉方法是相当粗糙的.
xn
基于上述几何解释,我们从初始点P0(x0, y0)出发, 先依方向场在该点的方向推进到x=x1上一点P1,然后 再从P1点依方向场在该点的方向推进到 x=x2 上一点 P2 , 循环前进做出一条折线P0 P1 P2 .
一般地,设已做出该折线的顶点Pn,过Pn(xn, yn)依
方向场的方向再推进到Pn+1(xn+1, yn+1),显然两个顶
显式与隐式两类方法各有特点,考虑到数值稳 定性等其他因素,人们有时需要选用隐式方法,但 使用显式算法远比隐式方便.
注:隐式方程通常用迭代法求解,而迭代过程的实 质是逐步显式化.
设用欧拉公式
y(0) n1
yn
hf
( xn ,
yn )
给出迭代初值 yn(0)1,用它代入(2.5)式的右端,使之转
xn 1
x
为了分析计算公式的精度,通常可用泰勒展开将
y(xn+1)在xn处展开,则有
y(xn1)
y( xn
h)
y( xn ) hy( xn )
h2 2
y(n )
y( xn ) hf
( xn ,
yn)
h2 2
y(n )
n ( xn , xn1 ).
在yn=y(xn)的前提下,f(xn,yn )=f(xn,y(xn))=y(xn).于是
1.612452
1.0 1.784770
1.732051
误差 0.008602 0.016572 0.025726 0.037331 0.052719
与准确解 y 1 2x相比,可看出欧拉公式的计算结
果精度很差.
欧拉公式具有明显的几何意义, 就是用折线近似代
替方程的解曲线,因而常称公式(2.1)为欧拉折线法.
首先,要对微分方程离散化,建立求解数值解的 递推公式. 一类是计算 yn+1 时只用到前一点的值 yn,称 为单步法. 另一类是用到 yn+1前面 k 点的值 yn, yn-1, , yn-k+1,称为 k步法. 其次,要研究公式的局部截断误差 和阶,数值解 yn 与精确解 y(xn) 的误差估计及收敛性, 还有递推公式的计算稳定性等问题.