矩阵三角分解法

Download Report

Transcript 矩阵三角分解法

第五章
线性方程组直接解法
— 矩阵三角分解法
1
内容提要
 矩阵基础
 Gauss 消去法
 矩阵三角分解
 向量与矩阵范数
 误差分析
2
本讲内容
 一般线性方程组
 LU 分解与 PLU 分解
 对称正定线性方程组
 Cholesky 分解 -- 平方根法
 对角占优三对角线性方程组
 追赶法
3
LU 分解
 什么是矩阵的三角分解
 将一个矩阵分解成结构简单的三角矩阵的乘积
 Gauss 消去法对应的矩阵三角分解
矩阵的 LU 分解
A  LU
矩阵的 LDR 分解
A  LDR
克洛脱 (Crout) 分解
A  LU
4
LU 分解
 利用矩阵乘法直接计算 LU 分解 —— 待定系数法
1
 l21


 ln1
1
ln, n1
  u11



1 
L 
u12
u22
U
u1n   a11 a12
u2n   a21 a22

 
unn   an1 an2
=
a1n 
a2n 


ann 
A
比较等式两边的第一行得:u1j = a1j ( j = 1,…, n )U 的第一行
)
比较等式两边的第一列得: li1  ai1 u11 ( i = 2,…,Ln的第一列
n)
的第二行
比较等式两边的第二行得:u2 j  a2 j  l21u1 j ( j = U2,…,
3,…, n )
比较等式两边的第二列得:li 2   ai 2  li1u12  u22 ( iL=的第二列
5
计算 LU 分解
第 k 步:此时 U 的前 k-1 行和 L 的前 k-1 列已经求出
比较等式两边的第 k 行得:
ukj  akj   lk 1u1 j 
k 1
 lk ,k 1uk 1, j   akj   lki uij
i 1
比较等式两边的第 k 列得:
lik   aik  li1u1k 
 li , k 1uk 1, k 
( j = k, …, n )
i 1


ukk   aik   lij u jk  ukk
j 1


( i = k+1, …, n )
直到第 n 步,便可求出矩阵 L 和 U 的所有元素。
 这种计算 LU 分解的方法也称为 Doolittle 分解
6
LU 分解
算法 :(LU 分解)
for k = 1 to n
运算量:(n3 - n)/3
k -1
akj
aik
end
ukj  akj   lki uij ,
j = k, …, n
i 1
k 1


lik   aik   lij u jk  ukk , i = k+1, …, n
j 1


ex51.m
为了节省存储空间,通常用 A 的绝对下三角部分来存放
L (对角线元素无需存储),用 A 的上三角部分来存放 U
7
LU 分解算法
算法 :(LU 分解求解方程组)
% 先计算 LU 分解
for k = 1 to n
k -1
akj  akj   aki aij , j  k , k  1,
,n
i 1
k 1


1
aik 
aik   aij a jk  , i  k  1, k  2,

akk 
j 1

,n
end
% 解三角方程组 Ly = b 和 Ux = y
i -1
y1  b1 ,
yi  bi   aik yk ,
xn  yn ,
n


1
xi   yi   aik xk  , i  n  1, n  2,
aii 
k  i 1

i  2, 3,
,n
k 1
,1
8
PLU 分解
 列主元 Gauss 消去法 —— PLU 分解
for k = 1 to n
PA  LU
k -1
aik  aik   aij a jk , i = k, k+1, …, n
j 1
aik k  max aik ,
kin
Ip( k )  ik
akj  aik j ,
j = 1, 2, …, n
aik  aik akk ,
i = k+1, …, n
k 1
akj  akj   aki aij ,
i 1
end
j = k+1, …, n
Matlab程序:上机练习
 此算法可以用于计算矩阵的行列式和逆
9
PLU 分解算法
算法 :(PLU 分解求解方程组)
for k = 1 to n
k -1
aik  aik   aij a jk , i  k , k  1,
,n
j 1
aik k  max aik ,
kin
Ip( k )  ik
akj  aik j , j  1, 2,
,n
aik  aik akk , i  k, k  1,
,n
k 1
akj  akj   aki aij , j  k , k  1,
,n
i 1
end
% 解三角方程组 Ly = Pb 和 Ux = y
y1  bIp(1) ,
xn  yn ,
i -1
yi  bIp( i )   aik yk ,
i  2, 3,
,n
k 1
n


1
xi   yi   aik xk  , i  n  1, n  2,
aii 
k  i 1

,1
10
Cholesky 分解
 对称正定矩阵的三角分解 —— Cholesky 分解
定理:设 A 是对称矩阵,若 A 的所有顺序主子式
都不为 0,则 A 可唯一分解为
A = LDLT
其中 L 为单位下三角阵,D 为对角矩阵
证明: 板书
定理:(Cholesky分解)若 A 对称正定,则 A 可唯
一分解为
T
A = LL
其中 L 为下三角实矩阵,且对角元素都大于 0
证明: 板书11
计算 Cholesky 分解
 如何计算 Cholesky 分解 —— 待定系数法
 l11
 l21


 ln1
  l11 l21

l22


lnn  
l22
ln, n1
ln1   a11 a12
ln2   a21 a22

 
lnn   an1 an2
n
j 1
k 1
k 1
a1n 
a2n 


ann 
aij   lik l jk   lik l jk  l jj lij  i  j 
j  1, 2,
, n,
i  j, j  1,
,n
12
Cholesky 分解算法
算法 :(Cholesky 分解 )
for j = 1 to n
1
2

2 
l jj   a jj   l jk  ,
k 1


j 1
j 1


1
lij   aij   lik l jk  ,
l jj 
k 1

i = j +1, …, n
end
13
平方根法
 用 Cholesky 分解求解线性方程组 —— 平方根法
Ax  b
A 对称正定
算法 :(解对称正定线性方程组的平方根法 )
先计算 A 的 Cholesky 分解
然后解方程:Ly = b 和 LTx = y
i 1


y1  b1 l11 , yi   bi   lik yk  lii , i = 2, 3, …, n
k 1


n


xn  yn lnn , xi   yi   lki xk  lii
k  i 1


i = n-1, …, 2, 1
14
改进的 Cholesky 分解
 改进的 Cholesky 分解
1
 l21
T
A  LDL  

 ln1
1
ln, n1
  d1

d2


1 
n
j 1
k 1
k 1
 1 l21

1


d n  
ln1 
ln 2 


1
aij   likdk l jk   likdkl jk  lijd j  i  j 
j  1, 2,
, n,
i  j, j  1,
,n
15
改进的 Cholesky 分解
算法 :(改进的 Cholesky 分解 )
for j = 1 to n
j 1
d j  a jj   l 2jk dk ,
k 1
j 1


1
lij   aij   lik dk l jk  , i = j +1, …, n
dj 
k 1

end
 优点:避免开方运算
16
改进的平方根法
 改进的平方根法
Ax  b
A 对称正定
算法 :(解对称正定线性方程组的改进的平方根法 )
先计算 改进的 Cholesky 分解
然后解方程组:Ly = b 和 DLTx = y
i 1
y1  b1 , yi  bi   lik yk ,
i = 2, 3, …, n
k 1
xn  yn dn , xi  yi di 
n
l
k  i 1
ki
xk ,
i = n-1, …, 2, 1
17
三对角矩阵 LU 分解
 对角占优的不可约三对角矩阵的 LU 分解
 b1
 a2



c1
an
 计算公式
  1
 a 
2
 2

c n 1 

bn  
an
 1  1

1


 n  


n 

1
1  b1, 1  c1 1  c1 b1
 i  bi  ai i 1
i  ci i  ci  bi  aii 1 
 n  bn  an n1
i = 2, 3, …, n-1
18
追赶法
 三对角线性方程组的求解 —— 追赶法
Ax  f
A 三对角矩阵(对角占优不可约)
算法 :(追赶法 )
1  c1 b1 , i  ci  bi  aii1 
追
i = 2, 3, …, n-1
y1  f1 b1 , yi   fi  ai yi1   bi  ai i 1 
xn  yn , xi  yi  i xi 1
 运算量:约 5n+3n
追
i = 2, 3, …, n
i = n-1, …, 2, 1
赶
19