koorio.com
海量文库 文档专家
当前位置:首页 >> >>

简单的数值方法-精选_图文

9.2 简单的数值方法

9.2.1 欧拉法与后退欧拉法

在 x平O面y 上,微分方程 作它的积分曲线.

y??的f解(x,y) 称 y? y(x)

积分曲线上一点 ( x的, y切) 线斜率等于函数 的f (x, y)

值.

如果按函数 f (在x, y平) 面xO上y建立一个方向场,那么, 积分曲线上每一点的切线方向均与方向场在该点的方向一 致.
1

基于上述几何解释,从初始点 P0(x出0,发y0,) 先依方向场在该点的方向推进到 x ?上x1一点 ,P然1 后再 从 P依1 方向场的方向推进到 x?上x一2 点 ,循P2此前进 做出一条折线 P0P1P(2 ? 图9-1).
图9-1
2

一般地,设已作出该折线的顶点 ,Pn过 Pn(依xn, yn) 方向场的方向再推进到 Pn?1(xn?1,,y显n?1 然)两个顶点

Pn , P的n?1坐标有关系

yn?1?yn xn?1?xn

?f(xn,yn),


yn ? 1?yn?h(fxn,yn).

(2.1)

这就是著名的欧拉(Euler)公式. 若初值 y已0 知,则依公式(2.1)可逐步算出

y1?y0?h(fx0,y0), y2? y 1? h(fx 1 ,y 1 ),?
3

例1 求解初值问题

??y? ? y?2x (0?x?1),

?

y

??y(0) ?1.

(2.2)

解 欧拉公式的具体形式为

yn?1

?yn

?h(yn

?2xn). yn

取步长 h?0,.1 计算结果见表9-1.

初值问题(2.2)的解为 y? ,1?按2这x个解析式
子算出的准确值 y ( x同n )近似值 一y起n 列在表9-1中,两者 相比较可以看出欧拉方法的精度很差.
4

表9 ?1 计算结果对比

xn

yn

0.1 1.1000

0.2 1.1918

0.3 1.2774

0.4 1.3582

0.5 1.4351

y(xn ) 1.0954 1.1832 1.2649 1.3416 1.4142

xn

yn

0.6 1.5090

0.7 1.5803

0.8 1.6498

0.9 1.7178

1.0 1.7848

y(xn ) 1.4832 1.5492 1.6125 1.6733 1.7321

还可以通过几何直观来考察欧拉方法的精度.

假设 yn ?,y即(x顶n)点 落在积P分n 曲线 那么,按欧拉方法作出的折线 Pn Pn便?1是 Pn 的切线(图9-2).

上,y? y(x) y过?点y(x)

5

图9-2
从图形上看,这样定出的顶点 P明n ?显1 地偏离了原来 的积分曲线,可见欧拉方法是相当粗糙的.
为了分析计算公式的精度,通常可用泰勒展开将 y(xn?1) 在 x处n 展开,则有
6

y(xn? 1)?y(xn?h)
? ? ? y (x n )? y ?(x n )h ? h 2 2y ??(n ) n ? (x n ,x n ? 1 ).

在 yn ?y的(x前n)提下,

f( x n ,y n )? f( x n ,y ( x n )? ) y ?( x n ).

于是可得欧拉法(2.1)的公式误差

y(xn?1)?yn?1?h22 y??(?n)?

h2 2

y??(xn ),

(2.3)

称为此方法的局部截断误差.

如果对方程 y??f(从x,y)到 x n 积分x,n ?1得

? y(x n ? 1)?y(x n)?x x n n ? 1f(t,y(t)d )t.

(2.4)
7

右端积分用左矩形公式 hf(xn,y近(x似n). ) 再以 代y n替 y(xn ), y n?1 代替 y(xn也?1)得到(2.1), 局部截断误差也是(2.3).

如果在(2.4)中右端积分用右矩形公式 hf(xn?1,y(xn?1)) 近似,则得另一个公式

y n ? 1? y n? h(x fn ? 1 ,y n ? 1 ),

(2.5)

称为后退的欧拉法.

欧拉公式是关于 称作是显式的;

的y n 一?1 个直接的计算公式,这类公式

8

公式(2.5)的右端含有未知的 ,y n ?它1 是关于

函数方程,

这类公式称作是隐式的.

的y一n ?1个

隐式方程通常用迭代法求解,而迭代过程的实质是逐步 显示化.

设用欧拉公式

yn (0 ? 1 )?yn?hf(xn,yn)

给出迭代初值

y

( n

0,?)1 用它代入(2.5)式的右端,使之转化

为显式,直接计算得

yn (1 ? )1?yn? hf(xn ? 1,yn (0 ? 1 )),
9

然后再用 y n(1代?)1 入(2.5)式,又有
yn (2 ? 1 )?yn?hf(xn ? 1,yn (1 ? )1).
如此反复进行,得 y n ( k ? 1 ? 1 )? y n ? h f( x n ? 1 ,y n ( k ? 1 )),( k ? 0 , 1 ,? ).(2.6)
由于 f (x,对y) 满足y利普希茨条件(1.3). 由(2.6)减(2.5)得

y n ( k ? 1 ? 1 )? y n ? 1 ? h f( x n ? 1 ,y n ( k ? 1 )) ? f( x n ? 1 ,y n ? 1 )

?hLyn(k?1) ?yn?1.
由此可知,只要 hL?迭1代法(2.6)就收敛到解

.y n?1
10

9.2.2 梯形方法

若用梯形求积公式近似等式(2.4)右端的积分

?xn?1 f (t, y(t))dt, xn

并分别用 yn , y代n?1替 精度高的计算公式

y(xn),则y(可xn得?1)到,比欧拉法

y n ? 1?y n? h 2 [f(x n ,y n)?f(x n ? 1 ,y n ? 1 )], (2.7)

称为梯形方法.

梯形方法是隐式单步法,可用迭代法求解.

11

同后退的欧拉方法一样,仍用欧拉方法提供迭代初值, 则梯形法的迭代公式为

? ?? ? ? ??

y (0) n?1

?

yn

?

h

f

(xn ,

yn

);

y n (k ? 1 ? 1 )? y n? h 2 [f(x n,y n)?f(x n ? 1 ,y n (k ? 1 ))](2.8)
(k?0,1,2,? ).

为了分析迭代过程的收敛性,将(2.7)与(2.8)式相减,


y n ? 1? y n (k ? ? 1 1 )? h 2 [f(x n ? 1 ,y n ? 1 )? f(x n ? 1 ,y n (k ? 1 ))],

12

于是有 式中 L为

yn? 1?yn (k ? ? 11) ?h 2L yn? 1?yn (k ? 1 ),
f (x关, y于) 的利y普希茨常数.

如果选取 h充分小,使得

hL ? 1, 2

则当 k?时?有

y(k) n?1

?yn?1.

这说明迭代过程(2.8)是收敛的.

13

9.2.3 改进的欧拉公式

梯形方法虽然提高了精度,但其算法复杂.

在应用迭代公式(2.8)进行实际计算时,每迭代一次,

都要重新计算函数 的f (值x,. y)

而迭代又要反复进行若干次,计算量很大,而且往往难

以预测.

为了控制计算量,通常只迭代一两次就转入下一步的

计算,这就简化了算法. 具体地,先用欧拉公式求得一个初步的近似值
称之为预测值,

y, n ?1
14

预测值 y的n ?精1 度可能很差,再用梯形公式(2.7)将它 校正一次,即按(2.8)式迭代一次得 ,y n这?1 个结果称校 正值.
这样建立的预测-校正系统通常称为改进的欧拉公式:

预测 校正

yn ? 1?yn? hf(xn,yn),
y n ? 1?y n? h 2 [f(x n ,y n)?f(x n ? 1 ,y n ? 1 )](.2.9)

也可以表为下列平均化形式

yp?yn?hf(xn,yn), yc?yn?hf(xn? 1,yp),

yn?1?12(yp ?yc).

15

例2 用改进的欧拉方法求解初值问题(2.2).

??y? ? y?2x (0?x?1),

?

y

??y(0) ?1.

(2.2)

解 这里 f (x,y)?(y?2x), 改进的欧拉公式为
y

? ? ?

y

p

?

yn

?

h( yn

?

2 xn yn

),

? ? ? ?

yc ?yn?h(yp?2yxnp?1),

??

1 yn?1?2(yp ?yc).

16

仍取 h?,0.计1算结果见表9-2.

表9 ?2 计算结果对比

xn

yn

0.1 1.0959

0.2 1.1841

0.3 1.2662

0.4 1.3434

0.5 1.4164

y(xn ) 1.0954 1.1832 1.2649 1.3416 1.4142

xn

yn

0.6 1.4860

0.7 1.5525

0.8 1.6153

0.9 1.6782

1.0 1.7379

y(xn ) 1.4832 1.5492 1.6125 1.6733 1.7321

同例1中欧拉法的计算结果比较,改进欧拉法明显改善 了精度.

17

9.2.4 单步法的局部截断误差与阶

初值问题(1.1),(1.2)的单步法可用一般形式表示为

? y n ? 1? y n? h(x n ,y n ,y n ? 1 ,h ),

(2.10)

其中多元函数 ?与 f (x有, y关),

当 含?有 时y n,?1 方法是隐式的,若不含
所以显式单步法可表示为

则为y n显?1 式方法,

? y n ? 1?y n? h(x n ,y n ,h ),

(2.11)

?(x, y称,h为) 增量函数.

例如对欧拉法(2.1)有

?(x,y,h )?f(x,y),它的局部截断误差已由(2.3)给出.

18

对一般显式单步法则可如下定义.
定义1 设 y? y是(x初)值问题(1.1),(1.2)的准确解,

? T n ? 1 ? y ( x n ? 1 ) ? y ( x n ) ? h ( x n ,y ( x n ) h ) , (2.12)
为显式单步法(2.10)的局部截断误差.
T之n ?所1 以称为局部的,是假设在 前各x n步没有误差. 当 yn ?y时(x,n)计算一步,则有
? y ( x n ? 1 ) ? y n ? 1 ? y ( x n ? 1 ) ? [ y n ? h ( x n , y n , h )] ? ? y ( x n ? 1 ) ? y ( x n ) ? h ( x n , y ( x n ) h ) ? ,T n ? 1 .
19

局部截断误差可理解为用方法(2.11)计算一步的误差,即 在前一步精确的情况下用公式(2.11)计算产生的公式误差.
根据定义,欧拉法的局部截断误差

T n ? 1 ? y ( x n ? 1 ) ? y ( x n ) ? h ( x n f ,y ( x n ))

? y ( x n ? h ) ? y ( x n ) ? h y ?( x n )

?h2 2

y??(xn)?O(h3),

即为(2.3)的结果.

这里

h2 2

y称??(为xn局) 部截断误差主项.

Tn?1 ?O(h2).

显然
20

定义2 设 y( x是) 初值问题(1.1),(1.2)的准确解,
若存在最大整数 p使显式单步法(2.1)的局部截断误差满足
? T n ? 1 ? y ( x ? h ) ? y ( x ) ? h ( x ,y , h ) ? O ( h p ? 1 ),
(2.13) 则称方法(2.11)具有 p阶精度.
若将(2.13)展开式写成
? T n ? 1 ?( x n ,y ( x n )h ) p ? 1 ? O ( h p ? 2 ),
则 ?(xn,y(x称n)为h )局p?1 部截断误差主项.
以上定义对隐式单步法(2.10)也是适用的.
21

对后退欧拉法(2.5)其局部截断误差为

T n ? 1 ? y ( x n ? 1 ) ? y ( x n ) ? h ( x n ? f 1 ,y ( x n ? 1 ))

?hy?(xn)?h22 y??(xn)?O(h3)

?h[y?(xn)?hy??(xn)?O(h2)]

??h2 2

y??(xn)?O(h3).

这里 p ?,1是1阶方法,局部截断误差主项为

? h2 2

y. ??(xn )

22

对梯形法(2.7)有

T n ? 1 ? y (x n ? 1 )? y (x n )? h 2 [y ?(x n )? y ?(x n ? 1 )]

?hy?(xn)?h22y??(xn)?h 3!3y???(xn) ?h 2[y?(xn)?y?(xn)?hy??(xn)?h22y???(xn)]?O(h4)

??1h32y???(xn)?O(h4).
所以梯形方法是2阶的,其局部误差主项为

?

h3 12

y???( xn

).

23


网站首页 | 网站地图
All rights reserved Powered by 酷我资料网 koorio.com
copyright ©right 2014-2019。
文档资料库内容来自网络,如有侵犯请联系客服。3088529994@qq.com