Transcript 第六章
第6章
解线性方程组的迭代法
1
6.1
迭代法的基本概念
6.2
雅可比迭代法与高斯-塞德尔迭代法
6.3
超松弛迭代法
6.4
共轭梯度法
6.1
迭代法的基本概念
6.1.1
引言
考虑线性方程组
Ax b,
(1.1)
其中 A为非奇异矩阵,当 A为低阶稠密矩阵时,第5章所讨
论的选主元消去法是有效方法.
但对于 A的阶数 n很大,零元素较多的大型稀疏矩阵
方程组,例如求某些偏微分方程数值解所产生的线性方程
组来说,利用迭代法求解则更为合适.
迭代法通常都可利用 A中有大量零元素的特点.
2
例1
求解方程组
8 x1 3 x2 2 x3 20,
4 x1 11x2 x3 33,
6 x 3 x 12 x 36.
2
3
1
(1.2)
记为 Ax b , 其中
8
A 4
6
3
11
3
2
1,
12
x1
x x2 ,
x
3
20
b 33 .
36
方程组的精确解是 x* (3, 2, 1)T . 现将(1.2)改写为
3
1
x1 8 (3 x2 2 x3 20),
1
( 4 x1 x3 33),
x2
11
x3 1 ( 6 x1 3 x2 36).
12
(1.3)
或写为 x B0 x f , 其中
0
4
B0
11
6
12
3
8
0
3
12
2
8
1
,
11
0
20
8
33
f
.
11
36
12
4
任取初始值,例如取 x ( 0) (0, 0, 0)T .
将这些值代入(1.3) 式右边 (若(1.3)式为等式即求得
方程组的解,但一般不满足). 得到新的值
x (1) ( x1(1) , x2(1) , x3(1) )T (2.5, 3, 3)T ,
再将 x (1) 分量代入(1.3)式右边得到 x ( 2 ),反复利用这个计
1
8
1 (1)
( 0) x
( k ) (1.3)
4
x
x
33
),
x1 2
(x
x
1
3
1
1
( 0 ) (1) 11 (1)
(k )
(0)
(k )
x x2 , xx 1 (x
,
,3 xx
x2 ,
).
2 6
x
36
3
1
2
x ( 0 )
x(k )
12 x (1)
算程序,得到一向量序列和一般的计算公式(迭代公式)
x1 (3 x2 2 x3 20),
3
3
3
5
x1( k 1) (3 x2( k ) 2 x3( k ) 20) / 8,
x ( k 1) (4 x ( k ) x ( k ) 33) /11,
1
3
2
x3( k 1) (6 x1( k ) 3x2( k ) 36) /12.
(1.4)
简写为
x ( k 1) B0 x ( k ) f ,
其中 k 表示迭代次数 (k 0,1,2, ).
迭代到第10次有
x (10) (3.000032,1.999838, 0.9998813)T ;
6
(10)
0.000187 ( (10) x (10) x*).
从此例看出,由迭代法产生的向量序列 x ( k ) 逐步逼近
方程组的精确解 x *.
对于任何由 Ax b 变形得到的等价方程组 x Bx f ,
迭代法产生的向量序列 x ( k ) 不一定都能逐步逼近方程组
的解 x *.
如对方程组
x1 2 x2 5,
x2 3 x1 5.
7
构造迭代法
x1( k 1) 2 x2 ( k ) 5,
( k 1)
(k )
x
3
x
5.
1
2
则对任何的初始向量,得到的序列都不收敛.
对于给定方程组 x Bx f , 设有唯一解 x * ,则
(1.5)
x* Bx * f .
又设 x ( 0 ) 为任取的初始向量,按下述公式构造向量序列
x ( k 1) Bx ( k ) f ,
其中 k 表迭代次数.
k 0,1,2,,
(1.6)
8
定义1
(1) 对于给定的方程组x Bx f ,用公式
(1.6)逐步代入求近似解的方法称为迭代法(或称为一阶定
常迭代法,这里 B与 k 无关).
(2) 如果 lim x ( k ) 存在(记为 x * ),称此迭代法收敛,
k
显然 x *就是方程组的解,否则称此迭代法发散.
(1.5)
x* Bx * f .
(k )
研究 {x }的收敛性.
x ( k 1) Bx ( k ) f , k 0,1,2,, (1.6)
引进误差向量
( k 1) x ( k 1) x*,
由(1.6)减去(1.5)式, 得 ( k 1) B ( k ) (k 0,1,2,) ,
9
递推得
( k ) B ( k 1) B k ( 0) .
要考察 {x (k ) }的收敛性, 就要研究 B在什么条件下有
lim ( k ) 0
k
亦即要研究 B满足什么条件时有
lim B k 0
k
(零矩阵)
.
10
向量序列与矩阵序列的极限
6.1.2
定义2
设有向量序列 {x( k ) } R n , x( k ) ( x1( k ) , x2( k ) ,, xn( k ) )T R n ,
如果存在 x ( x1 , x2 ,, xn )T R n ,使
lim xi( k ) xi
i 1,2,, n,
k
则称向量序列 {x (k ) }收敛于 x ,记为 lim x ( k ) x.
k
显然
lim x ( k ) x lim x ( k ) x 0.
k
k
其中 为任一种向量范数.
11
定义3
设有矩阵序列 Ak (aij( k ) ) R nn 及 A (aij ) R nn ,
如果 n 2个数列极限存在且有
lim aij( k ) aij
k
(i, j 1,2,, n),
则称 { Ak } 收敛于 A , 记为 lim Ak A.
k
12
例2
设有矩阵序列
1
,
A
0
2
A2
0
k
2
k
,
,
A
2
0
k k 1
,
k
且设 1 ,考查其极限.
解
由于,当 1 时,有
lim k 0.
k
所以
0
lim Ak lim A
k
k
0
k
0
.
0
13
矩阵序列极限概念可以用矩阵算子范数来描述.
定理1
lim Ak A lim Ak A 0
k
k
其中‖·‖为矩阵的任意一种算子范数.
证明 显然有
lim Ak A lim Ak A
k
k
0.
再利用矩阵范数的等价性,可证定理对其他算子范数亦对.
14
定理2 lim Ak 0的充分必要条件是
k
lim Ak x 0,
k
x R n ,
(1.7)
其中两个极限右端分别指零矩阵与零向量.
证明
对任一种矩阵的从属范数有
Ak x Ak
x.
若 lim Ak 0,则 lim Ak 0 ,故对一切 x R n ,有
k
k
lim Ak x 0. 所以(1.7)成立.
k
反之,若(1.7)成立,取 x为第 j个坐标向量 e j,则
lim Ak e j 0, 表示 Ak 的第 j 列元素极限均为零,当 j 1,2,, n
k
时就证明了 lim Ak 0.
k
15
下面讨论一种与迭代法(1.6)有关的矩阵序列的收敛性,
这种序列由矩阵的幂构成,即 {B k },其中 B R nn .
定理3
设 B R nn,则下面3个命题等价:
.
(1) lim B k 0;(2) ( B) 1 ;(3)至少存在
k
一种从属的矩阵范数 ,使 B
证明
1.
(1) (2) 用反证法,假定 B 有一个特征值 ,
满足 1,则存在 x 0,使 Bx x ,由此可得 B k x k x ,
当 k 时 {B k x}不收敛于零向量.
由定理2知(1)不成立,从而知 1,即(2)成立.
16
(2) (3) 根据第5章定理18,对任意 0 ,存在一
种从属范数 ,使 B
适当选择 0,可使 B
( A) ,由(2)有 ( A) 1 ,
1 ,即(3)成立.
(3) (1) 由(3)给出的矩阵范数 B
可得 lim B k
k
k
1,由于 B
B ,
k
0 ,从而有 lim B k 0.
k
17
定理4
设 B R nn , 为任一种矩阵范数,则
lim B
k
k
证明
1
k
( B ).
(1.8)
由第5章定理18,对一切 k 有
1
k
( B) [ ( B k )] B k
1
k
.
另一方面对任意 0,记
B [ ( B) ]1 B,
显然有 ( B ) 1.由定理3有 lim Bk 0,所以存在正整数
k
N N ( ) ,使当 k N时,
Bk
Bk
[ ( B) ]
k
1,
18
即当 k N时有
( B) B k
1
k
( B) ,
由 任意性即得定理结论.
19
6.1.3
迭代法及其收敛性
设有线性方程组
Ax b,
其中,A (aij ) R nn 为非奇异矩阵.
将 A分裂为
A M N,
(1.9)
其中,M为可选择的非奇异矩阵,且使 Mx d 容易求解,
一般选择为 A的某种近似,称 M为分裂矩阵.
20
于是,求解 Ax b 转化为求解 Mx Nx b,即求解
Ax b 求解x M 1 Nx M 1b.
也就是求解线性方程组
x Bx f ,
(1.10)
从而可构造一阶定常迭代法
x ( 0 ) (初始向量),
( k 1)
(k )
x
Bx
f,
k 0,1,2,
其中
(1.11)
B M 1 N M 1 ( M A) I M 1 A, f M 1b.
称 B I M 1 A 为迭代法的迭代矩阵.
选取 M 阵,就得到解 Ax b的各种迭代法.
21
定理5 给定线性方程组
x Bx f ,
及一阶定常迭代法
x ( k 1) Bx ( k ) f .
对任意选取初始向量 x ( 0 ) ,迭代法收敛的充要条件是矩阵
B 的谱半径 ( B) 1.
证明
充分性.设 ( B) 1,易知 Ax f(其中
A I B )有唯一解,记为 x *
x* Bx * f ,
误差向量
( k ) x ( k ) x* B k ( 0 ) ,
( 0) x ( 0) x*.
22
由设 ( B) 1 ,应用定理3,有 lim B k 0 .
k
k 0 ,即 lim x ( k ) x * .
于是对任意 x ( 0 ) , 有 lim
k
k
必要性. 设对任意 x ( 0 ) 有
lim x ( k ) x*,
k
x Bx f , (1.10)
其中 x ( k 1) Bx ( k ) f .
显然,极限 x *是方程组(1.10)的解,且对任意 x ( 0 )
( k ) x ( k ) x* B k ( 0) 0 (k ).
由定理2知
lim B k 0,
k
再由定理3,即得 ( B) 1.
23
例3
考察线性方程组(1.2)
8 x1 3 x2 2 x3 20,
4 x1 11x2 x3 33,
6 x 3 x 12 x 36.
2
3
1
(1.2)
给出的迭代法(1.4)的收敛性
x1( k 1) (3 x2( k ) 2 x3( k ) 20) / 8,
x ( k 1) (4 x ( k ) x ( k ) 33) /11,
1
3
2
x3( k 1) (6 x1( k ) 3x2( k ) 36) /12.
(1.4)
24
解
先求迭代矩阵 B0的特征值. 由特征方程
4
det( I B0 )
11
1
2
3
8
1
4
1
4
1
0
11
可得 det( I B0 ) 3 0.034090909 0.039772727 0,
解得 1 0.3082, 2 0.1541 i0.3245, 3 0.1541 i0.3245,
2 3 0.3592 1, 1 1,
即 ( B0 ) 1 .所以用迭代法(1.4)解线性方程组(1.2)
是收敛的.
25
例4
考察用迭代法解方程组
x ( k 1) Bx ( k ) f
0
的收敛性, 其中 B
3
解
2
5
, f .
0
5
特征方程为 det(I B) 2 6 0, 特征根
1, 2 6 ,
即 ( J ) 1 . 这说明用迭代法解此方程组不收敛.
26
定理5 (迭代法收敛的充分条件) 设有方程组
x Bx f ,
B R nn ,
及一阶定常迭代法
x ( k 1) Bx ( k ) f .
如果有 B 的某种算子范数 B q 1 ,则
(1) 迭代法收敛,即对任取 x ( 0 )
lim x k x *
k
且 x* Bx * f .
(2) x* x ( k ) q k x* x ( 0 ) .
(3) x* x
(k )
(4) x* x
(k )
q
x ( k ) x ( k 1) .
1 q
qk
x (1) x ( 0) .
1 q
27
证明 (1) 由基本定理知,结论(1)是显然的.
(2) 由关系式 x * x
( k 1)
B ( x * x ( k ) )及
x ( k 1) x ( k ) B( x ( k ) x ( k 1) ).
有
(a) x ( k 1) x ( k ) q x ( k ) x ( k 1) ;
(b) x* x ( k 1) q x* x ( k ) .
反复利用(b)即得(2).
28
(3) 考查
x ( k 1) x ( k ) x* x ( k ) ( x* x ( k 1) )
x* x ( k ) ( x* x ( k 1) )
(1 q) x* x ( k ) ,
即
x * x ( k )
1
x ( k 1) x ( k )
1 q
q
x ( k ) x ( k 1) .
1 q
(4) 反复利用(a), 则得到(4).
29
定理6只给出迭代法(1.11)收敛的充分条件,即使条
件 B 1对任何常用范数均不成立,迭代序列仍可能收敛.
例5
迭代法 x ( k 1) Bx ( k ) f ,其中
0.9
B
0.3
显然 B
1.1, B
1
0
,
0.8
1.2, B
1
f ,
2
2
1.043, B
F
1.54 ,
表明 B的各种范数均大于1,但由于 ( B) 1 ,故由此迭
代法产生的迭代序列 {x (k ) }是收敛的.
30
下面考察迭代法(1.11)的收敛速度.
假定迭代法(1.11)是收敛的,即 ( B) 1,由
( k ) B ( k ) ( 0) , ( 0) x ( 0) x * ,得
( k ) B k ( 0) , ( 0) 0.
于是
(k )
(0)
Bk
根据从属范数定义,有
B k max
(0)
0
B k (0)
(0)
max
(0)
0
(k )
(0)
,
31
所以 B k 是迭代 k 次后误差向量 (k ) 的范数与初始误差向量
( 0 )的范数之比的最大值.
这样迭代 k 次后,平均每次迭代误差向量范数的压缩率
可看成是 B k
1
k
,若要求迭代 k 次后有
( k ) (0) , 即
(k )
( 0)
Bk ,
其中 1,可取 10 s.
因为 ( B) 1,故 B
1
k k
1,由 B
1
k k
1
k
两边取对数
得
ln B
1
k k
1
ln ,
k
32
即
k
ln
ln B
1
k k
s ln 10
ln B
它表明迭代次数 k 与 ln B
定义4
1
k k
1
k k
(1.12)
成反比.
迭代法(1.11)的平均收敛速度定义为
Rk ( B) ln B
1
k k
.
(1.13)
平均收敛速度 Rk (B) 依赖于迭代次数及所取范数,计
算分析并不方便.
33
由定理4可知 lim B
k
定义5
1
k k
( B ),所以 lim Rk ( B) ln ( B).
k
迭代法(1.11)的渐近收敛速度定义为
R( B) ln ( B).
(1.14)
R(B) 与迭代次数及 B取何种范数无关,它反映了迭代次数趋
于无穷时迭代法的渐近性质,当 (B) 越小时 ln ( B) 越大,
迭代法收敛越快,可用
ln s ln 10
k
R( B)
R( B)
作为迭代法(1.11)所需的迭代次数的估计.
(1.15)
34
例1中迭代法(1.4)的迭代矩阵 B0 的谱半径 ( B0 ) 0.3592,
若要求
(k )
(0)
10 5,则由(1.13)知 R( B
0
) ln ( B0 ) 1.023876,
于是有
k
s ln 10
11.99,
R( B0 )
即取 k 12即可达到要求.
35
6.2
雅可比迭代法与高斯-塞尔迭代法
36
雅可比迭代法
6.2.1
将线性方程组(1.1)中的系数矩阵 A (aij ) R nn
分成三部分
a11
A
0
a22
ann
0
a21
an1,1
a
n1
a12
a1,n1
0
a2,n1
0
0
an1, 2
0
an 2
an ,n1
a1n
a2 n
D L U .
an1,n
0
0
(2.1)
37
设 aii 0(i 1,2,, n),选取 M为 A 的对角元素部分,
即选取 M D(对角阵), A D N ,由(1.11)式得到解
Ax b 的雅可比(Jacobi)迭代法
x ( 0 ) (初始向量),
( k 1)
(k )
x
Bx
f,
k 0,1,2, ,
(2.2)
其中 B I D 1 A D 1 ( L U ) J , f D 1b.
称 J 为解 Ax b的雅可比迭代法的迭代阵.
38
研究雅可比迭代法(2.2)的分量计算公式.
记
x ( k ) ( x1( k ) , , xi( k ) , , xn( k ) )T ,
由雅可比迭代公式(2.2),
有
Dx ( k 1) ( L U ) x ( k ) b,
或
i1
n
x (0) (
)
(2.2)
( k初始向量
1)
(k ) ,
(k )
a
x
a
x
b
(
i 1,2,,n).
( k a1ii) xi
ij j
i
( k ) ij j
Bx j1f ,
k ji01 ,1,2, ,
x
于是,解 Ax b 的雅可比迭代法的分量计算公式为
39
x ( 0 ) ( x1( 0 ) ,, xn( 0 ) )T ,
n
x ( k 1) b
(k )
(2.3)
i aij x j / aii ,
i
j 1
j i
(i 1,2, , n)
(k 0,1,表示迭代次数 ).
由(2.3)式可知,雅可比迭代法计算公式简单,每迭代
一次只需计算一次矩阵和向量的乘法且计算过程中原始矩
阵 A 始终不变.
40
6.2.2
高斯-塞德尔迭代法
选取分裂矩阵 M为 A 的下三角部分,即选取 M D L
(下三角阵), A M N , 于是由(1.11)式得到解 Ax b
的高斯-塞德尔(Gauss-Seidel)迭代法
x ( 0 ) (初始向量),
( k 1)
(k )
x
Bx
f , k 0,1,2, ,
(2.4)
其中 B I ( D L) 1 A ( D L) 1U G , f ( D L) 1 b.
称 G ( D L) 1U 为解 Ax b的高斯-塞德尔迭代法的迭
代阵.
41
研究高斯-塞德尔迭代法的分量计算公式.
记
x ( k ) ( x1( k ) , , xi( k ) , , xn( k ) )T ,
由(2.4)式有
( D L) x ( k 1) Ux( k ) b,
或
x ( 0 ) (初始向量),
( k 1)
(k )
(
k
1
) f , ( kk1
k) ,
x
Bx
,2,(
Dx
Lx ) 0
,1
Ux
b,
(2.4)
即
i1
n
j 1
j i1
aii xi( k 1) bi aij x (jk 1) aij x (jk )
(i 1,2,, n).
42
于是解 Ax b 的高斯 x ( 0 ) ( x1( 0 ) ,, xn( 0 ) )T (初始向量),
i1
n
( k 1)
( k 1)
(k )
bi aij x j
aij x j / aii ,
xi
j 1
j i1
(i 1,, n; k 0,1,).
(2.5)
或
x ( 0 ) ( x1( 0 ) ,, xn( 0 ) )T ,
x ( k 1) x ( k ) x ,
i
i
i
i1
n
(
k
1
)
(k )
x b a x
aij x j / aii ,
i
i
ij j
j 1
j i1
(i 1,, n; k 0,1,).
(2.6)
43
雅可比迭代法不使用变量的最新信息计算 xi( k 1) ,而
由高斯-塞德尔迭代公式(2.6)可知,计算 x ( k 1)
i 个分
量 xi( k 1) 时,利用了已经计算出的最新分量 x (jk 1) ( j 1,2,,i 1)
高斯-塞德尔迭代法可看作雅可比迭代法的一种改进.
由(2.6)可知,高斯-塞德尔迭代法每迭代一次只需计算
一次矩阵与向量的乘法.
44
算法1 (高斯-塞德尔迭代法)
设 Ax b ,其中 A R nn 为非奇异矩阵且 aii 0
(i 1,2,, n),本算法用高斯-塞德尔迭代法解 Ax b ,
数组 x(n) 开始存放 x ( 0 ) ,后存放 x ( k ) , N 0 为最大迭代次数.
1. xi 0.0 (i 1,,n)
2.
对于 k 1,2,, N0
对于 i 1,, n
i1
n
xi bi aij x j aij x j / aii
j 1
j i1
迭代一次,这个算法需要的运算次数至多与矩阵 A 的
非零元素的个数一样多.
45
例6
用高斯-塞德尔迭代法解线性方程组(1.2).
8 x1 3 x2 2 x3 20,
4 x1 11x2 x3 33,
6 x 3 x 12 x 36.
2
3
1
(1.2)
取 x ( 0) (0, 0, 0)T, 按高斯-塞德尔迭代公式
x1( k 1) (3 x2( k ) 2 x3( k ) 20) / 8,
( k 1)
x2
(4 x1( k 1) x3( k ) 33) /11,
x ( k 1) (6 x ( k 1) 3x ( k 1) 36) /12.
3
1
2
(k 0,1,,)
迭代7次,得 x ( 7 ) (3.000002 1.9999987 0.9999932)T46
,
且
x * x ( 7 )
2.02 106.
由此例可知,用高斯-塞德尔迭代法,雅可比迭代法解
线性方程组(1.2)(且取 x ( 0 ) 0 )均收敛.
而高斯-塞德尔迭代法比雅可比迭代法收敛较快(即取
8 x1 3 x2 2 x3 20,
x ( 0 ) 相同,达到同样精度所需迭代次数较少).
(1.2)
4 x1 11x2 x3 33,
但这结论只当
6 x 3 xA 满足一定条件时才是对的.
2 12 x3 36.
1
47
6.2.3
雅可比迭代与高斯-塞德尔迭代收敛性
定理7
设 Ax b,其中 A D L U 为非奇异矩
阵且 D非奇异,则
(1) 解方程组的雅可比迭代法收敛的充要条件是 ( J ) 1,
其中 J D 1 ( L U ).
(2) 解方程组的高斯-塞德尔迭代法收敛的充要条件是
(G ) 1, 其中 G ( D L) 1U .
由定理6还可得到雅可比迭代法收敛的充要条件是 J 1.
高斯-赛德尔迭代法收敛的充要条件是 G 1.
48
定义6 (对角占优阵)设 A (aij ) nn .
(1) 如果 A的元素满足
n
aii aij
(i 1,2, , n).
j 1
j i
称 A为严格对角占优阵.
(2) 如果 A 的元素满足
n
aii aij
(i 1,2, , n).
j 1
j i
且上式至少有一个不等式严格成立,称 A为弱对角占优阵.
49
定义7(可约与不可约矩阵)
设 A (aij ) nn (n 2) ,
如果存在置换阵 P使
A11
P AP
0
T
A12
,
A22
(2.7)
其中 A11为 r 阶方阵, A22为 n r 阶方阵 (1 r n),则称
A为可约矩阵.
否则,如果不存在这样置换阵 P 使(2.7)式成立,则
称 A为不可约矩阵.
50
A为可约矩阵意即 A可经过若干行列重排化为(2.7)或
Ax b可化为两个低阶方程组求解.
如果 A 经过两行交换的同时进行相应两列的交换,
称对 A进行一次行列重排.
事实上,由 Ax b 可化为
PT AP( PT x) PT b,
且记
y1
d1
T
y P x , P b
y2
d2
T
其中 y1 , d1 为 r 维向量.
51
于是,求解 Ax b化为求解
A11 y1 A12 y2 d1 ,
A22 y2 d 2 .
由上式第2个方程组求出 y 2 , 再代入第1个方程组求出 y1.
显然,如果 A 所有元素都非零,则 A为不可约阵.
52
例7
b1
a2
A
设有矩阵
c1
b2
c2
an1
bn1
an
4
,
1
B
1
cn1
0
bn
1
1
4
0
0
4
1
1
0
1
.
1
4
(ai ,bi ,ci 都不为零 )
则 A, B 都是不可约矩阵.
53
定理8 (对角占优定理)如果 A (aij ) nn为严格对角
占优矩阵或 A为不可约弱对角占优矩阵,则 A为非奇异矩阵.
证明
只就 A为严格对角占优阵证明此定理.
采用反证法,如果 det( A) 0 ,则 Ax 0有非零解,
记为 x ( x1 , x2 , , xn )T, 则
xk max xi 0.
1i n
由齐次方程组第 k 个方程
n
a
则有
j 1
kj
x j 0,
54
akk xk
即
n
a
j 1
j i
n
kj
x j akj x j xk
j 1
j i
n
a
j 1
j i
kj
,
n
akk akj ,
j 1
j i
与假设矛盾,故 det( A) 0.
55
定理9
设 Ax b ,如果:
(1) A为严格对角占优阵,则解 Ax b 的雅可比迭
代法,高斯-塞德尔迭代法均收敛.
(2) A为弱对角占优阵,且 A为不可约矩阵,则解
Ax b雅可比迭代法,高斯-塞德尔迭代法均收敛.
证明
只证(1)中高斯-塞德尔迭代法收敛,其他同理.
由设可知, aii 0 (i 1,, n),解 Ax b的高斯-塞
德尔迭代法的迭代矩阵为
G ( D L) 1U ( A D L U )
56
下面考查 G的特征值情况.
det( I G) det( I ( D L) 1U )
det(( D L) 1 )det( ( D L) U ).
由于 det(( D L) 1 ) 0, 于是 G特征值即为
det( ( D L) U ) 0
之根. 记
a11
a21
C ( D L) U
a
n1
a12
a22
an 2
a1n
a2 n
,
ann
57
下面证明,当 1时,det( C ) 0 ,即 G的特征值
均满足 1,由基本定理,则有高斯-塞德尔迭代法收敛.
事实上,当 1 时, 由 A为严格对角占优阵,有
cii aii
n
i1
aij aij
j i1
j1
i1
n
n
j 1
j i1
j 1
j i
aij aij cij
(i 1,2,, n).
这说明,当 1时,矩阵 C为严格对角占优阵,
再由对角占优定理有 det(C ) 0.
58
如果线性方程组系数矩阵 A对称正定,则有以下定理.
定理10
设矩阵 A对称,且对角元 aii 0(i 1,2,, n),
则
(1) 解线性方程组 Ax b 的雅可比法收敛的充要条件
是 A与 2 D A均为正定矩阵,其中 D diag (a11, a22 ,, ann ).
(2) 解线性方程组 Ax b的高斯-塞德尔法收敛的充分
条件是 A正定.
定理表明若 A 对称正定则高斯-塞德尔法一定收敛,但
雅可比法则不一定收敛.
59
例8
在线性方程组 Ax b中
1
A a
a
a
1
a
a
a ,
1
证明当 1 a 1 时高斯-塞德尔法收敛,而雅可比迭代法
2
1
只在 a 1 时才收敛.
2
2
1
证明 只要证 a 1 时 A 正定,由 A 的顺序主
2
1 a
子式 2
1 a 2 0,得 a 1 ,而
a 1
3 det A 1 2a 3 3a 2 (1 a) 2 (1 2a) 0,
60
得a
1
,于是得到 1 a 1时 1 0, 2 0, 3 0,
2
2
故 A正定,故高斯-塞德尔法收敛.
对雅可比迭代矩阵
0
J a
a
a
0
a
a
a ,
0
有
det( I J ) 3 3a 2 2a 3 ( a) 2 ( 2a) 0,
1
当 ( J ) 2a 1,即 a 时雅可比法收敛.
2
61
当 a 0.8时高斯-塞德尔法收敛,而 ( J ) 1.6 1,
雅可比法不收敛,此时 2 D A不是正定的.
有时将原线性方程组换行后可使 A满足收敛条件,这
时应将方程换行后再构造雅可比迭代或高斯-塞德尔迭代法.
62
6.3
超松弛迭代法
63
6.3.1
逐次超松弛迭代法
选取分裂矩阵 M为带参数的下三角阵
M
1
( D L),
其中 0为可选择的松弛因子.
于是,由(1.11)可构造一个迭代法,其迭代矩阵为
L I ( D L) 1 A ( D L) 1 ((1 ) D U ).
(0)
x
),
从而得到解(
(1.11) Over
Ax初始向量
b 的逐次超松弛迭代法(Successive
( k 1)
(k )
x
Bx
f , k 0,1,2,
Relaxation Method, 简称SOR
).
64
解 Ax b 的SOR方法为
x ( 0 ) (初始向量),
( k 1)
(k )
x
L
x
f , k 0,1,2, ,
(3.1)
其中
L ( D L) 1 ((1 ) D U ),
f ( D L) 1 b.
研究解 Ax b的SOR迭代法的分量计算公式.
记
x ( k ) ( x1( k ) , , xi( k ) , , xn( k ) )T ,
65
由(3.1)式可得
( D L) x ( k 1) ((1 ) D U ) x ( k ) b,
或
( 0 ) ( k 1)
xDx
Dx ( k ) (b),
Lx ( k 1) Ux( k ) Dx ( k ) ).
(初始向量
(3.1)
( k 1)
(k )
L x f , k 0,1,2, ,
x
Ax b 的SOR方法的计算公式
由此,得到解
x ( 0 ) ( x1( 0 ) ,, xn( 0 ) )T ,
i1
n
( k 1)
(k )
( k 1)
(k )
xi
xi bi aij x j
aij x j / aii ,
j 1
j i1
(i 1, , n; k 0,1, ), 为松弛因子 .
(3.2)
66
或
x ( 0 ) ( x1( 0 ) ,, xn( 0 ) )T ,
x ( k 1) x ( k ) x ,
i
i
i
i1
n
( k 1)
(k )
aij x j / aii ,
xi
bi aij x j
j 1
j i1
(3.3)
(
i
1
,
,
n
;
k
0
,
1
,
),
为松弛因子.
关于SOR迭代法 , 有
(1) 显然,当 1时,SOR方法即为高斯-塞德尔迭
代法.
67
(2) SOR方法每迭代一次主要运算量是计算一次矩阵
与向量的乘法.
(3) 当 1 时,称为超松弛法;当 1 时,称为低
松弛法.
(4) 在计算机实现时可用
max xi max xi( k 1) xi( k )
1i n
1i n
控制迭代终止,或用 r ( k )
b Ax( k )
控制迭代
终止.
SOR迭代法是高斯-塞德尔迭代法的一种修正.
68
设已知 x ( k )及已计算 x ( k 1)的分量 x (jk 1) ( j 1,2,,i 1).
(1) 首先用高斯-塞德尔迭代法定义辅助量 ~
xi( k 1) ,
i 1
( k 1)
~
xi
bi aij x (jk 1)
j 1
n
a
j i 1
ij
x
(k )
j
/ aii .
(3.4)
(2) 再由 xi( k ) 与 ~
xi( k 1) 加权平均定义 xi( k 1) ,即
xi( k 1) (1 ) xi( k ) ~
xi( k 1) xi( k ) ( ~
xi( k 1) xi( k ) ).
(3.5)
将(3.4)代入(3.5)得到解
Ax 的SOR迭代(3.2)式.
b
69
例9
用SOR方法解方程组
4
1
1
1
1
1
4
1
1
4
1
1
1 x1 1
1 x2 1
,
x
1
1
3
4
x4 1
它的精确解为 x* (1, 1, 1, 1)T .
解
取 x ( 0 ) 0 ,迭代公式为
x1( k 1) x1( k ) (1 4 x1( k ) x2( k ) x3( k ) x4( k ) ) / 4;
x2( k 1) x2( k ) (1 x1( k 1) 4 x2( k ) x3( k ) x4( k ) ) / 4;
x3( k 1) x3( k ) (1 x1( k 1) x2( k 1) 4 x3( k ) x4( k ) ) / 4;
x4( k 1) x4( k ) (1 x1( k 1) x2( k 1) x3( k 1) 4 x4( k ) ) / 470.
取 1.3,第11次迭代结果为
x (11) (0.99999646, 1.00000310, 0.99999953,
0.99999912)T ,
(11)
2
0.46 105.
取其他 值,迭代次数如下表.
71
表 61
满足误差
松弛因子
x
(k )
x * 10
满足误差
5
2
松弛因子
x ( k ) x * 10 5
2
1.0
的迭代次数
22
1.5
的迭代次数
17
1.1
17
1.6
23
1.2
12
1.7
33
1.3
11(最少迭代次数)
1.8
53
1.4
14
1.9
109
从此例看到,松弛因子选择得好,会使SOR迭代法的
收敛大大加速. 本例中 1.3是最佳松弛因子.
72
6.3.2
超松弛迭代法的收敛性
根据定理5可知SOR迭代法收敛的充分必要条件是 ( L ) 1,
而 ( L )与松弛因子 有关,下面先研究 在什么范围内,
SOR迭代法才可能收敛.
73
定理11 (SOR方法收敛的必要条件)设解方程组 Ax b
的SOR迭代法收敛,则 0 2.
证明
由SOR迭代法收敛,则由定理5有 ( L ) 1
设 L 的特征值为 1 , 2 , , n ,则
det( L ) 12 n ( L )n ,
或
det( L )
1/ n
( L ) 1.
另一方面
det( L ) det[( D L) 1 ]det((1 ) D U ) (1 ) n ,
74
从而
det( L )
即
1/ n
1 1,
(3.6)
0 2.
定理8说明解 Ax b的SOR迭代法,只有在 (0,2)范围
内取松弛因子 ,才可能收敛.
定理12
设 Ax b,如果:
(1) A 为对称正定矩阵, A D L U ;
(2)
0 2.
则解 Ax b 的SOR迭代法收敛.
75
证明
在上述假定下,只需证明 1,其中 为 L
的任一特征值.
事实上,设 y 为对应 的 L 的特征向量,即
L y y,
y ( y1 , y2 ,, yn )T 0,
( D L) 1 ((1 ) D U ) y y,
亦即
((1 ) D U ) y ( D L) y.
为了找出 的表达式,考虑数量积
(((1 ) D U ) y, y ) (( D L) y, y ),
76
则
( Dy , y ) ( Dy , y ) (Uy, y )
,
( Dy , y ) ( Ly, y )
显然
n
( Dy , y ) aii yi
2
0,
(3.7)
i 1
( Ly, y ) i ,
记
由于 A AT
所以 U LT , 故
(Uy, y ) ( y, Ly ) ( Ly , y ) i ,
0 ( Ay, y ) (( D L U ) y, y ) 2 ,
(3.8)
77
所以
( ) i
,
( ) i
从而
2
( ) 2 2 2
.
2
2
2
( )
当 0 2 时,利用(3.7),(3.8),有
( ) 2 ( ) 2 ( 2 )( 2) 0,
即 L 的任一特征值满足 1,故SOR方法收敛
当 0 2 时,可以证明 ( ) 2 2 2 0.
78
定理13
设 Ax b,如果:
(1) A为严格对角占优矩阵(或 A 为弱对角占优不可约
矩阵);
(2)
0 1.
则解 Ax b 的SOR迭代法收敛.
79
对于SOR迭代法希望选择松弛因子 使迭代过程(3.1)
收敛较快,在理论上即确定 opt 使
min ( L ) ( Lo p t ).
0 2
)
x ( 0对某些特殊类型的矩阵,已建立了SOR方法最佳松弛因
(初始向量),
(3.1)
( k 1)
(k )
x
L x f , k 0,1,2, ,
子理论.
例如,对所谓具有“性质A ” 等条件的线性方程组
建立了最佳松弛因子公式
opt
2
1 1 ( ( J ))
2
,
(3.9)
80
其中 (J ) 为解 Ax b 的雅可比迭代法的迭代矩阵的谱半径.
6.3.3
块迭代法
块迭代法用于大型稀疏线性方程组求解
例10(模型问题)考虑泊松(Poisson)方程边值问题
2u 2u
2 2 f ( x, y ),
y
x
u ( x, y ) 0 ( x, y ) ,
( x, y ) ,
(3.10)
(3.11)
其中 {( x, y) 0 x 1,0 y 1}, 为 的边界,用
81
差分法求解边值问题(3.10)和(3.11).
如图6-1所示,用 x xi , y y j 在 上打网格,其中
1
xi ih , y j jh, h
,
N 1
i, j 1,2, , N .
分别记网格内点和边界点的集合为
h {( xi , y j ) i, j 1,2, , N },
h {( xi ,0), ( xi ,0),
(0, y j ), (1, y j ), i, j 0,1, , N 1}.
图6-1
在点 ( xi , y j )上用差商表示二阶偏导数,
即
82
2u
x 2
2u
x 2
1
2
[
u
(
x
,
y
)
2
u
(
x
,
y
)
u
(
x
,
y
)]
o
(
h
),
i 1
j
i
j
i 1
j
2
h
1
2
[
u
(
x
,
y
)
2
u
(
x
,
y
)
u
(
x
,
y
)]
o
(
h
),
i
j 1
i
j
i
j 1
2
h
( xi , y j )
( xi , y j )
略去余项 o(h 2 ) ,用 u ij 表示 u ( xi , y j ) 的近似值,由微分
方程(3.10)就可以得到差分方程
ui 1, j 2ui , j ui 1, j ui , j 1 2ui , j ui , j 1
f ij ,
2
2
h
h
其中 f ij f ( xi , y j ) .
83
再整理成
4ui , j ui 1, j ui 1, j ui , j 1 ui , j 1 h 2 f ij , (3.12)
其中 (i, j ) 对应的点 ( xi , y j ) h.(3.12)称为泊松方程
的五点差分格式.
(3.12)左端若有某项 u ij对应的点( xi , y j ) h ,则
uij 0 ,为将差分方程写成矩阵形式,我们把网格点逐行
按由坐至右和由上至下的自然次序排列,记向量
u (u11, u21,, u N 1 , u12 , u22 ,, u N 2 ,, u1N , u2 N ,, u NN )T ,
b h 2 ( f11, f 21,, f N 1 , f12 , f 22 ,, f N 2 ,, f1N , f 2 N ,, f NN )T ,
84
则(3.12)可写成
(3.13)
Au b,
其中
A11
I
A
I
A22
I
I
AN 1, N 1
I
2
2
R N N ,
I
(3.14)
ANN
85
4
1
Aii
1
4
1
1
4
1
R N N ,
1
4
i 1,2, , N ,
(3.15)
I 为 N N单位矩阵,通常 N 是个大数,但 A的每一行最
多只有5个非零元素,所以 A是一个稀疏矩阵,故线性方程
组(3.13)是一个大型稀疏方程组,可以用SOR迭代法求解.
可算出 J D 1 ( L U ) 的特征值为
1
ij (cos ih cos jh),
2
i, j 1,2, , N .
86
当 i j 1时得到 J 的谱半径
( J ) cos h 1
1 2 2
h o(h 4 ).
2
由于 A 对称正定,故SOR迭代法收敛,且可利用(3.9)求
出最优松弛因子
opt
2
,
1 sin h
且
( L ) opt
opt
cos 2 h
1
(1 sin h) 2
87
根据(3.13)即收敛速度定义可得
1 2 2
R( J ) ln ( J ) h o(h 4 ),
2
R( Lo p t ) ln( opt 1) 2[ln cos h ln( 1 sin h)]
2h o( h 3 ).
可见 R( L ) 比 R(J )大一个 h 的数量级.
opt
若取 h 0.05, f ( x, y ) 0.初值取 u ( 0) (1,1,,1)T,
计算到 u ( k ) u ( k 1)
106 停止,则雅可比法需要1154次
迭代,而SOR迭代法若取 1.73则只需59次迭代.
h 0.05时 opt 1.72945.
88
在线性方程组(3.13)中的
由(3.14)及(3.15)表示
就是分块矩阵,下面给出一般情形.
设 Ax b,其中 A R nn为大型稀疏矩阵且将 A 分
块为三部分 A D L U ,
A11
A21
A
A
q1
A12
A22
Aq 2
A1q
A11
A2 q
, D
Aqq
A22
,
Aqq
89
0
A21
L
A
q1
0
Aq 2
0
,
U
0
A12
0
A1q
A2 q
.
0
q
且 Aii (i 1,2,, q) 为 ni ni非奇异矩阵, ni n.
i1
对 x及 b 同样分块
ni
ni
x
R
,
b
R
.
其中, i
i
x1
x2
x ,
x
q
b1
b2
b ,
b
q
90
选取分裂阵 M为 A的对角块部分,即选
M D (块对角阵)
A M N.
于是,得到块雅可比迭代法
x ( k 1) Bx ( k ) f
(3.16)
其中迭代矩阵 B I D 1 A D 1 ( L U ) J , f D 1b.
或
Dx ( k 1) ( L U ) x ( k ) b.
91
由分块矩阵乘法,得到块雅可比迭代法的具体形式
( k 1)
i
Aii x
q
bi Aij x (jk )
(i 1,2, , q),
(3.17)
j 1
j i
其中
x(k )
x1( k )
(k )
x2
,
x(k )
q
xi( k ) R ni .
这说明,块雅可比迭代法每迭代一步,从 x ( k ) x ( k 1) ,
需要求解 q 个低阶方程组
92
Aii xi( k ) g i ,
i 1,2, , q,
其中 g i 为(3.17)右边部分.
选取分裂矩阵 M为带松弛因子的 A 块下三角部分,即
1
M
( D L),
A M N.
得到块SOR迭代法
x ( k 1) L x ( k ) f ,
(3.18)
其中迭代矩阵
93
L I ( D L) 1 A
( D L) 1 ((1 ) D U ),
f ( D L) 1 b,
由分块矩阵乘法得到块SOR迭代法的具体形式
q
i 1
( k 1)
(k )
( k 1)
(k )
A
x
A
x
(
b
A
x
A
x
ii i
ii i
i
ij j
ij j )
j 1
j i
k 0,1, ),
(i 1,2, , q;
(3.19)
为松弛因子
.
94
于是,当 x (k )
x (jk 1) ( j 1,2,, i 1) 已计算时,解
低阶方程组(3.19)可计算小块 xi( k 1) .
从 x ( k ) x ( k 1) 共需要解 q 个低阶方程组,当 Aii 为三
对角阵或带状矩阵时,可用直接法求解.
定理14
设 Ax b,其中 A D L U (分块形式).
(1) 如果 A 为对称正定矩阵,
(2) 0 2.
则解 Ax b的BSOR迭代法收敛.
95
例10的模型问题中(3.14)和(3.15)所表示的分块形
式与一般形式相比,有 q ni N,其中(3.14)的分块对
应于图6-1的一条条网格线,按分块形式写出的迭代公式也
称线迭代法.
在BSOR迭代法的收敛性和最优松弛理论分析中,一类特
殊的三对角块矩阵有很多好的性质,它就是T-矩阵,其形式
为
D1
E
2
A
F1
D2
F2
Eq 1
Dq 1
Eq
Fq 1
Dq
(3.20)
96
的块三对角矩阵,其中对角块 Di (i 1,2,, q)均为对角阵.
记 D diag ( D1 , D2 ,, Dq ) ,块雅可比矩阵 J I D 1 A.
设块SOR(BSOR)方法的迭代矩阵为 L ,则有以下结论.
定理15
设 A 为分奇异的形如(3.20)的T-矩阵,且
D非奇异. J I D 1 A,则当 ( J ) 1 时,对 0 2
有 ( L ) 1及最优松弛因子
opt
2
1 1 [ ( J )]
2
,
( L ) opt 1,
opt
且
1
2 2
2
[ 4( 1) ] ,
( L ) 4
1, opt 2,
其中 (J ).
0 opt ,
(3.21)
97
根据定理有
( L ) min ( L ),
opt
0 2
如图6-2所示.
由(3.21)可知,当 1时,
(G) ( L ) 2 2 ( B),
1
则得高斯-塞德尔迭代法的收敛速度为
图6-2
R(G) ln (G) 2 ln ( J ) 2 R( J ).
说明此时高斯-塞德尔迭代法比雅可比迭代法快一倍.
由于T-矩阵的特殊情形就是三对角矩阵,因此当 A 为
正定的三对角矩阵时SOR方法的最优松弛因子就是(3.9)
给出的.
98
注意对例10的模型问题得到的(3.10)式的矩阵 A 是
按自然排序得到的,它不是T-矩阵.
如果改变网格点的排序,通常称为红-黑排序,则 A 可
变成T-矩阵.
99
6.4
6.4.1
共轭梯度法
与方程等价的变分问题
共轭梯度法简称CG方法,又称共轭斜量法,是一种变
分方法,对应于求一个二次函数的极值
设 Ak (aij( k ) ) R nn是对称正定矩阵,b (b1 , b2 ,, bn )T,
求解的线性方程组为
Ax b.
(4.1)
考虑如下定义的二次函数 : R n R;
n
1
1 n n
( x) ( Ax, x) (b, x) aij xi x j b j x j . (4.2)
100
2
2 i 1 j 1
j 1
函数 有如下性质:
(1)对一切 x R n , ( x)的梯度
(4.3)
( x) Ax b.
(2)对一切 x, y R n 及 R,
( x y)
1
( A( x y ), x y ) (b, x y )
2
( x) ( Ax b, y )
2
2
( Ay, y ).
(4.4)
(3)设 x* A1b 是线性方程组(4.1)式的解,则有
1
2
1
2
( x*) (b, A1b) ( Ax*, x*),
101
且对一切 x R n ,有
1
1
( x) ( x*) ( Ax, x) ( Ax*, x) ( Ax*, x*)
2
2
1
( A( x x*), x x*).
2
(4.5)
102
定理16 设 A 对称正定,则 x * 为线性方程组(4.1)
解的充分必要条件是 x * 满足
( x*) min ( x).
xR n
证明
设 x* A1b,由(4.5)及 A 的正定性有
1
( x) ( x*) ( A( x x*), x x*) 0.
2
所以对一切 x R n ,均有 ( x) ( x*) ,即 x * 使 (x)达
到最小.
反之,若有 x 使 (x)达到最小,则有 ( x ) ( x) 对
x R n 成立,由上面证明有 ( x ) ( x*) 0,即
103
1
( A( x x*), x x*) 0.
2
由 A 的正定性,这只有 x x * 才能成立,证毕.
又定理可知,求 x R n 使 (x)达到最小值,这就是求
解等价于线性方程组(4.1)的变分问题.求解方法是构造
一个向量序列 {x (k ) }使 ( x ( k ) ) ( x*).
104
6.4.2
最速下降法
通常求 (x)的极小点 x *可转化为求一维问题的极小,即
从 x ( 0 )出发,找一个方向 p ( 0 ),令 x (1) x (0) p ( 0),使
( x (1) ) min ( x (0) p ( 0) ).
R
一般地,令
x ( k 1) x ( k ) k p ( k ) ,
(4.6)
使
( x ( k 1) ) min ( x ( k ) p ( k ) ).
R
105
由于
(x
(k )
p
(k )
) ( x ) ( Ax
(k )
(k )
b, p
(k )
)
2
2
( Ap ( k ) , p ( k ) ),
d ( x ( k ) p ( k ) )
( Ax ( k ) b, p ( k ) ) ( Ap ( k ) , p ( k ) ) 0,
d
于是可得
( Ax ( k ) b, p ( k ) )
k
,
(k )
(k )
( Ap , p )
(4.7)
这样得到的 k显然满足
( x ( k ) k p ( k ) ) ( x ( k ) p ( k ) ), R,
106
这就是求 (x) 极小点的下降算法,这里 p (k )是任选的一个方
向,如果我们选一个方向 p (k )使 (x)在点 x (k )沿 p (k )下降最快,
实际上二次函数(4.2)的几何意义是一族超椭球面
( x) ( x ( k ) ) ( ( x ( k ) ) ( x ( k 1) ))
x *为它的中心,若n 2就是二维空间的椭圆曲线,我们从
x (k )出发,先找一个使函数值 (x)减少最快的方向,这就是
正交于椭球面的函数 (x) 的负梯度方向
T
( x )
( x )
,
( x )
,,
xn
x1
(k )
(k )
(k )
107
由(4.3)有
p ( k ) ( x ( k ) ) ( Ax( k ) b) r ( k ) .
由(4.7)可得
(r ( k ) , r ( k ) )
k
,
(k )
(k )
( Ar , r )
(4.8)
于是
x ( k 1) x ( k ) k r ( k ) , k 0,1,,
(4.9)
其中 r ( k ) b Ax( k ) 为剩余向量.
108
由(4.8)和(4.9)计算得到的向量序列 x (k ) 称为解
线性方程组的最速下降法.
由于
(r ( k 1) , r ( k ) ) (b A( x ( k ) k r ( k ) ), r ( k ) )
(r ( k ) , r ( k ) ) k ( Ar ( k ) , r ( k ) )
0,
说明两个相邻的搜索方向是正交的.
还可以证明由(4.8)和(4.9)得到的 { ( x (k ) )}是单
调下降有下界的序列,它存在极限,满足
lim x ( k ) A1b,
k
109
而且
k
x
(k )
1 n ( 0 )
x x * .
x *
A
A
1 n
其中 1 , n 分别为对称正定矩阵 A 的最大与最小特征值,
u
1
2
A
( Au, u ) .
当 1 n 时收敛是很慢的,而且当 r (k ) 很小时,由于
舍入误差影响,计算将出现不稳定,所以这个算法是实际
中很少使用,需要寻找对整体而言下降更快的算法.
110
6.4.3 共轭梯度法(CG方法)
CG方法是一种求解大型稀疏对称正定方程组十分有效
的方法.
仍然选择一组搜索方向 p ( 0) , p (1) , ,但它不再是具有
正交性的 r ( 0) , r (1) , 方向.
如果按方向 p ( 0) , p (1) ,, p ( k 1) 已进行 k 次一维搜索求得
x (k ) ,下一步确定 p (k )方向能使 x ( k 1) 更快地求得 x * ,在 p (k )
确定后,仍按(4.6)和(4.7)的下降算法求得 k .
111
)
若已算出 x (k(不失一般性设
x ( 0 ) 0),则由(4.6)有
x ( k 1) x ( k ) k p ( k ) ,
x ( k ) 0 p ( 0) 1 p (1) k 1 p ( k 1) .
开始可取 p ( 0) r ( 0),当 k 1时确定 p (k ) 除了使
( x ( k 1) ) min ( x ( k ) p ( k ) ),
还希望 { p (k ) }的选择使
( x ( k 1) )
xspan{ p
min(1)
(0)
,p
,, p
(k )
( x),
(4.10)
}
这里 x span{ p (0) , p (1) ,, p ( k ) } 可表示为
x y p ( k ) ,
y span{ p (0) , p (1) ,, p ( k 1) }, R. (4.11)
112
所以由(4.4)有
(4.12)
( x) ( y p ( k ) )
( y ) ( Ay, p ( k ) ) (b, p ( k ) )
2
2
( Ap ( k ) , p ( k ) ).
(4.11)式表示在 y 已确定的情况下,选 p (k ) 使 x 在整个空
间{ p ( 0) , p (1) ,, p ( k ) } 中 (x)最小,为了使(4.10)极小化,
需要对 及 y 分别求极小,在(4.12)中出现的“交叉项”
( Ay, p (k ) ) 必须令它为零,即
( Ay, p ( k ) ) 0, y span{ p ( 0) , p (1) ,, p ( k 1) },
也就是
( Ap( j ) , p ( k ) ) 0,
j 0,1,, k 1.
113
)
如果对 j 1,2,每步都如此选择 p (k,则它符合以下定义.
定义8 设 A 对称正定,若 R n 中向量组{ p ( 0) , p (1) ,, p ( k ) }
满足
( Ap(i ) , p ( j ) ) 0, i j, i, j 0,1,, m,
则称它为 R n 中一个 A –共轭向量组或称 A -正交向量组.
显然,当 m n时,不含零向量的 A -共轭向量组线性无
关,当 A I 时 A -共轭性就是一般的正交性.
若取 { p ( 0) , p (1) ,}是 A -共轭的,考虑(4.10)的解
, p (k )使(4.12)中 ( Ay, p ( k ) ) 0 ,于是问题(4.10)可分离
为两个极小问题,由(4.12)可得
114
xspan{ p
min(1)
(0)
,p
,, p ( k ) }
( x) min ( y p ( k ) )
min ( y ) min [
y
,y
2
2
( Ap ( k ) , p ( k ) ) ( Ay, p ( k ) ) (b, p ( k ) )].
第一个极小 y span{ p (0) , p (1) ,, p ( k 1) } 的解 y x (k ) .
第二个极小就是(4.6)的极小,由 r ( k ) b Ax( k ) 及
(4.7)得
(r ( k ) , p ( k ) )
k
.
(k )
(k )
( Ap , p )
(4.13)
CG法中向量组 { p ( 0) , p (1) ,}的选择,可令 p (0) r (0) , p ( k ) 选为
( k 1)
p ( 0) , p (1) ,, p ( k 1) 的 A –共轭,它并不唯一,可选为 r (k )与 p
的线性组合.
115
不妨设
p ( k ) r ( k ) k 1 p ( k 1) ,
(4.14)
利用 ( p ( k ) , p ( k 1) ) 0 ,可定出
(r ( k ) , Ap ( k 1) )
k 1 ( k 1)
,
( k 1)
(p
, Ap
)
(4.15)
(k )
( k 1)
这样由(4.14)和(4.15)得到的 p 与 p
是 A –共轭的.
根据以上的分析,取 x ( 0) R n , r ( 0) b Ax( 0) , p (0) r ( 0)
可按(4.13)和(4.6)求得 0 , x (1) ,再由(4.15)和(4.14)求得
(k )
0 , p (1) ,从而可得到序列 {x },这就是CG算法.
116
下面对(4.13)作进一步简化.由
(4.16)
r ( k 1) b Ax( k 1) r ( k ) k Ap ( k ) ,
有
(r ( k 1) , p ( k ) ) (r ( k ) , p ( k ) ) k ( Ap ( k ) , p ( k ) ) 0,
(r ( k ) , p ( k ) ) (r ( k ) , r ( k ) k 1 p ( k 1) ) (r ( k ) , r ( k ) ).
再代回(4.13),有
(r ( k ) , r ( k ) )
k (k )
,
(k )
( p , Ap )
(4.17)
由此看出,当 r ( k ) 0时, k 0.
117
定理17
由(4.6)、(4.14)~(4.17)组成的CG算
法得到的序列 {r (k ) } 及 { p (k ) }有以下性质:
(1) (r (i ) , r ( j ) ) 0(i j ) ,即 {r (k ) } 构成 R n 中的正交向
量组.
(2) ( Ap(i ) , p ( j ) ) ( p (i ) , Ap( j ) ) 0(i j ) ,即 { p (k ) }为一
个 A -共轭向量组.
证明
用数学归纳法,由(4.16)即 0 , 0 的表达式
(r ( 0) , r (1) ) (r ( 0) , r ( 0) ) 0 (r ( 0) , Ar ( 0) ) 0,
( p (1) , Ap ( 0) ) (r (1) , Ar ( 0) ) 0 (r ( 0) , Ar ( 0) ) 0.
118
现设 r ( 0) , r (1) ,, r ( k ) 互相正交,p ( 0) , p (1) ,, p ( k ) 相互 A 共轭,则对 k 1,由(4.16)有
(r ( k 1) , r ( j ) ) (r ( k ) , r ( j ) ) k ( Ap ( k ) , r ( j ) ).
若 j k,由 k的表达式(4.17)得到 (r ( k 1) , r ( k ) ) 0.
若 j 0,1,, k 1,由归纳法假设,有 (r ( k ) , r ( j ) ) 0 ,再
由(4.14)有
r ( j ) p ( j ) j 1 p ( j 1) ,
得
(r ( k 1) , r ( j ) ) (r ( k ) k Ap( k ) , r ( j ) ) k ( Ap( k ) , p ( j ) j 1 p ( j 1) ) 1190.
再看 p ( k 1) ,由(4.14)和(4.15)有
( p ( k 1) , Ap ( k ) ) (r ( k 1) , Ap ( k ) ) k ( p ( k ) , Ap ( k ) ) 0
对 j 0,1,, k 1,有
( p ( k 1) , Ap ( j ) ) (r ( k 1) , Ap ( j ) ) k ( p ( k ) , Ap ( j ) ).
上式右端最后一项由归纳法假设为零,前一项由(4.16)
有 Ap ( j ) 1 (r ( j ) r ( j 1) ) ,再由 r ( k 1) 与 r ( j )的正交性得
j
(r ( k 1) , Ap ( j ) ) 0,
定理得证.
120
由定理的推导还可简化 k 的计算,由(4.15)有
(r ( k 1) , Ap ( k ) ) (r ( k 1) , k1 (r ( k ) r ( k 1) ))
k (k )
(k )
( p , Ap )
(r ( k ) k 1 p ( k 1) , Ap ( k ) )
(r ( k 1) , r ( k 1) )
(r ( k 1) , r ( k 1) )
.
(k )
(k )
(k )
(k )
k (r , Ap )
(r , r )
(4.18)
由此可见,若 r ( k 1) 0 ,则 k 0.
根据(4.17)和(4.18)可将CG算法归纳如下.
121
CG算法:
(1)任取 x ( 0) R n,计算 r ( 0) b Ax( 0) ,取 p ( 0) r ( 0).
(2)对 j 0,1,, k 1,计算
(r ( k ) , r ( k ) )
k (k )
( p , Ap ( k ) )
x ( k 1) x ( k ) k p ( k )
r ( k 1) r ( k ) k Ap ( k ) ,
(r ( k 1) , r ( k 1) )
k
,
(k )
(k )
(r , r )
p ( k 1) r ( k 1) k p ( k )
122
(3)若 r ( k ) 0,或 ( p ( k ) , Ap( k ) ) 0 ,计算停止,则 x ( k ) x * .
由于 A 正定,故当 ( p ( k ) , Ap( k ) ) 0 时, p ( k ) 0,而
(r ( k ) , r ( k ) ) (r ( k ) , p ( k ) ) 0
也即 r ( k ) 0.
由于 {r (k ) } 互相正交,故在 r ( 0) , r (1) ,, r ( n ) 中至少有一个
零向量.
若 r ( k ) 0,则 x ( k ) x * .所以用CG算法求解 n 维线性方
程组,理论上最多 n 步便可求得精确解,从这个意义上讲,
CG算法是一种直接法.
123
但在舍入误差存在的情况下,很难保证 {r (k ) } 的正交
性,此外当 n 很大时,实际计算步数 k n ,即可达到精
度要求而不必计算 n 步.
从这个意义上讲,它是一个迭代法,所以也有收敛性
的问题,可以证明对CG算法必有估计式
k
x
其中 x
(k )
K 1 (0)
x x* .
x * 2
A
A
K
1
(4.19)
1
2
A
( Ax, x) , K cond ( A) 2 .
124
例11 用CG算法解线性方程组
3x1 x2 5,
x1 2 x2 5.
3 1
显然 A
是对称正定的.取 x ( 0) (0,0)T ,则
1 2
p (0) r (0) b Ax( 0) (5,5)T ,
解
r (1)
p
(1)
(r ( 0 ) , r ( 0 ) )
2
0 (0)
,
( 0)
( p , Ap ) 7
10 10
x (1) x ( 0) 0 p ( 0) ( , )T ,
7 7
(1)
(1)
(
r
,
r
)
1
5
5
(0)
(0)
T
0 ( 0) ( 0) ,
r 0 Ap ( , ) ,
(r , r ) 49
7 7
r
(1)
0 p
(0)
30 40 T
( , ) .
49 49
125
类似可计算出 1 7 , x ( 2) (1,2)T 为方程组的精确解.
10
由估计式(4.19)可以看出当 K 1,即 A 为病态矩
阵时,CG法收敛很慢.
为改善收敛性,可采用预处理方法降低矩阵的条件数,
从而得到各种预处理共轭梯度法.
126