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 nn 及 A  (aij )  R nn ,
如果 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 nn .
定理3
设 B  R nn,则下面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 nn ,  为任一种矩阵范数,则
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 Bk  0,所以存在正整数
k 
N  N ( ) ,使当 k  N时,
Bk 
Bk
[  ( B)   ]
k
 1,
18
即当 k  N时有
 ( B)  B k
1
k
  ( B)   ,
由  任意性即得定理结论.
19
6.1.3
迭代法及其收敛性
设有线性方程组
Ax  b,
其中,A  (aij )  R nn 为非奇异矩阵.
将 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 nn ,
及一阶定常迭代法
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 nn
分成三部分
 a11


A



0







a22






ann 
 0

  a21
 

  an1,1
 a
n1

 a12

 a1,n1
0

 a2,n1


0
0


 an1, 2

0
 an 2

 an ,n1
 a1n 

 a2 n 
 D  L U .
 

 an1,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,
或
i1
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 j1f ,
k ji01 ,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 , ( kk1
k) ,
x

Bx
,2,(

Dx
 Lx ) 0
,1
Ux
 b,
(2.4)
即
i1
n
j 1
j i1
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 (初始向量),

i1
n




( k 1)
( k 1)
(k )
  bi  aij x j
 aij x j  / aii ,
 xi
j 1
j i1





(i 1,, n; k  0,1,).

(2.5)
或
 x ( 0 )  ( x1( 0 ) ,, xn( 0 ) )T ,

 x ( k 1)  x ( k )  x ,
i
i
 i

i1
n


(
k

1
)
(k )
 x   b  a x
 aij x j  / aii ,

i
i
ij j


j 1
j i1




(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 nn 为非奇异矩阵且 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
i1
n



xi   bi  aij x j  aij x j  / aii
j 1
j i1


迭代一次,这个算法需要的运算次数至多与矩阵 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 106.
由此例可知,用高斯-塞德尔迭代法,雅可比迭代法解
线性方程组(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 ) nn .
(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 ) nn (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



an1
bn1
an


4


,
 1
 B 
1
cn1 

0


bn 
1
1
4
0
0
4
1
1
0

1
.

1

4 
(ai ,bi ,ci 都不为零 )
则 A, B 都是不可约矩阵.
53
定理8 (对角占优定理)如果 A  (aij ) nn为严格对角
占优矩阵或 A为不可约弱对角占优矩阵,则 A为非奇异矩阵.
证明
只就 A为严格对角占优阵证明此定理.
采用反证法,如果 det( A)  0 ,则 Ax  0有非零解,
记为 x  ( x1 , x2 , , xn )T, 则
xk  max xi  0.
1i  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
 i1
    aij   aij
j i1
 j1
i1
n
n
j 1
j i1
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  3a 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 ,

i1
n



( k 1)
(k )
( k 1)
(k )

 xi
 xi   bi  aij x j
 aij x j  / aii ,

j 1
j i1



 (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

i1
n



( k 1)
(k )
 aij x j  / aii ,
 xi   
 bi  aij x j
j 1
j i1




(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 )  
1i  n
1i  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 105.
取其他 值,迭代次数如下表.
71
表 61
满足误差
松弛因子

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 )  12 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 )   ( Lo 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 ih  cos jh),
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( Lo p t )   ln( opt  1)  2[ln cos h  ln( 1  sin h)]
 2h  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)

 106 停止,则雅可比法需要1154次
迭代,而SOR迭代法若取  1.73则只需59次迭代.
h  0.05时 opt  1.72945.
88
在线性方程组(3.13)中的
由(3.14)及(3.15)表示
就是分块矩阵,下面给出一般情形.
设 Ax  b,其中 A  R nn为大型稀疏矩阵且将 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.
i1
对 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 nn是对称正定矩阵,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*  A1b 是线性方程组(4.1)式的解,则有
1
2
1
2
 ( x*)   (b, A1b)   ( 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).
xR n
证明
设 x*  A1b,由(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 )  A1b,
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) ) 
xspan{ 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
xspan{ 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) ,  k1 (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