You are on page 1of 47

第3章 内容回顾

线性代数方程组的数值解法
§3.1 高斯消去法——内容回顾
 §3.1.1 顺序高斯消去法
 §3.1.2 列主元高斯消去法
 §3.1.3 高斯-若尔当消去法

2
§3.1.1 顺序高斯消去法
 如此继续消元下去,第 n - 1步结束后得到矩阵:
 a11(1) (1)
a12 (1 )
a13 ... a1(1n) b1(1) 
 (2) ( 2)

 0 a 22 a 23 ... a 2( 2n) (2)
b2 
( A (n) , b (n) )   0 0 ( 3)
a 33 ... a 3( 3n)

b3( 3 ) 

 ... ... ... ... ... ... 
 (n) 
 0 0 0 ... a nn bn( n ) 
这就完成了消元过程。

3
§3.1.1 顺序高斯消去法
 对应的方程组变成:
 a11(1) x1  a12
(1)
x 2  ...  a1(1n) x n  b1(1)
 ( 2)
 a 22 x 2  ...  a 2( 2n) x n  b2( 2 )
 (式 2 )
 ................................................

 a (n)
nn x n  bn
(n)

对此方程组进行回代, 就可求出方程组的解。
 bn( n )
 xn  ( n )
 a nn
  (i ) n 
  bi   a ij( i ) x j  (式 3 )
  
 xi   j  i 1  , i  n  1, n  2,  ,1

 a ii( i )
(k )
元素 a kk 称为约化的主元素。
4
§3.1.2 列主元高斯消去法
给定线性方程组 Ax=b ,记 A(1)=A , b(1)=b ,列主元
Gauss 消去法的具体过程如下:
首先在增广矩阵 B(1)=(A(1),b(1)) 的第一列元素中,取
a k(11)  max a i(11) 为主元素, rk  r1 .
1 i  n

然后进行第一步消元得增广矩阵 B(2)=(A(2),b(2)) 。 再在
矩阵 B(2)=(A(2),b(2)) 的第二列元素中,取
a k( 22)  max a i(22 ) 为主元素, rk  r2 .
2 i  n
然后进行第二步消元得增广矩阵 B(3)=(A(3),b(3)) 。按此方
法继续进行下去 , 经过 n-1 步选主元和消元运算 , 得到增广
矩阵 B(n)=(A(n),b(n)). 则方程组 A(n)x=b(n) 是与原方程组等价的上
三角形方程组 , 可进行回代求解 .
易证,只要 |A|0, 列主元 Gauss 消去法就可顺利进行。
5
§3.1.3 高斯 - 若尔当消去法
高斯 - 约当消去法( Gauss-Jordan )
这是一种无回代的方法,使计算工作量减小,在第 k 次
消元时不仅把 akk(k) 化成 1 ,不仅将 aik ( i=k+1 ,……,
n )化成 0 ,而且也将 aik ( i=1 , 2 ,……, k-1 )也化
为 0 ,最后消元过程结束时的系数矩阵为 1 0 0 0 0
0 1 0 0 0
 
0 0  0 0
 
    1 
0 0 0 0 1
得消元公式
akj (k)=akj(k-1)/akk(k-1) ( j=1,2,…,n+1 )
aij (k)= aij (k-1)- aik(k-1)akj(k) ( i  k,i=1,2,…,n , j=1,2,
…,n+1 ) 6
§3.2 矩阵三角分解法
 本节内容
 §3.2.1 Gauss消去法的矩阵表示
 §3.2.2 Doolittle分解法

7
§3.2.1 Gauss 消去法的矩阵表示
 一 . Gauss 消去法的矩阵表示
 对矩阵

 a11(1) a12(1 )
 a1(1n) 
 (1 ) (1 ) (1)

 a 21 a 22  a 2 n 
A (1)  
   
 a (1 ) (1) 
a n(12)  a nn
 n1 

8
§3.2.1 Gauss 消去法的矩阵表示
若a11(1)  0,令m i 1  a i(11)  a11(1) , i  2,3,  , n, 记
 1 
 
  m 21 1 
L1    m 31 1 
 
   
 
  m n1 1
 a11(1) a12(1)
 a1(1n) 
 ( 2) ( 2)

 0 a 22  a 2 n 
则有 A( 2 )  L1 A(1)  
   
 0 ( 2) 
a n( 22)  a nn
 
9
§3.2.1 Gauss 消去法的矩阵表示
( 2)
若a 22  0,令 m i 2  a i(22 )  a 22
( 2)
, i  3 , 4,  , n , 记
1 
 
 1 
L2    m 32 1 
 
   
 
  mn2 1
 a11(1) (1)
a12 (1)
a13  a1(1n) 
 ( 2) ( 2) ( 2)

 0 a 22 a 23  a2n 
则有 A( 3 )  L2 A( 2 )  0 0 ( 3)
a 33

 a 3( 3n) 

     
 ( 3) 
 0 0 a n( 33)  a nn 
10
§3.2.1 Gauss 消去法的矩阵表示
如此进行下去,第 n  1步得到:
 a11(1) a12
(1)
 a1(1n) 
 ( 2) ( 2)

(n) ( n 1)  a 22  a 2 n 
A  Ln 1 A  
   
 a ( n) 
 nn 

1 
 
 1 
其中 Ln1    
 
 1 
 
  m n , n 1 1 
11
§3.2.1 Gauss 消去法的矩阵表示
也就是:
A(n)=Ln-1A(n-1) =Ln-1Ln-2A(n-2) =…= Ln-1Ln-2…L2L1A(1)
其中:
1 
 
  
 1 
Lk   


 m k 1k 1  第

第 k行 k+1 行
   
  m nk 1  , k  1,2,  , n  1

所以有: A=A(1) = L1-1L2-1…Ln-1-1A(n) = LU


其中: L=L1-1L2-1…Ln-1-1, U=A(n)
12
§3.2.1 Gauss 消去法的矩阵表示
而且有
1 
   1 
    
   m 21 1 
1
Lk1   ,L   m 31 m 32 1 
 m k 1k 1   
       
     
   m n1 mn2 mn3  1
 m nk 1
 a11(1) (1 )
a12  a1(1n) 
 ( 2) ( 2)

L 称为单位下三角矩阵 ;  a 22  a 2 n 
U 
U 是上三角矩阵 .    
 ( n) 
a nn
 
式 A=LU 称为矩阵 A 的三角分解。
13
§3.2.2 杜里特尔( Doolittle )分解法
 Doolittle 分解法
定理 2 : 设 n 阶方阵 A 的各阶顺序主子式不为零 , 则存
在唯
一单位下三角矩阵 L 和上三角矩阵 U
使 A=LU 。 A  LU  L U
证明 只证唯一性 1
, 设有两种分解
1
L
 L  U
 E
U
单位下 上三角
三角阵 形矩阵
则有
L  L ,U  U。

所以得
Ly  b
于是  Ax=b  LUx=b
 Ux  y
令 Ux=y 得
14
§3.2.2 Doolittle 分解法
下面介绍矩阵三角分解 的Doolittle 分解方法,设
 a11 a12 ... a1n 
 
 a 21 a 22 ... a 2 n 
a a 32 a3n  
 31 
   
 
 a n1 an 2 ... a nn 
 1  u11 u12 u13 ... u1n 
  
 m 21 1  u22 u23 ... u2 n 
m m 32 1  u33 ... u3 n 
 31  
       
  
 m n1 m n 2 m n 3  1  unn 
则得: u1 j  a1 j j  1,2,  n
m i 1  a i 1  u11 i  2,3,  , n
15
§3.2.2 Doolittle 分解法
对 K=2,3,…,n 计算
(1)
若已求得 U的( i  1)行及 L的( i  1)列,则由矩阵乘法有
a ij  m i 1 u1 j  m i 2 u2 j  m i 3 u3 j    m inunj
n i 1
  m ik ukj   m ik ukj  uij,j  i
k 1 k 1
ij  1
可得 uij  a ij   m ik ukj j  i , i  1,  , n
k 1

求 U 的第 i 行元

16
§3.2.2 Doolittle 分解法
对 K=2,3,…,n 计算
(2)
另 a ij  m i 1 u1 j  m i 2 u2 j  m i 3 u3 j    m in unj
j 1
  m ik ukj  m ij u jj,i  j  1,  , n
k 1

若uij  0,
j 1
1
可得 m ij  (a ij   m ik ukj ) , i  j  1,  , n
u jj k 1

求 L 的第 i 列元素

17
§3.2.2 Doolittle 分解法
 a11 a12 ... a1n   u11 u12 ... u1n 
   
 a 21 a 22 ... a 2 n   a 21 u22 ... u2 n 
    
    
   
a an 2 ... a nn  a an2 ... unn 
 n1  n1

 u11 u12 ... u1n 


 
 m 21 u22 ... u2 n 

  
 
m mn2 ... unn 
 n1
18
§3.2.2 Doolittle 分解法
 u11 u12  u1k 1 u1k  u1n 
 
 m 21 u22  u2 k 1 u2 k  u2 n 
      
 
 m k 11 m k 12  uk 1k 1 uk 1k  uk 1n 
 
 mk 1 mk 2  m kk 1 ukk  ukn 
      
 
 m n1 mn2  m nk 1 m nk  unn 
u1 j  a1 j j  1,2, , n
m i 1  a i 1  u11 i  2, 3,  , n
对k  2,3,  , n, 计算
ij 1
uij  a ij   m ik ukj j  i , i  1, , n
k 1
j 1
1
m ij  (a ij   m ik ukj ) , i  j  1,  , n
u jj k 1

19
20
21
§3.2.2 Doolittle 分解法

 1  y1   b1   u11 u12 ...u1n  x1   y1 
         
 m 21 1  y 2   b2   u22 ... u2 n  x 2   y 2 
       ,      
       
         
m mn2 ... 1  yn   bn   unn  x n   yn 
 n1
可得
i 1
y1  b1 yi  bi   m ij y j , i  2,3, , n
j 1
n
1
x n  y n  unn xi 
uii
( yi  u
j  i 1
ij x j ), i  n  1,  ,2,1

这就是求解方程组 Ax=b 的 Doolittle 三角分解方法。


22
§3.2.2 Doolittle 分解法
例 利用三角分解方法解线性方程
组  x1  2 x 3  3 x4  1

 2 x1  x 2  3 x 3  5
3 x  2 x  2 x  1
 1 2 3

解 因为
 1 2  3  1 2  3  1 2  3  1 2  3
       
A  2 1 3      2   2  5 
3  2 2    3  3 
       
 1 2  3  1 2  3  1 2  3 
     
 2 5 9   2 5 9   2 5 9 
3  3 8   3 8  17 
   5   5 5 

23
§3.2.2 Doolittle 分解法
所以
 1 2  3  1  1 2  3 
    
A   2  1 3    2 1  5 9 
 3  2 2   3 8 1   17 
   5  5 

1  y1   1   y1   1   1   1 
            
先解  2 1  y 2    5  ,  y2       3    3 
 3 8 1  y   1  得  y        34 
 5  3     3      5 

 1 2  3  x1   1   x1       1 
            
再解   5 9  x 2    3  , 得  x2       3    3 
  17 
x    34   x   2  2  2
 5  3   5  3      
24
§3.2.2 Doolittle 分解法
解线性方程组 Ax=b 的 Doolittle 三角分解法
的计算量约为 1/3n3, 与 Gauss 消去法基本相同。
其优点在于求一系列同系数的线性方程组 Ax=bk ,
(k=1,2,…,m) 时 , 可大大节省运算量。

例如 , 求上例中矩阵 A 的逆矩阵。可分别取常向量
b1=(1,0,0)T, b2=(0,1,0)T, b3=(0,0,1)T

25
§3.2.2 Doolittle 分解法
1  y1   1   1 2  3  x1   y1   x1   174 
             5 
由 2 1  y2    0 ,   5 9  x 2    y 2 , 得 x 2    17 
 3 8 1  y   0    17 
x   y   x   1 
 5   3     5   3   3   3   17 
1  y1   0   1 2  3  x1   y1   x1   172 
             11 
 2 1  y 2    1  ,   5 9  x 2    y2 , 得 x 2    17 
 3 8 1  y   0    175  x 3   y3   x 3   178 
 5  3    
1  y1   0   1 2  3  x1   y1   x1   173 
             9 
 2 1  y 2    0  ,   5 9  x 2    y2 , 得 x 2     17 
 3 8 1  y   1    17 
x   y   x   5 
 5  3     5  3   3   3   17 
 174 2
17 
3
 4 2 3 
1
 5 17
 1 
所以 A   17 17  17   17  5 11  9 
11 9

 1 8  5    1 8  5
 17 17 17   
26
§3.6 迭代法
 本节内容 解大型稀疏
 §3.6.1 简单迭代法 线性方程组
 §3.6.2 雅可比(Jacobi)迭代法
 §3.6.3 高斯-塞德尔(Gauss-Seidel)迭代法
 §3.6.4 逐次超松弛(SOR)迭代法
 例子

27
§3.6.1 简单迭代法
 简单迭代法
 1. 迭代法建立
考虑 Ax  b
Ax  b  x  Bx  f (矩阵B不唯一 )
 x ( k 1)  Bx ( k )  f ( k  0,1, ) 式1
对应写出  (0)
 取定初始向量 x
产生向量序列 x (1) , x ( 2 ) ,  , x ( k ) , x ( k 1) , 
若收敛,记 lim x ( k )  x *
k 

则于(式1)两端取极限有:
x*  Bx *  f ,
28
§3.6.1 简单迭代法
上式说明:
x * 是解向量 x,从而当 k充分大时
x ( k )  解向量 x
式 1 叫简单迭代法, B 叫迭代矩阵。
一阶定常迭代法

注意:迭代阵 B 不唯一,影响收敛性。

29
§3.6.2 雅可比 (Jacobi) 迭代法
 雅可比 (Jacobi) 迭代法

设有方程组 (其中 a ij  0) Ax  b,即


a11 x1  a12 x 2    a1n x n  b1

a 21 x1  a 22 x 2    a 2 n x n  b2
 式2
        
a n1 x1  a n 2 x 2    a nn x n  bn

30
§3.6.2 雅可比 (Jacobi) 迭代法

作等价变换
 1
 x1  a b1  0 x1  a12 x 2    a1n x n 
 11

 1
 x2  b2  a21 x1  0 x2    a2 n xn 
 a 22 式3
        

 1
 x n  a bn  a n1 x1  a n 2 x 2    0 x n 
 nn

31
§3.6.2 雅可比 (Jacobi) 迭代法
于是有迭代公式
 ( k 1) 1 (k ) (k ) (k )
x
 1  [ b1  0 x 1  a x
12 2  ..........  a 1n n ]
x
a11

 ( k 1) 1 (k ) (k ) (k )
x
 2  [ b 2  a x
21 1  0 x 2  ..........  a 2n n ]
x
 a 22 式4
        

 ( k 1) 1 (k ) (k ) (k )
x
 n  [ b n  a n1 1x  a n2 2x  ..........  0 x n ]
 a nn
( k  0,1,2,)
— — — — — — — —Jacobi迭代法

32
§3.6.2 雅可比 (Jacobi) 迭代法

i 1 n
1
( k 1)
xi  (bi   a ij x j 
(k )
a ij
(k )
x j ),
a ii j 1 j  i 1

i  1,2, n,
k  0,1,2,

33
§3.6.2 雅可比 (Jacobi) 迭代法
矩阵形式为:
 a 12 a 1n 
x ( k 1)
  0      x k   b1 

 1   a 11 a 11   1 a11
      
 ( k 1)   a 21 a 2n   k   b2 

 x2     0    x2    a 
   a 22 a 22     22 

             
 ( k  1 )   a n1 a n2  k   bn 
x
 n   a
    0   x  
 2   a nn


 nn ann  

简记为 x ( k 1)  BJ x ( k )  f
34
§3.6.2 雅可比 (Jacobi) 迭代法

迭代结束条件:

35
§3.6.3 高斯 - 塞德尔 (Gauss-Seidel) 迭代

 高斯 - 塞德尔 (Gauss-Seidel) 迭代法
迭代方法
 ( k 1)
x
 1 
1
a11
b1 
 0 x1
(k )
 a x
12 2
(k )
   a x
1n n
(k )


 ( k 1)
x
 2 
a
1
b 2 
 a x
21 1
( k 1)
 0 x (k )
2    a x
2n n
(k )
 式7
 22
      

 ( k 1)
x
 n 
a
1
b n 
 a x
n1 1
( k 1)
 a n2 2 x ( k 1)
   0 x (k )
n 
 nn

称为与 Jacobi迭代法(式4)对应的 Seidel 方法。

36
§3.6.3 高斯 - 塞德尔 (Gauss-Seidel) 迭代

i 1 n
1
( k 1)
xi  (bi   a ij x j
( k  1)
 a ij
(k )
x j ),
a ii j 1 j  i 1

i  1,2, n,
k  0,1,2,

37
§3.6.4 逐次超松弛 (SOR) 迭代法
 逐次超松弛 (SOR) 迭代法
1  i 1 n 
x ( k 1)
i  (1   ) x i( k )    bi   a ij x (jk 1)  a ij x (k )
j 
a ii  j 1 j  i 1 
( i  1,2,  , n)
(式8)
 — 松弛因子,
  1 即Seidel 方法 (式7 )
0    1为低松弛方法
0 < ω < 2 时,迭代收敛
1    2为超松弛方法
(式8)一种加权平均。

38
§3.6 迭代法
 例子
例 1

用J法和 G  S法求解线性方程组
10 x1  3 x 2  x 3  14

 2 x1  10 x 2  3 x 3  5
 x  3 x  10 x  14
 1 2 3

方程组的精确解为 x*  (1,1,1)T 。
 
39
§3.6 迭代法
解: J迭代法计算公式为
 x1( k 1)   103 x 2( k )  101 x 3( k )  75
 ( k 1) 1 ( k ) 3 ( k ) 1
 x2  5 x1  10 x 3  2
 ( k 1) (k ) (k )
 x 3   10 x1  10 x 2  75
1 3

取初始向量 x (0)  (0,0,0)T ,迭代可得


x1(1)  1.4, x 2(1)  0.5, x 3(1)  1.4
x1( 2 )  1.11 , x 2( 2 )  1.2, x 3( 2 )  1.11

40
计算结果列表如下
§3.6 迭代法 :
k x1(k) x2(k) x3(k) ‖x(k)-x*‖

0 0 0 0 1
1 1.4 0.5 1.4 0.5
2 1.11 1.20 1.11 0.2
3 0.929 1.055 0.929 0.071
4 0.9906 0.9645 0.9906 0.0355
5 1.01159 0.9953 1.01159 0.01159
6 1.000251 1.005795 1.000251 0.005795
7 0.9982364 1.0001255 0.9982364 0.0017636

可见,迭代序列逐次收敛于方程组的解,而且迭代
7 次得到精确到小数点后两位的近似解。
41
§3.6 迭代法

G-S 迭代法的计算公式为 :

 x1( k 1)   103 x 2( k )  101 x 3( k )  75



 ( k 1) 1 ( k 1) 3 ( k ) 1
 x2  5 x1  10 x 3  2
 ( k 1) ( k 1) ( k 1)
 x3   10 x1  10 x 2 
1 3 7
 5

42
§3.6 迭代法
同样取初始向量 x(0)=(0,0,0)T ,计算结果为:
k x1(k) x2(k) x3(k) ‖x(k)-x*‖
0 0 0 0 1
1 1.4 0.78 1.026 0.4
2 1.0634 1.02048 0.987516 0.0634
3 0.9951044 0.99527568 1.00190686 0.0048956

由计算结果可见, G-S 迭代法收敛较快 .


取精确到小数点后两位的近似解, G-S 迭代法
只需迭代 3 次,而 J 迭代法需要迭代 7 次。
43
§3.6
例 2 用 迭代法
SOR 方法解线性方程组
4 x1  2 x 2  4 x 3  10

  2 x1  17 x 2  10 x 3  3
  4 x  10 x  9 x  7
 1 2 3

方程组的精确解是 x*=(2,1,-1)T 。

取 x(0)=(0,0,0)T , =1.46 。

44
§3.6 迭代法
取 x(0)=(0,0,0) T
, =1.46, 计算结果如下 :
k x1(k) x2(k) x3(k)
0 0 0 0
1 3.65 0.8845882 -0.2021098
2 2.32166910 0.4230939 -0.22243214
3 2.5661399 0.6948261 -0.4952594
… …… …… ……
20 1.9999987 1.0000013 -1.0000034

从结果可见,迭代 20 次时已获得精确到小
数点后五位的近似解。如果取  =1.25 ,则需要迭
代 56 次才能得到具有同样精度的近似解;如果取
 =1 ,则需迭代 110 次以上。
45
本章小结
 高斯消去法
 顺序高斯消去法
 列主元高斯消去法 全主元高斯消去法
 高斯 - 约当消去法

 矩阵三角分解法
 Doolittle 分解法 Crout 分解法
 追赶法

 迭代法:雅可比、高斯 - 赛德尔、 SOR

46
作业
 9 (杜里特尔法)
 10 (杜里特尔法)
 24 (写出迭代方程即可)

47

You might also like