计算方法第八章(常微分方程数值解)
边值问题的数值解法
M b a 2 y xk y k h ,k 1, 2, ,n 1。 96
2
y 4 x 。因此,当 h 0 时,差分方程的解收敛到微分方 其中 M max a x b
y f x,y,y, y x,y sk,
这里的 s k 为
(8.6.3)
y
在 处的斜率。令 z y ,上述二阶方程可降为一阶方程组
y z, z f x,y,z ,
(8.6.4)
y a ,z a sk。
计算结果表明打靶法的效果是很好的,计算精度取决于所选取的初值问题数
值方法的阶和所选取的步长 h 的大小。不过,打靶法过分依赖于经验,选取试射 值,有一定的局限性。
第八章常微分方程数值解法
8.6.2 差分方法
差分方法是解边值问题的一种基本方法,它利用差商代替导数,将微分方程 离散化为线性或非线性方程组(即差分方程)来求解。 先考虑线性边值问题(8.6.2)的差分法。将区间 a,b 分成 n 等分,子区间的
s2
,同理得到 yb,s2 ,再判断它是否满足精度要求
y b,s2 。如此重复,直到某个 s 满足 y b,sk ,此时得到 k
的 y xi 和 yi z xi 就是边值问题的解函数值和它的一阶导数值。上述方程 好比打靶, s k 作为斜率为子弹的发射,y b 为靶心,故称为打靶法。
y xy 4 y 12 x 2 3x, 0 x 1, y 0 0,y 1 2,
其解的解析表达式为 y
x x 4 x 。来自解 先将该线性边值问题转化为两个初值问题
xy1 4 y1 12 x 2 3 x, y1 1 0, y1 0 0,y1 xy2 4 y2 0, y2 1 1。 y2 0 0,y2
常微分方程的数值解
f ( x, y1 ) f ( x, y2 ) L y1 y2
(其中 L 为 Lipschitz 常数)则初值问题( 1 )存 在唯一的连续解。
求问题(1)的数值解,就是要寻找解函数在一 系列离散节点x1 < x2 <……< xn < xn+1 上的近似 值y1, y 2,…,yn 。 为了计算方便,可取 xn=x0+nh,(n=0,1,2,…), h称为步长。
(1),(2)式称为初值问题,(3)式称为边值问题。 在实际应用中还经常需要求解常微分方程组:
f1 ( x, y1 , y2 ) y1 ( x0 ) y10 y1 (4) f 2 ( x, y1 , y2 ) y2 ( x0 ) y20 y2
本章主要研究问题(1)的数值解法,对(2)~(4)只 作简单介绍。
得 yn1 yn hf ( xn1 , yn1 )
上式称后退的Euler方法,又称隐式Euler方法。 可用迭代法求解
二、梯形方法 由
y( xn1 ) y( xn )
xn1 xn
f ( x, y( x))dx
利用梯形求积公式: x h x f ( x, y( x))dx 2 f ( xn , y( xn )) f ( xn1 , y( xn1 ))
常微分方程的数言 简单的数值方法 Runge-Kutta方法 一阶常微分方程组和高阶方程
引言
在高等数学中我们见过以下常微分方程:
y f ( x, y, y) a x b y f ( x, y ) a x b (2) (1) (1) y ( x ) y , y ( x ) y 0 0 0 0 y ( x0 ) y0 y f ( x, y, y) a x b (3) y(a) y0 , y(b) yn
第8章常微分方程数值解法
的解为
y ( x) e
x2
x 0
e dt
t2
但要计算它的值,还需要用数值积分的方法。如果要 对许多个 x 值计算解 y(x) 的近似值,那么工作量非常大。况 且实际计算不一定要求解析表达式,而是只需求在某些点 上满足精度的解的近似值或解的近似表达式就可以了。
由于高阶常微分方程可以转化为一阶常微分方程组,因 此,为了不失一般性,本章主要介绍一类一阶常微分方程初 值问题
的解来近似微分方程初值问题(8.2)的解,其 中 h (b- a) / 2 ,式(8.3)也称为欧拉公式。
欧拉法的几何意义是用一条自点 ( x0 , y0 ) 出发的 折线去逼近积分曲线 y f (x) ,如图8.1所示。 因此,这种方法又称为折线法。显然,欧拉法 简单地取折线的端点作为数值解,精度非常差。
float euler(float x0,float xn,float y0,int N) { float x,y,h; int i; x=x0; y=y0; h=(xn-x0)/(float)N; /* 计算步长 */ for(i=1;i<=N;i++) /* 欧拉公式 */ { y=y+h*func(x,y); x=x0+i*h; } return(y); }
8.4 龙格—库塔(Runge-Kutta)法 8.4.1 龙格—库塔法的基本思想
在欧拉法 yi 1 yi h f ( xi , yi ) (i 0,1,) 中,用解函数 y f (x) 在 点 x i 处的斜率 f ( xi , y i ) 计算从 yi 到 y i 1 的增量,y i 1 的表达式 与 y( xi 1 ) 的Taylor展开式的前二项相等,使方法只有一阶精度。 改进的欧拉法用两个点 x i ,x i 1 处的斜率 f ( xi , y i )、f ( xi 1 , yi 1 ) 的平均值计算增量,使方法具有二阶精度,即 y i 1 的表达式 与 y( xi 1 ) 的Taylor展开式的前三项相等。 由此龙格和库塔提出了一种间接地运用Taylor公式的方法, y (x) 即利用 在若干个待定点上的函数值和导数值做出线性组 合式,选取适当系数使这个组合式进行Taylor展开后与 y( xi 1 ) 的Taylor展开式有较多的项达到一致,从而得出较高阶的数 值公式,这就是龙格—库塔法的基本思想。
第八章常微分方程的数值解法
y( xn1 )
15
Euler法的收敛性
称初值问题(8.1.1)的数值解法是收敛的,如:
h0 ( n )
lim yn y ( x)
其中: x xn x0 nh , x [ x0 , b]
16
例考察以下初值问题Euler法的收敛性
dy y dx y (0)=y0 ( 0)
★
可得: h (k ) ( k 1) y y | f ( xn 1 , yn ) f ( x , y 1 n 1 n 1 ) | 2 hL ( k ) hL k 1 (1) ( k 1) (0) | yn 1 yn 1 | ( ) | yn 1 yn 1 | 2 2 hL k 1 ( k 1) 从而 : lim( ) 0 , 故有 lim yn 1 y n 1 。 k 2 k
★
由y0=y( x0 ), 假定yn=y( xn ), 往证:
y0 yn 1 y ( xn 1 ) xn 1; x0
14
证明
yn yn1 yn hf ( xn , yn ) yn h xn 1 1 yn (1 h ) y( xn )(1 h ) xn xn y0 y0 1 xn (1 h ) ( xn h) x0 xn x0 y0 xn 1 x0
8
局部截断误差
假设第n步在点xn的值计算没有误差,即yn y( xn ), 由单步法计算出yn1 , 则
Tn1 y( xn1 ) yn1 称为点xn1上的局部截断误差.
从初值y( x0 ) y0出发,由单步法显式或隐式 逐步计算,得xn 1的值yn 1 , 则
n1 y( xn1 ) yn1
第八章 常微分方程的初值问题
梯形法
yn 1 yn
h 2
[ f ( xn , yn ) f ( xn1 , yn1 )]
从n=0开始计算,每步都要求解一个关于yn+1的方程
(一般是一个非线性方程),可用如下的迭代法计算:
( 0) yn1 yn hf ( xn , yn ) ( k 0,1, 2,) ( k 1) h (k ) yn1 yn [ f ( xn , yn ) f ( xn1 , yn1 )] 2
向前Euler法: y n 1 y n h f ( x n , y n ), n 0 ,1, 2 , 此处,y (xn)表示 xn 处的理论解,yn表示y (xn)的近似解
推导2: 一阶ODE
y '( x ) f ( x , y ( x )) y( x0 ) y0
2、如果 f 是 y 的函数 ,积分过程将不同于前者。 若 f 是 y 的线性函数,如:f=ay+b 其中a,b是常数或是 t 的函数, 此时原方程称为线性ODE 若 f 不是线性函数,方程就称为非线性ODE。
一、求ODE的解析解
dsolve
[输出变量列表]=dsolve(‘eq1’,‘eq2’, ... , ‘eqn’, ‘cond1’,‘cond2’, ... , ‘condn’, ‘v1,v2,…vn') 其中 eq1、eq2、...、eqn为微分方程,cond1、 cond2、...、condn为初值条件,v1,v2,…,vn 为自变量。 注1: 微分方程中用 D 表示对 自变量 的导数,如: Dy y'; D2y y''; D3y y'''
例 求解
常微分方程的数值解法
常微分方程的数值解法常微分方程是研究变量的变化率与其当前状态之间的关系的数学分支。
它在物理、工程、经济等领域有着广泛的应用。
解常微分方程的精确解往往十分困难甚至不可得,因此数值解法在实际问题中起到了重要的作用。
本文将介绍常见的常微分方程的数值解法,并比较其优缺点。
1. 欧拉方法欧拉方法是最简单的数值解法之一。
它基于近似替代的思想,将微分方程中的导数用差商近似表示。
具体步骤如下:(1)确定初始条件,即问题的初值。
(2)选择相应的步长h。
(3)根据微分方程的定义使用近似来计算下一个点的值。
欧拉方法的计算简单,但是由于误差累积,精度较低。
2. 改进欧拉方法为了提高欧拉方法的精度,改进欧拉方法应运而生。
改进欧拉方法通过使用两个点的斜率的平均值来计算下一个点的值。
具体步骤如下:(1)确定初始条件,即问题的初值。
(2)选择相应的步长h。
(3)根据微分方程的定义使用近似来计算下一个点的值。
改进欧拉方法相较于欧拉方法而言,精度更高。
3. 龙格-库塔法龙格-库塔法(Runge-Kutta)是常微分方程数值解法中最常用的方法之一。
它通过迭代逼近精确解,并在每一步中计算出多个斜率的加权平均值。
具体步骤如下:(1)确定初始条件,即问题的初值。
(2)选择相应的步长h。
(3)计算各阶导数的导数值。
(4)根据权重系数计算下一个点的值。
与欧拉方法和改进欧拉方法相比,龙格-库塔法的精度更高,但计算量也更大。
4. 亚当斯法亚当斯法(Adams)是一种多步法,它利用之前的解来近似下一个点的值。
具体步骤如下:(1)确定初始条件,即问题的初值。
(2)选择相应的步长h。
(3)通过隐式或显式的方式计算下一个点的值。
亚当斯法可以提高精度,并且比龙格-库塔法更加高效。
5. 多步法和多级法除了亚当斯法,还有其他的多步法和多级法可以用于解常微分方程。
多步法通过利用多个点的值来逼近解,从而提高精度。
而多级法则将步长进行分割,分别计算每个子问题的解,再进行组合得到整体解。
第8章常微分方程边值问题的数值解法
第8章常微分方程边值问题的数值解法8.1 引言第7章介绍了求解常微分方程初值问题的常用的数值方法;本章将介绍常微分方程的边值问题的数值方法。
只含边界条件(boundary-value condition)作为定解条件的常微分方程求解问题称为常微分方程的边值问题(boundary-value problem). 为简明起见,我们以二阶边值问题为例介绍常用的数值方法。
一般的二阶常微分方程边值问题(boundary-value problems for second-order ordinary differential equations)为, (8.1.1)其边界条件为下列三种情况之一:(1) 第一类边界条件 (the first-type boundary conditions):(2) 第二类边界条件 (the second-type boundary conditions):(3) 第三类边界条件 (the third-type boundary conditions):定理8.1.1 设(8.1.1)中的函数及其偏导数在上连续. 若(1) 对所有,有;(2) 存在常数,对所有,有,则边值问题(8.1.1)有唯一解。
推论若线性边值问题(8.1.2)满足(1)和上连续;(2) 在上,,则边值问题(8.1.1)有唯一解。
求边值问题的近似解,有三类基本方法:(1) 差分法(difference method),也就是用差商代替微分方程及边界条件中的导数,最终化为代数方程求解;(2) 有限元法(finite element method);(3) 把边值问题转化为初值问题,然后用求初值问题的方法求解。
8.2 差分法8.2.1 一类特殊类型二阶线性常微分方程的边值问题的差分法设二阶线性常微分方程的边值问题为其中在上连续,且用差分法解微分方程边值问题的过程是:(i) 把求解区间分成若干个等距或不等距的小区间,称之为单元;(ii) 构造逼近微分方程边值问题的差分格式. 构造差分格式的方法有差分法, 积分插值法及变分插值法;本节采用差分法构造差分格式;(iii) 讨论差分解存在的唯一性、收敛性及稳定性;最后求解差分方程.现在来建立相应于二阶线性常微分方程的边值问题(8.2.1), (8.2.2)的差分方程.( i ) 把区间等分,即得到区间的一个网格剖分:,其中分点,并称之为网格节点(grid nodes);步长.( ii ) 将二阶常微分方程(8.2.2)在节点处离散化:在内部节点处用数值微分公式(8.2.3)代替方程(8.2.2)中,得, (8.2.4)其中.当充分小时,略去式(8.2.4)中的,便得到方程(8.2.1)的近似方程, (8.2.5)其中,分别是的近似值, 称式(8.2.5)为差分方程(difference equation),而称为差分方程(8.2.5)逼近方程(8.2.2)的截断误差(truncation error). 边界条件(8.7.2)写成(8.2.6)于是方程(8.2.5), (8.2.6)合在一起就是关于个未知量,以及个方程式的线性方程组:(8.2.7)这个方程组就称为逼近边值问题(8.2.1), (8.2.2)的差分方程组(system of difference equations)或差分格式(difference scheme),写成矩阵形式. (8.2.8)用第2章介绍的解三对角方程组的追赶法求解差分方程组(8.2.7)或(8.2.8), 其解称为边值问题(8.2.1), (8.2.2)的差分解(difference solution). 由于(8.2.5)是用二阶中心差商代替方程(8.2.1)中的二阶微商得到的,所以也称式(8.2.7)为中心差分格式(centered-difference scheme).( iii ) 讨论差分方程组(8.2.7)或(8.2.8)的解是否收敛到边值问题(8.2.1), (8.2.2)的解,估计误差.对于差分方程组(8.2.7),我们自然关心它是否有唯一解;此外,当网格无限加密,或当时,差分解是否收敛到微分方程的解. 为此介绍下列极值原理:定理8.2.1 (极值原理) 设是给定的一组不全相等的数,设. (8.2.9)(1) 若, 则中非负的最大值只能是或;(2) 若, 则中非正的最小值只能是或.证只证(1)的情形,而(2)的情形可类似证明.用反证法. 记,假设, 且在中达到. 因为不全相等,所以总可以找到某个,使,而和中至少有一个是小于的. 此时因为,所以, 这与假设矛盾,故只能是或. 证毕!推论差分方程组(8.2.7)或(8.2.8)的解存在且唯一.证明只要证明齐次方程组(8.2.10)只有零解就可以了. 由定理8.7.1知,上述齐次方程组的解的非负的最大值和非正的最小值只能是或. 而,于是证毕!利用定理8.2.1还可以证明差分解的收敛性及误差估计. 这里只给出结果:定理8.2.2 设是差分方程组(8.2.7)的解,而是边值问题(8.2.1), (8.2.2)的解在上的值,其中. 则有(8.2.11)其中.显然当时,. 这表明当时,差分方程组(8.2.7)或(8.2.8)的解收敛到原边值问题(8.7.1), (8.7.2)的解.例8.2.1 取步长,用差分法解边值问题并将结果与精确解进行比较.解因为,, 由式(8.2.7)得差分格式,, 其结果列于表8.2.1.表8.2.1准确值0 1 0 01 0.1 -0. 0332923 -0.03336562 0.2 -0. 0649163 -0.06506043 0.3 -0. 0931369 -0.09334614 0.4 -0. 1160831 -0.11634825 0.5 -0. 1316725 -0.13197966 0.6 -0. 1375288 -0.13785787 0.7 -0. 1308863 -0.13120878 0.8 -0. 1084793 -0.10875539 0.9 -0. 0664114 -0.066586510 1.0 0 0从表8.2.1可以看出, 差分方法的计算结果的精度还是比较高的. 若要得到更精确的数值解,可用缩小步长的方法来实现.8.2.2 一般二阶线性常微分方程边值问题的差分法对一般的二阶微分方程边值问题(8.2.12)假定其解存在唯一.为求解的近似值,类似于前面的做法,( i ) 把区间等分,即得到区间的一个网格剖分:,其中分点,步长.( ii ) 对式(8.2.12)中的二阶导数仍用数值微分公式代替,而对一阶导数,为了保证略去的逼近误差为,则用3点数值微分公式;另外为了保证内插,在2个端点所用的3点数值微分公式与内网格点所用的公式不同,即(8.2.13)略去误差,并用的近似值代替,,便得到差分方程组(8.2.14)其中,是的近似值. 整理得(8.2.15)解差分方程组(8.2.15),便得边值问题(8.2.12)的差分解.特别地, 若,则式(8.2.12)中的边界条件是第一类边值条件:此时方程组(7.7.16)为(8.2.16)方程组(8.2.16)是三对角方程组,用第2章介绍的解三对角方程组的追赶法求解差分方程组(8.2.16),便得边值问题(8.2.12)的差分解.( iii ) 讨论差分方程组(8.2.16)的解是否收敛到微分方程的解,估计误差. 这里就不再详细介绍.例8.2.2 取步长,用差分法求下列边值问题的近似解,并将结果与精确解进行比较.精确解是.解因为,, 由式(8.2.17)得差分格式,, 其结果列于表8.2.2.表8.2.2准确值0 0 -0.3 -0.31 /16 -0.3137967 -0.31374462-0.3154982 -0.3154322 2/163-0.3050494 -0.3049979 3/1644-0.2828621 -0.2828427/1655-0.2497999 -0.2498180/1666-0.2071465 -0.2071930/167-0.1565577 -0.15660567/168 /2 -0.1000000 -0.10000008.3 有限元法有限元法(finite element method)是求解微分方程定解问题的有效方法之一,它特别适用在几何、物理上比较复杂的问题. 有限元法首先成功地应用于结构力学和固体力学,以后又应用于流体力学、物理学和其他工程科学. 为简明起见,本节以线性两点边值问题为例介绍有限元法.考虑线性两点边值问题其中,.此微分方程描述了长度为的可变交叉截面(表示为)的横梁在应力和下的偏差.8.3.1 等价性定理记, 引进积分. (8.3.3)任取,就有一个积分值与之对应,因此是一个泛函(functional),即函数的函数. 因为这里是的二次函数,因此称为二次泛函.对泛函(8.3.3)有如下变分问题(variation problem):求函数,使得对任意, 均有, (8.3.4) 即在处达到极小, 并称为变分问题(8.3.4)的解.可以证明:定理8.3.1(等价性定理)是边值问题(8.3.1), (8.3.2)的解的充分必要条件是使泛函在上达到极小,即是变分问题(8.3.4)在上的解.证 (充分性) 设是变分问题的解;即使泛函在上达到极小,证明必是边值问题(8.3.1), (8.3.2)的解.设是任意一个满足的函数,则函数,其中为参数. 因为使得达到极小,所以,即积分作为的函数,在处取极小值,故. (8.3.5)计算上式,得利用分部积分法计算积分代入式(8.3.6),得因为是任意函数,所以必有. (8.3.8) 否则,若在上某点处有,不妨设,则由函数的连续性知,在包含的某一区间上有.作显然,且,但,这与式(8.3.7)矛盾. 于是式(8.3.8)成立,即变分问题(8.3.4)的解满足微分方程(8.3.1), 且故它是边值问题(8.3.1), (8.3.2)的解.。
计算方法课件第八章常微分方程初值问题的数值解法
整体截断误差与局部截断误差的关系
定理:如果f(x,y)满足李普希兹(Lipschitz)条件
f(x ,y 1 )f(x ,y 2) L y 1y 2
且局部截断误差有界:
|R n|1 2h2M 2
(n1,2, )
则Euler法的整体截断误差n满足估计式:
ne(ba)L 0h 2L M 2(e(ba)L1)
分光滑。初值问题的解析解(理论解)用 y(x表n ) 示, 数值解法的精确解用 y表n 示。
常微分方程数值解法一般分为:
(1)一步法:在计算y n 1 时,只用到x n 1 ,x n和 y,n 即前一步的值。
(2)多步法:计算 y n 1 时,除用到 x n 1 ,x n 和 y n 以外,还要用 x n p 和 y n p (p1 ,2 k;k0) ,即前
其中L为李普希兹常数,b-a为求解区间长度,
M2 mayx(x) 。 axb
证明参见教材。
Remark:该定理表明,整体截断误差比局部截 断误差低一阶。对其它方法,也有类似的结论。
收敛性与稳定性
收敛性定义:如果某一数值方法对于任意固定的
xn=x0+nh,当h0(同时n )时有yn y(xn),
则称该方法收敛。 稳定性定义 定义 用一个数值方法,求解微分方程初值问 题时,对给定的步长h>0,若在计算 y n 时引入 误差 (n 也称扰动),但由此引起计算后面的 ynk(k1,2, )时的误差按绝对值均不增加,则 称这个数值方法是稳定的。
一般的显式rk方法可以写成型钢截面只需少量加工即可用作构件省工省时成本低但型钢截面受型钢种类及型钢号限制难于完全与受力所需的面积相对应用料较多其中为常数选取这些常数的原则是要求第一式的右端在处泰勒展开后按h型钢截面只需少量加工即可用作构件省工省时成本低但型钢截面受型钢种类及型钢号限制难于完全与受力所需的面积相对应用料较多上述公式叫做n级的rungekutta方法其局部截断误差为显然euler法是一级一阶rk方法
常微分方程数值解法
第八章 常微分方程的数值解法一.内容要点考虑一阶常微分方程初值问题:⎪⎩⎪⎨⎧==00)(),(y x y y x f dx dy微分方程的数值解:设微分方程的解y (x )的存在区间是[a,b ],在[a,b ]内取一系列节点a= x 0< x 1<…< x n =b ,其中h k =x k+1-x k ;(一般采用等距节点,h=(b-a)/n 称为步长)。
在每个节点x k 求解函数y(x)的近似值:y k ≈y(x k ),这样y 0 , y 1 ,...,y n 称为微分方程的数值解。
用数值方法,求得f(x k )的近似值y k ,再用插值或拟合方法就求得y(x)的近似函数。
(一)常微分方程处置问题解得存在唯一性定理对于常微分方程初值问题:⎪⎩⎪⎨⎧==00)(),(y x y y x f dx dy如果:(1) 在B y y A x x 00≤-≤≤,的矩形内),(y x f 是一个二元连续函数。
(2) ),(y x f 对于y 满足利普希茨条件,即2121y y L y x f y x f -≤-),(),(则在C x x 0≤≤上方程⎪⎩⎪⎨⎧==00)(),(y x y y x f dxdy的解存在且唯一,这里C=min((A-x 0),x 0+B/L),L 是利普希茨常数。
定义:任何一个一步方法可以写为),,(h y x h y y k k k 1k Φ+=+,其中),,(h y x k k Φ称为算法的增量函数。
收敛性定理:若一步方法满足: (1)是p 解的.(2) 增量函数),,(h y x k k Φ对于y 满足利普希茨条件.(3) 初始值y 0是精确的。
则),()()(p h O x y kh y =-kh =x -x 0,也就是有0x y y lim k x x kh 0h 0=--=→)((一)、主要算法 1.局部截断误差局部截断误差:当y(x k )是精确解时,由y(x k )按照数值方法计算出来的1~+k y 的误差y (x k+1)- 1~+k y 称为局部截断误差。
常微分方程的数值解法
数值计算方法
都是一次的,则y称它, y是线, 性的, ,y否(n则) 称为非线性的。
在高等数学中,对于常微分方程的求解,给出 了一些典型方程求解析解的基本方法,如可分离变 量法、常系数齐次线性方程的解法、常系数非齐次 线性方程的解法等。但能求解的常微分方程仍然是 有限的,大多数的常微分方程是不可能给出解析解。 譬如
y x2 y2
这个一阶微分方程就不能用初等函数及其积 分来表达它的解。
再如,方程
y y
y
(0)
1
的解 y e x ,虽然有表可查,但对于表 上没有给出 e x 的值,仍需插值方法来
计算
从实际问题当中归纳出来的微分方程,通常主要依
靠数值解法来解决ቤተ መጻሕፍቲ ባይዱ本章主要讨论一阶常微分方程
初值问题
y f (x, y)
y
(
x0
)
y0
( 7.1 )
在区间a ≤ x ≤ b上的数值解法。
可以证明,如果函数在带形区域 R=a≤x≤b,
-∞<y<∞}内连续,且关于y满足李普希兹
(Lipschitz)条件,即存在常数L(它与x,y无关)使
f (x, y1) f (x, y2 ) L y1 y2
对R内任意两个 y1, y2 都成立,则方程( 7.1 )的解 y y(x) 在a, b上存在且唯一。
数值计算方法
常微分方程的数值解法
包含自变量、未知函数及未知函数的导数或微 分的方程称为微分方程。在微分方程中, 自变量的 个数只有一个, 称为常微分方程.。自变量的个数 为两个或两个以上的微分方程叫偏微分方程。微分 方程中出现的未知函数最高阶导数的阶数称为微分 方程的阶数。如果未知函数y及其各阶导数
第八章常微分方程的初值问题
y(k) n1
)]
迭代法太麻烦,实际上,当h取得很小时,只让上式中 的第二式迭代一次就可以,即
改进的Euler法(也叫欧拉预估—校正法)
y(0) n1
yn
hf ( xn , yn )
预估算式
yn1
yn
h 2 [ f ( xn, yn )
f
(
xn1
,
y(0) n1
)]
校正算式
改进的Euler法=向前欧拉法+梯形法
x0
x
y( x) y( x0 )
f ( x, y( x))dx
x0
x
y( x) y( x0 )
f ( x, y( x))dx
x0
1、向前Euler法 y'( x) f ( x, y( x)), y( x0 ) y0
推导1:设节点为 xn x0 nh,(n 0,1,2, ) 用向前差分公式代替导数:
注1: 微分方程中用 D 表示对 自变量 的导数,如:
Dy
y'; D2y
y''; D3y
y'''
注2:如果省略初值条件,则表示求通解;
例 :求微分方程 dy 2 xy xe x2的通解,并验证。 dx
>> y=dsolve('Dy+2*x*y=x*exp(-x^2)','x') 结果为 y =(1/2*x^2+C1)*exp(-x^2)
xn
y( xn1) y( xn )
xn1 f ( x, y( x))dx
xn
用矩形代替右边的积分 y( xn1 ) y( xn ) hf ( xn , y( xn ))
第八章 常微分方程初值问题的解法
第八章常微分方程初值问题的解法在科学与工程问题中,常微分方程描述物理量的变化规律,应用非常广泛. 本章介绍最基本的常微分方程初值问题的解法,主要针对单个常微分方程,也讨论常微分方程组的有关技术.8.1引言本节介绍常微分方程、以及初值问题的基本概念,并对常微分方程初值问题的敏感性进行分析.8.1.1 问题分类与可解性很多科学与工程问题在数学上都用微分方程来描述,比如,天体运动的轨迹、机器人控制、化学反应过程的描述和控制、以及电路瞬态过程分析,等等. 这些问题中要求解随时间变化的物理量,即未知函数y(t),t表示时间,而微分方程描述了未知函数与它的一阶或高阶导数之间的关系. 由于未知函数是单变量函数,这种微分方程被称为常微分方程(ordinary differential equation, ODE),它具有如下的一般形式①:g(t,y,y′,⋯,y(k))=0 ,(8.1) 其中函数g: ℝk+2→ℝ. 类似地,如果待求的物理量为多元函数,则由它及其偏导函数构成的微分方程称为偏微分方程(partial differential equation, PDE). 偏微分方程的数值解法超出了本书的范围,但其基础是常微分方程的解法.在实际问题中,往往有多个物理量相互关联,它们构成的一组常微分方程决定了整个系统的变化规律. 我们先针对单个常微分方程的问题介绍一些基本概念和求解方法,然后在第8.5节讨论常微分方程组的有关问题.如公式(8.1),若常微分方程包含未知函数的最高阶导数为y(k),则称之为k阶常微分方程. 大多数情况下,可将常微分方程(8.1)写成如下的等价形式:y(k)=f(t,y,y′,⋯,y(k−1)) ,(8.2) 其中函数f: ℝk+1→ℝ. 这种等号左边为未知函数的最高阶导数y(k)的方程称为显式常微分方程,对应的形如(8.1)式的方程称为隐式常微分方程.通过简单的变量代换可将一般的k阶常微分方程转化为一阶常微分方程组. 例如对于方程(8.2),设u1(t)=y(t),u2(t)=y′(t),⋯,u k(t)=y(k−1), 则得到等价的一阶显式常微分方程组为:{u1′=u2u2′=u3⋯u k′=f(t,u1,u2,⋯,u k).(8.3)本书仅讨论显式常微分方程,并且不失一般性,只需考虑一阶常微分方程或方程组.例8.1 (一阶显式常微分方程):试用微积分知识求解如下一阶常微分方程:y′=y .[解] 采用分离变量法进行推导:①为了表达式简洁,在常微分方程中一般省略函数的自变量,即将y(t)简记为y,y′(t)简记为y′,等等.dy dt =y ⟹ dy y=dt , 对两边积分,得到原方程的解为:y (t )=c ∙e t ,其中c 为任意常数.从例8.1看出,仅根据常微分方程一般无法得到唯一的解. 要确定唯一解,还需在一些自变量点上给出未知函数的值,称为边界条件. 一种边界条件设置方法是给出t =t 0时未知函数的值:y (t 0)=y 0 .在合理的假定下,从t 0时刻对应的初始状态y 0开始,常微分方程决定了未知函数在t >t 0时的变化情况,也就是说这个边界条件可以确定常微分方程的唯一解(见定理8.1). 相应地,称y (t 0)=y 0为初始条件,而带初始条件的常微分方程问题:{y ′=f (t,y ),t ≥t 0y (t 0)=y 0 . (8.4)为初值问题(initial value problem, IVP ).定理8.1:若函数f (t,y )关于y 满足李普希兹(Lipschitz )条件,即存在常数L >0,使得对任意t ≥t 0,任意的y 与y ̂,有:|f (t,y )−f(t,y ̂)|≤L |y −y ̂| ,(8.5) 则常微分方程初值问题(8.4)存在唯一的解.一般情况下,定理8.1的条件总是满足的,因此常微分方程初值问题的解总是唯一存在的. 为了更清楚地理解这一点,考虑f (t,y )的偏导数ðf ðy 存在,则它在求解区域内可推出李普希兹条件(8.5),因为f (t,y )−f (t,y ̂)=ðf ðy (t,ξ)∙(y −y ̂) , 其中ξ为介于y 和y ̂之间的某个值. 设L 为|ðf ðy (t,ξ)|的上界,(8.5)式即得以满足.对公式(8.4)中的一阶常微分方程还可进一步分类. 若f (t,y )是关于y 的线性函数,f (t,y )=a (t )y +b (t ) ,(8.6) 其中a (t ),b (t )表示自变量为t 的两个一元函数,则对应的常微分方程为线性常微分方程,若b (t )≡0, 则为线性齐次常微分方程. 例8.1中的方程属于线性、齐次、常系数微分方程,这里的“常系数”是强调a (t )为常数函数.8.1.2 问题的敏感性对常微分方程初值问题,可分析它的敏感性,即考虑初值发生扰动对结果的影响. 注意这里的结果(解)是一个函数,而不是一个或多个值. 由于实际应用的需要,分析常微分方程初值问题的敏感性时主要关心t →∞时y (t )受影响的情况,并给出有关的定义. 此外,考虑到常微分方程的求解总与数值算法交织在一起、以及历史的原因,一般用“稳定”、“不稳定”等词汇说明问题的敏感性.定义8.1:对于常微分方程初值问题(8.4),考虑初值y 0的扰动使问题的解y (t )发生偏差的情形. 若t →∞时y (t )的偏差被控制在有界范围内,则称该初值问题是稳定的(stable ),否则该初值问题是不稳定的(unstable ). 特别地,若t →∞时y (t )的偏差收敛到零,则称该初值问题是渐进稳定的(asymptotically stable ).关于定义8.1,说明两点:● 渐进稳定是比稳定更强的结论,若一个问题是渐进稳定的,它必然是稳定的. ● 对于不稳定的常微分方程初值问题,初始数据的扰动将使t →∞时的结果误差无穷大. 因此为了保证数值求解的有效性,常微分方程初值问题具有稳定性是非常重要的.例8.2 (初值问题的稳定性): 考察如下“模型问题”的稳定性:{y ′=λy,t ≥t 0y (t 0)=y 0 . (8.7)[解] 易知此常微分方程的准确解为:y (t )=y 0e λ(t−t 0). 假设初值经过扰动后变为y 0+Δy 0,对应的扰动后解为y ̂(t )=(y 0+Δy 0)e λ(t−t 0),所以扰动带来的误差为Δy (t )=Δy 0e λ(t−t 0) .根据定义8.1,需考虑t →∞时Δy (t )的值,它取决于λ. 易知,若λ≤0,则原问题是稳定的,若λ>0,原问题不稳定. 而且当λ<0时,原问题渐进稳定.图8-1分三种情况显示了初值扰动对问题(8.7)的解的影响,从中可以看出不稳定、稳定、渐进稳定的不同含义.对例8.2中的模型问题,若考虑参数λ为一般的复数,则问题的稳定性取决于λ的实部,若Re(λ)≤0, 则问题是稳定的,否则不稳定. 例8.2的结论还可推广到线性、常系数常微分方程,即根据f (t,y )中y 的系数可确定初值问题的稳定性. 对于一般的线性常微分方程(8.6),由于方程中y 的系数为关于t 的函数,仅能分析t 取某个值时的局部稳定性.例8.3 (局部稳定性): 考察如下常微分方程初值问题的稳定性:{y ′=−10ty,t ≥0y (0)=1 . (8.8)[解] 此常微分方程为线性常微分方程,其中y 的系数为a (t )=−10t . 当t ≥0时,a (t )≤0,在定义域内每个时间点上该问题都是局部稳定的.事实上,方程(8.8)的解析为y (t )=e −5t 2,初值扰动Δy 0造成的结果误差为Δy (t )=Δy 0e −5t 2. 这说明初值问题(8.8)是稳定的.对于更一般的一阶常微分方程(8.4),由于其中f (t,y )可能是非线性函数,分析它的稳定性非常复杂. 一种方法是通过泰勒展开用一个线性常微分方程来近似它,再利用线性常微分方程稳定性分析的结论了解它的局部稳定性. 具体的说,在某个解函数y ∗(t)附近用一阶泰勒展开近似f (t,y ),f (t,y )≈f (t,y ∗)+ðf ðy(t,y ∗)∙(y −y ∗) 则原微分方程被局部近似为(用符号z 代替y ): 图8-1 (a) λ>0对应的不稳定问题, (b) λ=0对应的稳定问题, (c) λ<0对应的渐进稳定问题. (a) (b) (c)z′=ðfðy(t,y∗)∙(z−y∗)+f(t,y∗)这是关于未知函数z(t)的一阶线性常微分方程,可分析t取某个值时的局部稳定性. 因此,对于具体的y∗(t)和t的取值,常微分方程初值问题(8.4)的局部稳定性取决于ðfðy(t,y∗)的实部的正负号. 应注意的是,这样得到的关于稳定性的结论只是局部有效的.实际遇到的大多数常微分方程初值问题都是稳定的,因此在后面讨论数值解法时这常常是默认的条件.8.2简单的数值解法与有关概念大多数常微分方程都无法解析求解(尤其是常微分方程组),只能得到解的数值近似. 数值解与解析解有很大差别,它是解函数在离散点集上近似值的列表,因此求解常微分方程的数值方法也叫离散变量法. 本节先介绍最简单的常微分方程初值问题解法——欧拉法(Euler method),然后给出数值解法的稳定性和准确度的概念,最后介绍两种隐格式解法.8.2.1 欧拉法数值求解常微分方程初值问题,一般都是“步进式”的计算过程,即从t0开始依次算出离散自变量点上的函数近似值. 这些离散自变量点和对应的函数近似值记为:t0<t1<⋯<t n<t n+1<⋯y 0,y1,⋯y n,y n+1,⋯其中y0是根据初值条件已知的. 相邻自变量点的间距为 n=t n+1−t n, 称为步长.数值解法通常使用形如y n+1=G(y n+1,y n,y n−1,…,y n−k)(8.9) 的计算公式,其中G表示某个多元函数. 公式(8.9)是若干个相邻时间点上函数近似值满足的关系式,利用它以及较早时间点上函数近似值可算出y n+1. 若公式(8.9)中k=0,则对应的解法称为单步法(single-step method),其计算公式为:y n+1=G(y n+1,y n) .(8.10) 否则,称为多步法(multiple-step method). 另一方面,若函数G与y n+1无关,即:y n+1=G(y n,y n−1,…,y n−k),则称为显格式方法(explicit method),否则称为隐格式方法(implicit method). 显然,显格式方法的计算较简单,只需将已得到的函数近似值代入等号右边,则可算出y n+1.欧拉法是一种显格式单步法,对初值问题(8.4)其计算公式为:y n+1=y n+ n f(t n,y n) , n=0,1,2,⋯.(8.11) 它可根据数值微分的向前差分公式(第7.7节)导出. 由于y′=f(t,y),则y′(t n)=f(t n,y(t n))≈y(t n+1)−y(t n)n,得到近似公式y(t n+1)≈y(t n)+ n f(t n,y(t n)),将其中的函数值换为数值近似值,则得到欧拉法的递推计算公式(8.11). 还可以从数值积分的角度进行推导,由于y(t n+1)=y(t n)+∫y′(s)dst n+1t n =y(t n)+∫f(s,y(s))dst n+1t n,用左矩形公式近似计算其中的积分(矩形的高为s=t n时被积函数值),则有y(t n+1)≈y(t n)+ n f(t n,y(t n)) ,将其中的函数值换为数值近似值,便得到欧拉法的计算公式.例8.4 (欧拉法):用欧拉法求解初值问题{y ′=t −y +1y (0)=1. 求t =0.5时y (t )的值,计算中将步长分别固定为0.1和0.05.[解] 在本题中,f (t,y )=t −y +1, t 0=0, y 0=1, 则欧拉法计算公式为:y n+1=y n + (t n −y n +1) , n =0,1,2,⋯当步长h=0.1时,计算公式为y n+1=0.9y n +0.1t n +0.1; 当步长h=0.05时,计算公式为y n+1=0.95y n +0.05t n +0.05. 两种情况的计算结果列于表8-1中,同时也给出了准确解y (t )=t +e −t 的结果.表8-1 欧拉法计算例8.4的结果 h=0.1h=0.05 t ny n y (t n ) t n y n t n y n 0.11.000000 1.004837 0.05 1.000000 0.3 1.035092 0.21.010000 1.018731 0.1 1.002500 0.35 1.048337 0.31.029000 1.040818 0.15 1.007375 0.4 1.063420 0.41.056100 1.070320 0.2 1.014506 0.45 1.080249 0.5 1.090490 1.106531 0.25 1.023781 0.5 1.098737 从计算结果可以看出,步长取0.05时,计算的误差较小.在常微分方程初值问题的数值求解过程中,步长 n ,(n =0,1,2,⋯)的设置对计算的准确性和计算量都有影响. 一般地,步长越小计算结果越准确,但计算步数也越多(对于固定的计算区间右端点),因此总计算量就越大. 在实际的数值求解过程中,如何设置合适的步长达到准确度与效率的最佳平衡是很重要的一个问题.8.2.2数值解法的稳定性与准确度在使用数值方法求解初值问题时,还应考虑数值方法的稳定性. 实际的计算过程中都存在误差,若某一步的解函数近似值y n 存在误差,在后续递推计算过程中,它会如何传播呢?会不会恶性增长,以至于“淹没”准确解?通过数值方法的稳定性分析可以回答这些问题. 首先给出稳定性的定义.定义8.2:采用某个数值方法求解常微分方程初值问题(8.4),若在节点t n 上的函数近似值存在扰动δn ,由它引起的后续各节点上的误差δm (m >n )均不超过δn ,即|δm |≤|δn |,(m >n),则称该方法是稳定的.在大多数实际问题中,截断误差是常微分方程数值求解中的主要计算误差,因此我们忽略舍入误差. 此外,仅考虑稳定的常微分方程初值问题.考虑单步法的稳定性,需要分析扰动δn 对y n+1的影响,推导δn+1与δn 的关系式. 以欧拉法为例,先考虑模型问题(8.7),并且设Re(λ)≤0. 此时欧拉法的计算公式为②:y n+1=y n + λy n =(1+ λ)y n ,由y n 上的扰动δn 引起y n+1的误差为:δn+1=(1+ λ)δn ,要使δn+1的大小不超过δn ,则要求|1+ λ|≤1 . (8.12)② 对于稳定性分析以及后面的一些场合,由于只考虑一步的计算,将步长 n 记为 .。
计算方法第八章
y y
( k +1) n +1
(0) n +1
= yn + hf ( xn , yn )
(k ) n +1
= yn + f ( xn , yn ) ⋅ h / 2 + f ( xn +1 , y ) ⋅ h / 2
收敛的条件: 收敛的条件:
f (x, y) = −y yn+1 = yn−1 − 2hyn
y1 = (1− h) y0 , y0 =1
计 算 结 果
0.02 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
0.9802 0.90484 0.81873 0.74082 0.67032 0.60653 0.54881 0.49659 0.44933 0.40657
欧拉中点公式
yn+1 = yn−1 + 2hf (xn , yn ) , y(x0 ) = y0
利用中点公式求解微分方程时,有一个问题,就是计算时需 利用中点公式求解微分方程时,有一个问题, 要两个迭代初值! 要两个迭代初值! 对于这个问题,我们可以先用欧拉公式, 对于这个问题,我们可以先用欧拉公式,通过给定的初值计 算出第一个点的值,然后在利用这两个(第一和第二个点) 算出第一个点的值,然后在利用这两个(第一和第二个点) 的值进行计算,直到计算出全部节点上的值。 的值进行计算,直到计算出全部节点上的值。 下面,我们用中点公式求解刚才的例子,计算的步长取 下面,我们用中点公式求解刚才的例子,计算的步长取0.01, , 可以看到,计算的精度比较高。 可以看到,计算的精度比较高。 此时, 此时,计算公式为
常微分方程初值问题的的数值解法
本章讨论常微分方程初值问题的数值解法
2
考虑一阶常微分方程的初值问题
⎧ dy ⎪ = f ( x, y ) ⎨ dx ⎪ ⎩ y (a ) = y0
x ∈ [a, b]
只要 f (x, y) 在[a, b] × R1 上连续,且关于 y 满足 Lipschitz 条 件,即存在与 x, y 无关的常数 L 使对任意x∈[a, b] ,和y1, y2 ∈ R1 都有 | f ( x, y1) − f ( x, y2 ) | ≤ L| y1 − y2 | 在唯一解。 成立, 则上述问题存
⎧ ⎪ ⎨ ⎪ ⎩ y n +1 = yn + hf ( xn , yn ), h yn +1 = yn + [ f ( xn , yn ) + f ( xn +1 , y n +1 )] 2
改进的Euler方法:y0=1,
y1=y0+hf (x0, y0) =1.1, y1=1+01./2 ×[(1−2 ×0/1)+(1.1−2 ×0.1/1.1)] =1.095909, …… y11=…… y11=1.737869.
1 yn +1 = yn + h[ f ( xn , yn ) + f ( xn +1 , yn +1 )] 2
12
称之为梯形公式。这是一个隐式的计算公式,欲求的yn+1需 解一个方程。
3.截断误差
定义 在假设 yn = y(xn),即第 n 步计算是精确的前提下,考 虑的截断误差 εn+1 = y(xn+1) − yn+1 称为局部截断误差
⎧ y n +1 = y n + k1 ⎨ ⎩k1 = hf ( xn ,y n )
常微分方程的线性多步法汇总
v0 0,v1 5.3216 ,v2 8.8911 ,v3 11.2565 , v4 12.8630 ,v5 13.9411 ,v6 146674 ,v7 15.1552 , v8 15.4830 ,v9 15.7030 ,v10 15.8508 ,v11 15.9500 , v12 16.0165 ,v13 16.0612 ,v14 16.0912 ,v15 16.1113 。
p 为 F kv ,其中 1 p 2 ,比例系数 k 依赖于物体的大小、形状,空气
的密度和粘度。跳伞员下落的速度可描述为下列模型:
第八章常微分方程数值解法
dv p m k v mg ,v0 0, dt
负号表示下降。显然,当 1< p <2 时,适合于数值方法求解。 设 k / m =1.5,g=32,先用中点法提供开始值,再用下列两步而阶方法
yn1 yn h rj f n j,
j 0
r
(8.4.2)
其中
r 1 1 xn1 tk rj l j x dx dt,j 0, 1,r。 x 0 n h k 0,k j k j
由此可得(8.4.2)中的系数,其具体数值见表8-6。公式(8.4.2)是一个r+1 步的显式公式,称为Adams显式公式。r=0时,即为Euler公式。
基于数值积分可以构造出一系列求解常微分方程的计算公式,下面介绍
基于 Taylor 展开的待定系数法,它可灵活地构造出线性多步法。对固定的系
数,可以选取待定系数使线性多步法的阶尽可能高。还可以根据需要,确定 显
常微分方程数值解法
第八章 常微分方程数值解法教学目的 1. 掌握解常微分方程的单步法:Euler 方法、Taylor 方法和Runge-Kutta 方法;2. 掌握解常微分方程的多步法:Adams 步法、Simpson 方法和Milne 方法等;3. 了解单步法的收敛性、相容性与稳定性;多步法的稳定性。
教学重点及难点 重点是解常微分方程的单步法:Euler 方法、Taylor 方法和Runge-Kutta 方法和解常微分方程的多步法:Adams 步法、Simpson 方法和Milne 方法等;难点是理解单步法的收敛性、相容性与稳定性及多步法的稳定性。
教学时数 20学时 教学过程§1基本概念1.1常微分方程初值问题的一般提法常微分方程初值问题的一般提法是求函数b x a x y ≤≤),(,满足⎪⎩⎪⎨⎧=<<=)2.1()()1.1(),,(αa yb x a y x f dx dy其中),(y x f 是已知函数,α是已知值。
假设),(y x f 在区域},),{(+∞<≤≤=y b x a y x D 上满足条件: (1)),(y x f 在D 上连续; (2)),(y x f 在D 上关于变量y 满足Lipschitz 条件:2121),(),(y y L y x f y x f -≤-,21,,y y b x a ∀≤≤ (1.3)其中常数L 称为Lipschitz 常数。
我们简称条件(1)、(2)的基本条件。
由常微分方程的基本理论,我们有:定理1 当),(y x f 在D 上满足基本条件时,一阶常微分方程初值问题(1.1)、(1.2)对任意给定α存在唯一解)(x y 在],[b a 上连续可微。
定义1 方程(1.1)、(1.2)的解)(x y 称为适定的,若存在常数0>ε和0>K ,对任意满足条件εδ≤及εη≤∞)(x 的δ和)(x η,常微分方程初值问题⎪⎩⎪⎨⎧+=<<+=δηa a z b x a x z x f dx dz)(),(),((1.4)存在唯一解)(x z ,且}.{)()(δη+≤-∞∞K x z x y适定问题的解)(x y 连续依赖于(1.1)右端的),(y x f 和初值α。
实验八 常微分方程初值问题数值解法报告
实验八 常微分方程初值问题数值解法一、基本题科学计算中经常遇到微分方程(组)初值问题,需要利用Euler 法,改进Euler 法,Rung-Kutta 方法求其数值解,诸如以下问题:(1) ()⎪⎩⎪⎨⎧=-='004y xy y x y 20≤<x分别取h=0.1,0.2,0.4时数值解。
初值问题的精确解245x y e -=+。
(2) ()⎩⎨⎧=--='0122y y x y 01≤≤-x用r=3的Adams 显式和预 - 校式求解取步长h=0.1,用四阶标准R-K 方法求值。
(3)()()()100010321331221==-='⎪⎩⎪⎨⎧-='-='='y y y y y y y y y 10≤≤x用改进Euler 法或四阶标准R-K 方法求解取步长0.01,计算(0.05),(0.1y y y 数值解,参考结果 123(0.15)0.9880787,(0.15)0.1493359,(0.15)0.8613125y y y ≈-≈≈。
(4)利用四阶标准R- K 方法求二阶方程初值问题的数值解(I )()()⎩⎨⎧='==+'-''10,00023y y y y y 02.0,10=≤≤h x(II)()()()⎩⎨⎧='==+'--''00,10011.02y y y y y y 1.0,10=≤≤h x(III)()()⎪⎩⎪⎨⎧='=+='00,101y y e y y x 1.0,20=≤≤h x(IV)()()⎩⎨⎧='==+''00,100sin y y y y 2.0,40=≤≤h x二、应用题1. 小型火箭初始质量为900千克,其中包括600千克燃料。
火箭竖直向上发射时燃料以15千克/秒的速率燃烧掉,由此产生30000牛顿的恒定推力.当燃料用尽时引擎关闭。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
xi 1, xi , xi 1,, xi k
作为
节点,可得亚当斯(Adams)隐式公式
h * * * * yi 1 yi (b0 fi 1 b1 fi b2 f i bk f i k ) A
局部截断误差:
R[ y] B h
* k 2 k 1ห้องสมุดไป่ตู้
则局部截断误差为:
n1 y( xn1 ) yn1
p
如局部截断误差为 O(h ) ,称为具有 p 阶局部截断误差。
欧拉方法的误差分析:
y ( xn 1 ) y ( xn ) y ( xn h) y ( xn ) h h y ( xn ) y( xn )h y( )h 2 / 2 y ( xn ) y( xn ) y( )h / 2 h
用迭代法计算 yn+1 的值。 (1)简单迭代
(0) yn 1 yn hf ( xn , yn )
( k 1) (k ) yn y f ( x , y ) h / 2 f ( x , y 1 n n n n 1 n 1 ) h / 2
收敛的条件:
Lh / 2 1
ynk ( xn ,, xnk , yn ,, ynk 1 , ynk )
1.2 欧拉方法的其他改进 微分方程数值解的关键在于对导数的处理,可以用差分来近似
导数,也可以通过积分,将导数项化掉。
对于方程: y( x) f ( x, y( x)) 首先,作出划分 a x x x x 0 1 2 N 1 xN b 设已经求出第 n 个节点的函数值 yn ,在区间 [ x , x ] 上对 n n 1 方程两边积分
这是我们最终使用的计算格式。
例子:
y y (0 x 1) y (0) 1
1 yn 1 yn 2 ( K1 K 2 ) K1 hf ( xn , yn ) hyn K hf ( x h, y K ) h( y K ) n n 1 n 1 2
下面我们分别取步长为0.1与0.01进行计算, 计算结果显示在下面的图中。
步长为0.1的计算结果。
步长为0.01的计算结果
0.01 0.1 0.2 0.3 0.4 0.41 0.59 0.6 0.9 0.91 0.99 1
0.99005 0.90484 0.81873 0.74082 0.67032 0.66365 0.55433 0.54881 0.40657 0.40252 0.37158 0.36788
y ( xn 1 ) y ( xn ) 欧拉公式中我们利用了近似公式 y ( xn ) h
光这个近似产生的误差为
y ( xn 1 ) y ( xn ) 1 y( xn ) y ( )h O (h ) h 2
y ( xn 1 ) y ( xn 1 ) 利用 y ( xn ) 2h
第八章 常微分方程初值
问题数值解法
本章主要研究常微分方程初值问题的数值求解:
y( x) f ( x, y ( x)) a x b y (a) y0
通常,假设函数 f 关于第二个变量满足李普希茨条件(L条 件),即为存在常数 L > 0,使得
f ( x, y1 ) f ( x, y2 ) L y1 y2
完全类似的可以得到 后退欧拉公式的局部截断误差为:
n1 y( xn1 ) yn1 O(h )
2
欧拉中点公式的局部截断误差为:
n1 y( xn1 ) yn1 O(h )
3
欧拉梯形公式的局部截断误差为:
n1 y( xn1 ) yn1 O(h )
取步长为0.1计算,结果如图。
图:
DOUBLE PRECISION h,y(0:10),ak1,ak2 OPEN(20,FILE='OUTPUT1.DAT',STATUS="UNKNOWN") h=1.0/10 y(0)=1.0 do 10 i=1,10 ak1=-h*y(i-1) ak2=-h*(y(i-1)+ak1) y(i)=y(i-1)+(ak1+ak2)/2.0 10 continue do 20 i=0,10 write(20,*) i*h,y(i),exp(-i*h) 20 continue END
第一节 一般概念 1.1 欧拉法及其简单改进
y( x) f ( x, y ( x)) a x b y (a) y0
方法:选择适当的节点,用差分近似微分,将方程离散化, 从而求在这些节点上的解的近似值。
a x0 x1 x2 xN 1 xN b hn xn1 xn 称为 xn 到 xn1 的步长(通常取为常数h) y ( xn 1 ) y ( xn ) y( x ) |x xn ,记yn为 y(xn)的近似计算值,有 h
例如:后退欧拉法、欧拉梯形公式 显然,利用隐式法求微分方程的数值解是,需要从表达式中 反解未知节点上的函数值。
1.3 隐式法的具体计算: 例如欧拉梯形公式
yn1 yn [ f ( xn , yn ) f ( xn1 , yn1 )] h / 2 yn f ( xn , yn ) h / 2 f ( xn1 , yn1 ) h / 2
若用简单迭代,而且只迭代一步,这样组成的一组计算公式称 为预测--校正公式。(迭代初值 称为校正)
(0) yn 1 yn hf ( xn , yn ) (0) y y [ f ( x , y ) f ( x , y n n n n 1 n 1 )] h / 2 n 1
作为节点,将被积函数用插值多
项式来近似,用插值多项式带到积分中去求出积分,则可以得
到所谓的亚当斯(Adams)显式公式
h yi 1 yi (b0 fi b1 fi 1 bk fi k ) A
局部截断误差:
R[ y] Bk h
k 1 ( k 1)
y
(i )
类似地,如果取
y( xn1 ) y( xn )
积分公式计算积分!
xn1
xn
f ( x, y( x))dx
容易看出,要求第 n+1 个节点的函数值,关键在于选择适当的
(1)如选择下矩形公式,则得
yn1 yn f ( xn , yn )h
这正是前面的欧拉公式。
(2)如选择上矩形公式,则得
yn1 yn f ( xn1 , yn1 )h
(0) 称为预测,迭代步 yn 1
预测-校正公式也称为改进的欧拉法,将上面的组合公式改 写为:
yn1 yn [ f ( xn , yn ) f ( xn1, yn hf ( xn , yn ))] h / 2
注意到 xn1 xn h ,将上式进一步改写为:
1 yn 1 yn 2 ( K1 K 2 ) K1 hf ( xn , yn ) K hf ( x h, y K ) n n 1 2
用此法解前面的例子
步长0.1
步长0.01
1.4 误差估计 定义:利用第n个节点或之前更多节点的函数精确值,利用近 似公式数值计算第n+1个节点的近似值,所引起的误差,称 为第n+1个节点上的局部截断误差。
我们记 y ( xn 1 ) 为第n+1个节点上解的精确值, yn 1 为假设
yn y ( xn ) 等条件下计算所得的近似值,
同理,对于后退欧拉公式
yn1 yn f ( xn1 , yn1 )h
有预测-校正公式
(0) y n 1 yn hf ( xn , yn ) (0) y y f ( x , y n n 1 n 1 ) h n 1
或改写为:
K hf ( xn , yn ) yn 1 yn f ( xn 1 , yn K )h
0.99 0.90438 0.81791 0.7397 0.66897 0.66228 0.55268 0.54716 0.40473 0.40068 0.36973 0.36603
DOUBLE PRECISION h,y(0:100) OPEN(20,FILE='OUTPUT.DAT',STATUS="UNKNOWN") h=1.0/100 y(0)=1.0 do 10 i=1,100 y(i)=y(i-1)*(1.0-h) write(20,*) i*h,y(i) 10 continue END
同时初值是准确的,则整体截断误差为p阶。 欧拉公式、后退欧拉公式的整体误差为 1 阶。 欧拉中点公式、欧拉梯形公式的整体误差为 2 阶。
微分方程数值解法的进一步改进。再回到恒等式
y( xi 1 ) y( xi )
如果取
xi1
xi
f ( x, y( x))dx
xi , xi 1,, xi k
(2)牛顿迭代
( k 1) yn 1 (k ) (k ) y y f ( x , y ) h / 2 f ( x , y (k ) n 1 n n n n 1 n 1 ) h / 2 yn1 (k ) 1 f y ( xn1 , yn1 ) h / 2
y( xn ) f ( xn , y( xn )) y ( xn1 ) y ( xn ) hf ( xn , y ( xn )) O(h )
2
而
yn1 y( xn ) hf ( xn , y( xn )) 2 n 1 y ( xn 1 ) yn 1 O(h )
这是所谓的后退欧拉公式。
(3)如选择梯形公式,则得