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, n1
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 ,
kin
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 ,
kin
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, n1
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, n1
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 aii 1
n bn an n1
i = 2, 3, …, n-1
18
追赶法
三对角线性方程组的求解 —— 追赶法
Ax f
A 三对角矩阵(对角占优不可约)
算法 :(追赶法 )
1 c1 b1 , i ci bi aii1
追
i = 2, 3, …, n-1
y1 f1 b1 , yi fi ai yi1 bi ai i 1
xn yn , xi yi i xi 1
运算量:约 5n+3n
追
i = 2, 3, …, n
i = n-1, …, 2, 1
赶
19