计算方法第八章(常微分方程数值解)

合集下载

边值问题的数值解法

边值问题的数值解法
估计式
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章常微分方程数值解法

第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

第八章 常微分方程的初值问题

第八章 常微分方程的初值问题
2
梯形法
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章常微分方程边值问题的数值解法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方法
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)如选择梯形公式,则得
相关文档
最新文档