数值计算方法-复习-第五章
( )
yp = y1 + h − y1 − y12 sin x1
( )
= 0.715489 + 0.2 −0.715489 − 0.7154892 sin1.2 ≈ 0.476964
( )
yc
=
y1 + h
−
y
p
−
y
2 p
sin
x2
( )
= 0.715489 + 0.2 −0.476964 − 0.4769642 sin1.4 ≈ 0.575259
这就是欧拉法的计算公式,h称为步长
3
例题
例5.2.1:用欧拉法求解初值问题
y'=
y
−
2x , y
y(0) = 1
0≤ x ≤1
解:求解该方程的欧拉公式为
yn+1
=
yn
+
h( yn
−
2xn yn
)
取步长h=0.1,n=0, 1, …, 9时,有
4
例题
n=0 n =1
y1
=
( ) ( ) yc =y0 + h
−
y
p−y源自2 psinx1
=1+ 0.2
−0.631706 − 0.6317062 sin1.2
≈ 0.799272
( )
y1=
1 2
yp + yc =
1 (0.631706 + 0.799272) ≈ 0.715489
2
21
改进欧拉法
n=1时
k2 = hf (xn + h, yn + k1)
= hf [xn + h, y(xn ) + k1]
= h f [xn ,
y(
xn
)]
+
h
∂ ∂x
f [xn ,
y(xn )] + k1
∂ ∂y
f [xn , y(xn )] +
= hf [xn ,
y(
xn
)]
+
h
2
∂ ∂x
f [xn ,
y(xn )]+
y'
(
xn
)
∂ ∂y
f [xn ,
y(xn )] +
= hy'(xn ) + h2 y′′(xn ) +
14
改进欧拉法
代入,可得
yn+1
=
yn
+
h 2
y'(xn ) +
h 2
y'(xn ) +
h2 2
y′′( xn ) +
=
y( xn ) + hy'( xn ) +
(xn+ p = xn + ph; yn+ p = yn + phk1)
从公式中可以看出,先计算k1,再计算yn+p,也就是 先算预报斜率,再算校正斜率,因此,可得下述计
算公式
yn+1 = yn + h(λ1k1 + λ2k2 )
k1 = f (xn , yn ) k2 = f (xn + ph, yn + phk1)
0
1
1
1
0.1
1.1
1.095909
1.095445
0.2 1.191818 1.184096
1.183216
0.3 1.277438 1.260201
1.264911
0.4 1.358213 1.343360
1.341641
0.5 1.435133 1.416102
1.414214
0.6 1.508966 1.482956
yn+1
=
1 2
(
yp
+
yc
)
y p = yn + hf (xn , yn )
yc
=
yn
+ hf
(xn+1, y p )
改进欧拉法的程序流程图
13
改进欧拉法
改进欧拉公式的截断误差
由于
k1 = hf ( xn , yn ) = hf ( xn , y( xn )) = hy'( xn )
y'+ y + y 2 sin x = 0 y(1) = 1
要求步长h =0.2,计算y(1.2),y(1.4)的近似值
19
改进欧拉法
解:由题意知 f (x, y) = − y − y 2 sin x ,改进欧拉法
的具体形式为
( )
y p = yn + h − yn − yn2 sin xn
h2 2
y′′(xn ) +
y(xn+1)的二阶泰勒展开式为
y(xn+1 )
=
y(xn
)
+
hy ' ( xn
)
+
1 2
h2
y''(xn )
+
O(h3 )
因此有
y(xn+1) − yn+1 = O(h3 )
15
改进欧拉法
例5.2.4:用欧拉法和改进欧拉法求
dy
dx
=
y
−
2x y
y0
+
h( y0
−
2x0 y0
)
= 1+ 0.1(1− 2× 0) = 1.1 1
y2
=
y1
+
h( y1
−
2 x1 y1
)
= 1.1+ 0.1(1.1− 2× 0.1) ≈ 1.191818 1.1
5
例题
xn
yn
y(xn)
xn
yn
y(xn)
0.1 1.100000 1.095445 0.6 1.508966 1.483240
预报-校正系统
在实际上,当h取值较小时,让梯形法的迭代公式 只迭代一次就结束
先用欧拉公式求得一个初步近似值 yn+1 ,称之为
预报值
11
改进欧拉法
预报值的精度不高,用它替代梯形法右端的yn+1,再 直接计算得出yn+1,并称之为校正值,这时得到预报 -校正公式
y
n+=1
yn + h f (xn , yn )
1.483240
0.7 1.580338 1.552515
1.549193
0.8 1.649783 1.616476
1.612452
0.9 1.717779 1.678168
1.673320
1.0 1.784770 1.737869
1.732051
1.1 1.85118 1.795822
1.788854
xn
xn
+
p
xn+ p = xn + ph (0 ≤ p ≤ 1)
如果两点的斜率分别为k1与k2,则通过线性组合, 可得到如下的预报-校正系统
23
二阶龙格-库塔法
ky1n+=1
= f
yn + h(λ1k1
(xn , yn )
+
λ2k2
)
k2 = f (xn+ p , yn+ p )
数值计算方法
第五章 常微分方程的数值解法
欧拉公式的导出
由于y (x0) = y0已给定,因而可以算出
y'(x0 ) = f (x0, y0 )
设x1 –x0= h充分小,则近似地有
y(x1 ) − h
y(x0 )
≈
y'(x0 ) =
f (x0 , y0 )
记
yi = y(xi ) i = 0,1,,n
二阶龙格-库塔法
将k1,k2的表达式代入
yn+1 = yn + (λ1k1 + λ2k2 )h = y(xn ) + h[λ1 y'(xn ) + λ2 y'(xn ) + λ2 phy''(xn ) + λ2O(h2 )] = y(xn ) + h(λ1 + λ2 ) y'(xn ) + λ2 ph2 y''(xn ) + O(h3 )
0.06 0.9489 0.9503
0.0014
4
0.08 0.9336 0.9354
0.0018
5
0.10 0.9192 0.923
0.0021
8
例题
例5.2.3:取步长 h=0.2 ,用欧拉法解初值问题
y' = − y − xy 2 y(0) = 1
x ∈ [0,0.6]
9
例题
yn+1
= yn + h2 [ f (xn ,
yn ) +
f
(xn+1, yn+1)]
将预报-校正公式称为改进欧拉公式 ,这个公式还 可写为
12
改进欧拉法
yn+1
=
yn
+
1 2
k1