§ 6 常微分方程的数值解法 一、 一阶微分方程初值问题的数值解
要求微分方程
x yx f
y ,
d
d
在初始条件
y x0 y0 下的数值解,就是要在解存在的区间的一系列点
x0 x1 x2 xn 上从初值y0出发,逐个求出y(xi)的近似值yi .
[改进的欧拉方法(预报校正法)] 计算公式为
) 2 ( ,
2 ,
) 1 ( ,
0 1 1 1
0 1
n n n
n n
n
n n n
n
y x f y x h f y y
y x hf y y
式中yn表示y(xn)的近似值,hxi1xi表示步长.这里截断误差为
RO h3
这个方法中,(1)式用折线法提供初值,称为预报公式.(2)式用梯形法给出较精确的值,
称为校正公式.合称预报校正公式.
[龙格-库塔方法] 计算公式为
yn1 yn 1 k1 k2 k3 k4
6 2 2
式中
k hf x y
k hf x h
y k
k hf x h
y k
k hf x h y k
n n
n n
n n
n n
1
2
1
3
2
4 3
2 2
2 2
, , , , 截断误差为 R=O(h5) 手算时按下表自上而下进行.
xm ym ki hf k
x0
h x x h x h
0 0 0
2 2
h x x1 0
y0
3 0
2 0
1 0
2 2
k y y k y k
0 6
1
y k y
0 0 3
4
2 0 0
3
1 0 0
2
0 0 1
,
2 ) 2,
(
2) 2,
(
) , (
k y h x hf k
y k x h
hf k
y k x h
hf k
y x hf k
k
k k
k k
) (
2 2 3
4 1
[阿达姆斯方法]
1 内插公式
y y h
f x y f x y f x y f x y
n1 n n1 n1 n n n1 n1 n2 n2
24 9 , 19 , 5 , ,
这是关于yn1的隐式方程,只要h比较小,可用迭代法求解.
2 外推公式
y y h
f x y f x y f x y f x y
n1 n n n n1 n1 n2 n2 n3 n3
24 55 , 59 , 37 , 9 ,
这是关于yn+1的显式方程,只要知道前几点的值,就可从公式中直接算出yn+1. 3 预报校正公式
y y h
f x y f x y f x y f x y
y y h
f x y f x y f x y f x y
n n n n n n n n n n
n n n n n n n n n n
1 0
1 1 2 2 3 3
1 1 1
0
1 1 2 2
24 55 59 37 9
24 9 19 5
, , , ,
, , , ,
截断误差都为
R=O(h5)
阿达姆斯方法可以单独采用外推公式计算,每算一个yn+1,只要计算一次f(x,y)的值,计
算量比龙格-库塔法小,而截断误差同阶,所以计算量小是外推法优点之一.缺点是前几个yi 值不能用此法计算,计算y1 ,y2 ,y3需采用其他方法(一般可用龙格-库塔法).
补充说明 1 阿达姆斯方法中,计算yn+1的值,要用到yn,yn1,yn2,yn3所以称为多步法.
而改进的欧拉法、龙格-库塔法,只要用到yn,所以称为一步法.
2 一步法中途改变步长方便,多步法中途改变步长麻烦,因要用一步法重新算出开头几 项.
3 多步法还有一个优点,即可顺便估计出截断误差.
用yn+1(E)和yn+1(I)分别表示用外推和内插公式算得的值,有
y xn1 ynI1 19 h y5 5 xn ynI1 ynE1 720
19
720 式中
xn
x
n x
x y y
55
5
d
d .若计算时规定的允许误差不超过ε ,就将ε 与
19 720 ynI1 ynE1
比较,如果 72019
yn I1 yn E1
,可继续计算,否则说明误差太大,应当缩小步长.若
19
720 ynI1 ynE1 比ε 小得多,不妨将步长放大,提高计算速度.
二、 一阶微分方程组初值问题的数值解
这里为书写简便,只讨论含两个未知函数的微分方程组,含多个未知函数的微分方程 组,计算公式类同.
z y x x g z
z y x x f y
, d ,
d
, d ,
d
和初始条件
y x0 y0 , z x0 z0 [改进的欧拉方法(预报校正法)]
预报公式
y y hf x y z
z z hg x y z
n n n n n
n n n n n
1 0
1 0
, , , , 校正公式
y y h
f x y z f x y z
z z h
g x y z g x y z
n n n n n n n n
n n n n n n n n
1 1 1
0 1 0
1 1 1
0 1 0
2 2
, , , ,
, , , ,
[龙格-库塔方法] 计算公式为
y y k k k k
z z l l l l
n n
n n
1 1 2 3 4
1 1 2 3 4
1
6 2 2
1
6 2 2
其中
k hf x y z
k hf x h
y k
z l
k hf x h
y k
z l
k hf x h y k z l
l hg x y z
l hg x h
y k
z l l hg x h
y k
z l
n n n
n n n
n n n
n n n
n n n
n n n
n n n
1
2
1 1
3
2 2
4 3 3
1
2
1 1
3
2
2 2 2
2 2 2
2 2 2
2 2
, ,
, ,
, ,
, ,
, ,
, ,
, ,
2
4 3 3
2
l hg xn h y, n k z, n l
先计算k1,l1,k2,l2,k3,l3,k4,l4,再计算yn+1,zn+1. [阿达姆斯方法的预报校正公式]
预报值(外推公式)
3 3 3 2
2 2
1 1 1 0
1
3 3 3 2
2 2
1 1 1 0
1
, , 9
, , 37
, , 59 ,
, 24 55
, , 9
, , 37
, , 59 ,
, 24 55
n n n n
n n
n n n n
n n n
n
n n n n
n n
n n n n
n n n
n
z y x g z
y x g
z y x g z
y x h g
z z
z y x f z
y x f
z y x f z
y x h f
y y
校正值(内插公式)
2 2 2 1
1 1
0 1 0
1 1 1
2 2 2 1
1 1
0 1 0
1 1 1
, , ,
, 5
, , 19 ,
, 24 9
, , ,
, 5
, , 19 ,
, 24 9
n n n n
n n
n n n n
n n n
n
n n n n
n n
n n n n
n n n
n
z y x g z
y x g
z y x g z
y x h g z z
z y x f z y x f
z y x f z
y x h f y y
前几个yj和zj的计算与本节一中的龙格-库塔方法相同.
三、 边值问题
这里只讨论二阶线性常微分方程的边值问题.
y b x
y a x
x f y x x q x y x p
y
, ,
d d d
d
2 2
(1)
[差分方法] 将区间[a,b]分成n等份,步长h b a
n ,分点x0=a, x1=a+h, …, xk=a+kh, …,xn=b 称为节点.把微商用差商代替,边值问题化为下面差分方程组的求解问题.
y y y
h p y y
k q y f k n
y y
k k k
k
k k
k k k
n
1 1
2
1 1
0
2
2 1 2, ,, 1
式中yk=y(xk),pk=p(xk),qk=q(xk),fk=f(xk) (k1,2,,n1).上面的差分方程组可看成n+1个未知量
y0,y1,y2,…,yn 的线性代数方程组,方程个数也是n+1.整理合并同类项,差分方程组可改写成
y
a y b y c y d
y
k k k k k k k
n 0
1 1
(k1,2,,n1) 式中
a h
p
b h q
c h
p d h f
k n
k k
k k
k k
k k
1 2
2
1 2
1 2 1
2
2
, ,,
这是一种特殊形式的线性代数方程组,除了可用消元法,迭代法等求解外,还可用更简 便有效的方法—追赶法(见第四章, §3).
在应用上,还可能遇到下面形式的边界条件:
2 2
1 1
d ,d
d ,d
x y b y x
x y a y x
式中α 1,α 2,β 1,β 2是已知常数.这时,上面差分方程组中相应于边界条件的那两个方程 要换成:
y y
h y
y y
h y
n n
n
1 0
1 0 1
1
2 2
[化为初值问题的数值解] 先求出初值问题
y p x y q x y f x y a a
y a 0
的数值解y0(x),再求出满足初始条件y(a)=0,y'(a)=1的相应齐次方程
y p x y q x y 0 的数值解y1(x).原边值问题(1)的解可表示为
y x y x y b
y b y x
0
0 1
1
四、 小参数法
当微分方程含有绝对值很小的参数ε 时,将解写成ε 的幂级数以求得近似解析解的方 法,称为小参数法.下面就常微分方程初值问题作简略介绍.
给定微分方程组
t x x
i n
t f x
n i
i , , , , 1,2, ,
d d
1
(1)
假设所有 fi
t,x1,,xn,
作为t的函数是充分光滑的,作为x1,,xn,的函数是解析的,并且在 ε =0可以展开成ε 的幂级数
f t xi , 1,,xn, fi0 t x, 1,,xn fi1 t x, 1,,xn 系数 fi(m)
t,x1,,xn,
又都是x1,…,xn的解析函数.又给定初始条件
t=t0时,xi=xi(ε )=xi(0) +ε xi(1) +… (2) 于是方程组(1)的满足初始条件(2)的解在t与ε 的某区域上存在,并且可以展开成ε 的幂级数
xi x ti , xi0 t xii t i 1 2, ,,n (3) 而(3)的任何部分和便是(1)的满足(2)的近似解析解.在具体计算时,只需把级数(3)代入(1),
把两边化为ε 的幂级数形状,再比较系数.
例 求包含小参数ε 的黎卡提方程
2
d
d t x
t
x 满足初始条件
t=0, x=0 的解.
解 设
x t x tk k
k
0代入上述微分方程,得
k k
k
l
l k l l
l l j
j j k
k k t x x t x x
t
x
0 0
0 0
0 d d 即
1 1
0 1 1
0
d d d
d
k
k k
l
l k l k
k k
x x t t
x t
x
令两边ε 的同次幂系数相等,得到
2 1 2 0 3
1 0 2
2 0 1 0
d 2 d
d 2 d
d d
d d
x x t x
x
x t x
x t x x
t t x
另外初始条件可改写为
0 0
0
xk k k 于是又可列出
x x x x
0 1 2 3
0 0
0 0
0 0
0 0
求出
x t t
x t t
x t t
x t t
0
2
1
5
2
8
3
11
2 20 160
7 8800
而
x t t
t t t
2 5 2 8 3 11
2 20 160
7 8800
是所求解的近似表达式(即近似解析解).