常微分方程初值问题数值解法
0.4 1.3582 1.3416 0.9 1.7178 1.6733
0.5 1.4351 1.4142 1.0 1.7848 1.7321
7
初值问题(2.2)有解 y ,1按2这x 个解析式子
算出的准确值 y(x同n )近似值 一y起n 列在表9-1中,两者 相比较可以看出欧拉方法的精度很差.
17
所以,局部截断误差可理解为用方法(2.10)计算一步的 误差,也即公式(2.10)中用准确解y(x代) 替数值解产生
的公式误差.
根据定义,显然欧拉法的局部截断误差
Tn1 y( xn1) y( xn ) hf ( xn , y( xn ))
y(xn h) y(xn ) hy(xn )
y(2) n1
yn
hf
( xn1,
y (1) n1
).
11
如此反复进行,得
y (k 1) n1
yn
hf
( xn1,
y(k) n1
),
(k 0,1, ).
(2.6)
由于 f (x,对y) 满足y 利普希茨条件(1.3). 由(2.6)减 (2.5)得
y (k 1) n 1
yn1
h
f
( xn1,
y(k) n 1
积分曲线上一点 (x的, y切)线斜率等于函数 值.
的f (x, y)
如果按函数 f (在x, y) 平x面y上建立一个方向场,那 么,积分曲线上每一点的切线方向均与方向场在该点的方 向相一致.
基于上述几何解释,从初始点 P0 (x出0 ,发y0,) 先依 方向场在该点的方向推进到 x 上x1一点 ,P然1 后再从 P1 依方向场的方向推进到 x 上x2一点 ,循P2此前进做出
yp
yn
h( yn
2 xn yn
),
yc
yn
h( y p
2 xn1 ), yp
yn1
1 2
(yp
yc ).
仍取 h ,0.计1 算结果见表9-2. 同例1中欧拉法的计算结 果比较,改进欧拉法明显改善了精度.
24
表9 2 计算结果对比
xn
yn
y(xn ) xn
yn
y(xn )
0.1 1.0959 1.0954 0.6 1.4860 1.4832
(2.12) 则称方法(2.10)具有p阶精度.
若将(2.12)展开式写成
Tn1 (xn , y(xn ))h p1 O(h p2 ), 则 (xn , y(x称n ))为h局p1部截断误差主项.
以上定义对隐式单步法(2.9)也是适用的.
19
对后退欧拉法(2.5)其局部截断误差为
Tn1 y( xn1) y( xn ) hf ( xn1, y( xn1))
)
f ( xn1, yn1 )
hL
y(k) n 1
yn1
.
由此可知,只要 hL 迭1代法(2.6)就收敛到解 .yn1 关于后退欧拉方法的公式误差,从积分公式看到它与欧拉
法是相似的.
12
9.2.2 梯形方法
为得到比欧拉法精度高的计算公式,在等式(2.4)右
端积分中若用梯形求积公式近似,并用 y代n 替 y(xn ), yn1 代替 y(x,n1则) 得
于是可得欧拉法(2.1)的公式误差
y(xn1)
yn1
h2 2
y(n )
h2 2
y(xn ),
称为此方法的局部截断误差.
(2.3)
9
如果对方程(1.1)从 xn到 x积n1分,得
y(xn1) y(xn )
xn1 f (t, y(t))dt.
xn
(2.4)
右端积分用左矩形公式 h f (xn , y近(x似n ,)) 再以 代替 yn y(xn ),代yn替1 也y得(x到n1() 2.1),局部截断误差也
还可以通过几何直观来考察欧拉方法的精度.
假设 yn ,y即(x顶n )点 落在积Pn分曲线 上,那么,按欧拉方法做出的折线 Pn P便n1是 过点 P的n 切线(图9-2).
y y(x) y y(x)
图9-2
8
从图形上看,这样定出的顶点 P显n著1 地偏离了原来 的积分曲线,可见欧拉方法是相当粗糙的.
为了控制计算量,通常只迭代一两次就转入下一步的 计算,这就简化了算法.
具体地,先用欧拉公式求得一个初步的近似值 y, n1 称之为预测值,预测值 yn的1精度可能很差,再用梯形公 式(2.7)将它校正一次,即按(2.8)式迭代一次得,这个 结果称校正值,而这样建立的预测-校正系统通常称为改进 的欧拉公式:
Tn1 y(xn1) y(xn ) h(xn , y(xn ), h)
(2.11)
为显式单步法(2.10)的局部截断误差. Tn1 之所以称为局部的,是假设在xn 前各步没有误差.
当 yn y时(x,n )计算一步,则有
y(xn1) yn1 y(xn1) [ yn h (xn , yn , h)] y(xn1) y(xn ) h (xn , y(xn ), h) Tn1.
为了分析计算公式的精度,通常可用泰勒展开将 y(xn1) 在 x处n 展开,则有
y(xn1) y(xn h)
y(xn )
y(xn )h
h2 2
y(n )
n ( xn , xn1).
在 yn y的(x前n )提下,
f (xn , yn ) f (x. n , y(xn )) y(xn )
yn1
yn
h 2
[
f
( xn
,
yn
)
f ( .
梯形方法是隐式单步法,可用迭代法求解.
同后退的欧拉方法一样,仍用欧拉方法提供迭代初值, 则梯形法的迭代公式为
13
y(0) n 1
yn
h
y (k 1) n 1
yn
f (xn , h[f ( 2
yn ); xn , yn
14
如果选取 h充分小,使得
hL 1, 2
则当 k 时有 收敛的.
yn(k1),这说yn明1 迭代过程(2.8)是
15
9.2.3 单步法的局部截断误差与阶
初值问题(1.1),(1.2)的单步法可用一般形式表示为
yn1 yn h(xn , yn , yn1, h),
(2.9)
其中多元函数 与 f (x有, y关),当 含有 时,yn方1法
第9章 常微分方程初值问题数值解法
9.1 引 言
本章要着重考察的一阶方程的初值问题
y f (x, y),
y(
x0
)
y0 .
(1.1) (1.2)
只要函数 f (适x,当y)光滑——譬如关于 满足利y 普 希茨(Lipschitz)条件
f (x, y) f (x, y) L y y .
(1.3)
理论上就可以保证初值问题(1.1),(1.2)的解y y(x) 存在并且唯一.
1
所谓数值解法,就是寻求解 y在(x一) 系列离散节点
x1 x2 xn xn1
上的近似值 y1, y2 , , yn., y相n邻1,两 个节点的间距 hn xn1称为x步n 长.
如不特别说明,总是假定 hi h(i为定1,2数,,) 这时节点为 xn x0 nh(i . 0,1,2, )
h2 2
y(xn ) O(h3 ),
即为(2.3)的结果.
这里 h2
2
y(称xn为) 局部截断误差主
项. 显然 Tn1 O. (h2 )
18
定义2 设 y是(x初) 值问题(1.1),(1.2)的准确解,若 存在最大整数 p使显式单步法(2.10)的局部截断误差满足
Tn1 y(x h) y(x) h(x, y, h) O(h p1),
yn1
yn
h( yn
2 xn yn
).
取步长 h 0,.1计算结果见表9-1.
表9 1 计算结果对比
xn
yn
y(xn ) xn
yn
y(xn )
0.1 1.1000 1.0954 0.6 1.5090 1.4832
0.2 1.1918 1.1832 0.7 1.5803 1.5492
0.3 1.2774 1.2649 0.8 1.6498 1.6125
22
预测 校正
yn1 yn hf (xn , yn ),
yn1
yn
h 2
[
f
( xn
,
yn
)
f ( xn1, yn1)].
(2.13)
或表为下列平均化形式
y
p
yn
hf
(xn ,
yn ),
yc
yn
hf
( xn1,
y p ),
yn1
1 2
(yp
yc ).
23
例2 用改进的欧拉方法求解初值问题(2.2). 解 改进的欧拉公式为
初值问题(1.1),(1.2)的数值解法的基本特点是 采取“步进式”,即求解过程顺着节点排列的次序一步一步 地向前推进.
描述这类算法,只要给出用已知信息 yn , yn1, yn2 , 计算 yn的1 递推公式.
首先,要对方程(1.1)离散化,建立求数值解的递
2
推公式. 一类是计算 y时n只1 用到前一点的值 ,称y为n 单步
是(2.3).
如果在(2.4)中右端积分用右矩形公式 h f (xn1, y(xn1)) 近似,则得另一个公式
yn1 yn hf (xn1, yn1),
(2.5)
称为后退的欧拉法.
后退的欧拉公式与欧拉公式有着本质的区别,后者是 关于 yn的1 一个直接的计算公式,这类公式称作是显式的;