在求解线性方程组
A
x
=
b
Ax=b
Ax=b时,如果能够通过正交变换,将
m
×
n
m\times n
m×n矩阵
A
A
A分解为
A
=
L
U
A=LU
A=LU,其中,
L
L
L为
m
×
m
m\times m
m×m单位下三角矩阵(对角元素为1的下三角矩阵);并且
U
U
U是
A
A
A的
m
×
n
m\times n
m×n阶梯型矩阵。这样一来,线性方程组
A
x
=
b
Ax=b
Ax=b即变为
L
U
x
=
b
LUx=b
LUx=b,它可以简单求解。
为了求解线性方程组
L
U
x
=
b
LUx=b
LUx=b,令
y
=
U
x
y=Ux
y=Ux。于是方程组变为
L
y
=
b
Ly=b
Ly=b,解之得
y
y
y。再求解
U
x
=
y
Ux=y
Ux=y即得方程组的解向量。于是,通过矩阵的
L
U
LU
LU分解,线性矩阵方程
A
x
=
b
Ax=b
Ax=b的求解分为两个三角矩阵方程的求解,具体算法如下:
步骤1 计算
A
=
L
U
A=LU
A=LU;
步骤2 用前向回代法求解下三角矩阵方程
L
y
=
b
Ly=b
Ly=b;
步骤3 用后向回代法求解上三角矩阵方程
U
x
=
y
Ux=y
Ux=y
上面的算法可以推广到线性矩阵方程
A
X
=
B
AX=B
AX=B的求解,其中,
A
∈
R
n
×
n
A\in R^{n\times n}
A∈Rn×n非奇异,
B
∈
R
n
×
p
B\in R^{n\times p}
B∈Rn×p。记
X
=
[
x
1
,
x
2
,
…
,
x
p
]
,
B
=
[
b
1
,
b
2
,
…
,
b
p
]
X=[x_1,x_2,…,x_p],B=[b_1,b_2,…,b_p]
X=[x1,x2,…,xp],B=[b1,b2,…,bp]。
以下算法可用于求出未知的矩阵
X
X
X:
其中,
J
J
J是
n
×
n
n\times n
n×n反射矩阵,即
J
=
[
e
n
,
e
n
−
1
,
…
,
e
1
]
J=[e_n,e_{n-1},…,e_1]
J=[en,en−1,…,e1],而
e
k
e_k
ek为基本向量。
因此,关键问题在于矩阵
A
A
A的
L
U
LU
LU分解。
定理 LU分解
如果
A
∈
R
n
×
n
A\in R^{n\times n}
A∈Rn×n非奇异,并且其
L
U
LU
LU分解存在的话,则
A
A
A的
L
U
LU
LU分解是唯一的,且
d
e
t
(
A
)
=
d
e
t
(
L
U
)
=
d
e
t
(
L
)
d
e
t
(
U
)
=
d
e
t
(
U
)
=
u
11
u
22
,
…
,
u
n
n
det(A)=det(LU)=det(L)det(U)=det(U)=u_{11}u_{22},…,u_{nn}
det(A)=det(LU)=det(L)det(U)=det(U)=u11u22,…,unn
算法 矩阵的LU分解的初等行变换算法
步骤1 利用初等行变换将矩阵
A
A
A化为阶梯型矩阵
U
U
U,即
步骤2 对单位矩阵执行与步骤1相应的初等行逆变换,得到单位下三角矩阵
L
L
L,即
输出
L
U
LU
LU分解由
A
=
L
U
A=LU
A=LU给出。
关于上述算法,有两点注意事项:
(1) 步骤2的初等行逆变换
E
i
−
1
E_i^{-1}
Ei−1是步骤1对应的初等行变换
E
i
E_i
Ei的逆变换。
(2) 若在步骤1中定义
α
R
p
+
R
q
\alpha R_p+R_q
αRp+Rq为将第
p
p
p行元素乘常数
α
\alpha
α之后,加给第
q
q
q行的初等行变换,则步骤2中相应初等行逆变换
(
α
R
p
+
R
p
)
−
1
(\alpha R_p+R_p)^{-1}
(αRp+Rp)−1定义为
−
α
R
+
p
+
R
p
-\alpha R+p+R_p
−αR+p+Rp
例
用LU算法求矩阵
A
=
[
2
4
−
1
5
−
4
−
4
−
5
3
−
8
2
2
−
5
−
4
1
16
−
6
0
7
−
3
2
]
A=
的LU分解。
解
(1)步骤1 使用初等行变换将矩阵
A
A
A变换为阶梯型矩阵
U
U
U:
(2)步骤2 使用初等行逆变换将
4
×
4
4\times 4
4×4单位矩阵变成单位下三角矩阵:
(3)输出 矩阵A的LU分解:
事实上,也可以利用步骤1将
A
A
A变换为阶梯型矩阵
U
U
U过程中的有关矩阵
A
,
A
1
,
A
2
,
U
A,A_1,A_2,U
A,A1,A2,U的主元列构造单位下三角矩阵
L
L
L。具体方法是:
(1)取出
A
A
A的第1个主元所在的列(不失一般性,假定为第1列),将其归一化(第一个元素为1)后,作为
L
L
L的第1列。
(2)取出
A
i
−
1
A_{i-1}
Ai−1的第
i
i
i个主元及下面的同列元素构成的部分组成一个
(
n
−
i
)
×
1
(n-i)\times 1
(n−i)×1向量,将其归一化后,作为
L
L
L的第
i
i
i列的下半部分,其中,
i
=
2
,
3
,
…
,
n
i=2,3,…,n
i=2,3,…,n。
针对上例,矩阵
A
,
A
1
,
A
2
,
A
3
A,A_1,A_2,A_3
A,A1,A2,A3被抽出的主元列及其归一化结果分别为
这与运用初等行逆变换的结果相同。
矩阵的QR分解是在工程中应用最广泛的一种矩阵分解。先看QR分解的性质。
定理 QR分解
若
A
∈
R
m
×
n
A \in R^{m\times n}
A∈Rm×n,且
m
≥
n
m \geq n
m≥n,则存在列正交的矩阵
Q
∈
R
m
×
m
Q \in R^{m\times m}
Q∈Rm×m和上三角矩阵
R
∈
R
m
×
n
R\in R^{m\times n}
R∈Rm×n使得
A
=
Q
R
A=QR
A=QR。当
m
=
n
m=n
m=n时,
Q
Q
Q是正交矩阵。如果
A
A
A是非奇异的
n
×
n
n\times n
n×n矩阵,则
R
R
R的所有对角线元素均为正,并且在这种情况下
Q
Q
Q和
R
R
R二者是唯一的。若
A
A
A是复矩阵,则
Q
Q
Q和
R
R
R取复值。
注意到
A
T
A
=
(
Q
R
)
T
(
Q
R
)
=
R
T
R
A^TA=(QR)^T(QR)=R^TR
ATA=(QR)T(QR)=RTR,因此可以得出结论:
G
=
R
T
G=R^T
G=RT是
A
T
A
A^TA
ATA的下三角Cholesky因子。由于这个原因,在关于估计的文献中,矩阵
R
R
R常称为平方根滤波器(算子)。
下面的引理称为矩阵分解引理,它在矩阵的
Q
R
QR
QR分解的应用中是一个有用的结果。
引理
若
A
A
A和
B
B
B是任意两个
m
×
n
m\times n
m×n矩阵,则
A
H
A
=
B
H
B
A^HA=B^HB
AHA=BHB
当且仅当存在一个
m
×
m
m\times m
m×m酉矩阵
Q
Q
Q,使得
Q
A
=
B
QA=B
QA=B
矩阵
A
A
A的QR分解可以利用Gram-Schmidt正交化方法实现。
Gram-Schmidt正交化方法原本是一种由
n
n
n个向量
a
1
,
a
2
,
…
,
a
n
a_1,a_2,…,a_n
a1,a2,…,an构造互相正交且范数为1的向量
q
1
,
q
2
,
…
,
q
n
q_1,q_2,…,q_n
q1,q2,…,qn的方法。将向量
a
1
a_1
a1标准正交化的结果取作
q
1
q_1
q1,即
R
11
=
∣
∣
a
1
∣
∣
R_{11}=||a_1||
R11=∣∣a1∣∣
q
1
=
q
1
/
R
11
)
q_1=q_1/R_{11})
q1=q1/R11)
然后,从
a
2
a_2
a2中除去与
a
1
a_1
a1平行的分量,再进行标准正交化,并将结果取作
q
2
q_2
q2,则有
R
12
=
q
1
H
a
2
R_{12}=q_1^Ha_2
R12=q1Ha2
R
22
=
∣
∣
a
2
−
q
1
R
12
∣
∣
R_{22}=||a_2-q_1R_{12}||
R22=∣∣a2−q1R12∣∣
q
2
=
(
a
2
−
q
1
R
12
)
/
R
22
q_2=(a_2-q_1R_{12})/R_{22}
q2=(a2−q1R12)/R22
进而,又从
a
3
a_3
a3除去与
a
1
a_1
a1和
a
2
a_2
a2平行的两个分量,再进行标准正交化,并使用该结果作
q
3
q_3
q3,即有
R
13
=
q
1
H
a
3
R_{13}=q_1^Ha_3
R13=q1Ha3
R
23
=
q
2
H
a
3
R_{23}=q_2^Ha_3
R23=q2Ha3
R
33
=
∣
∣
a
+
3
−
q
1
R
13
−
q
2
R
23
∣
∣
R_{33}=||a+3-q_1R_{13}-q_2R_{23}||
R33=∣∣a+3−q1R13−q2R23∣∣
q
3
=
(
a
3
−
q
1
R
13
−
q
2
R
23
)
/
R
33
q_3=(a_3-q_1R_{13}-q_2R_{23})/R_{33}
q3=(a3−q1R13−q2R23)/R33
如此继续,则对于
q
k
(
2
≤
k
≤
n
)
q_k(2≤k≤n)
qk(2≤k≤n)有
R
j
k
=
q
j
H
a
k
,
1
≤
j
≤
k
−
1
R_{jk}=q_j^Ha_k, 1≤j≤k-1
Rjk=qjHak,1≤j≤k−1
R
k
k
=
∣
∣
a
k
−
∑
j
=
1
k
−
1
q
j
R
j
k
∣
∣
R_{kk}=||a_k-\sum_{j=1}^{k-1}q_jR_{jk}||
Rkk=∣∣ak−j=1∑k−1qjRjk∣∣
q
k
=
(
a
k
−
∑
j
=
1
k
−
1
q
j
R
j
k
)
/
R
k
k
q_k= (a_k-\sum_{j=1}^{k-1}q_jR_{jk})/R_{kk}
qk=(ak−j=1∑k−1qjRjk)/Rkk
容易验证,
q
i
q_i
qi是标准正交基,即满足
q
i
H
q
j
=
δ
i
j
q_i^Hq_j=\delta_{ij}
qiHqj=δij
其中,
δ
i
j
\delta_{ij}
δij为Kronecker
δ
\delta
δ函数。如果令
m
×
n
m\times n
m×n矩阵
A
A
A的列向量为
a
1
,
a
2
,
…
,
a
n
a_1,a_2,…,a_n
a1,a2,…,an,则以
q
1
,
q
2
,
…
,
q
n
q_1,q_2,…,q_n
q1,q2,…,qn为列向量的矩阵
Q
Q
Q与
A
A
A之间有下列关系:
A
=
Q
R
A=QR
A=QR
又由于
q
i
q_i
qi组成标准正交基,所以
Q
H
Q
=
I
n
Q^HQ = I_n
QHQ=In
将
A
A
A和
Q
Q
Q重写在同一矩阵,应用以上Gram-Schmidt正交化的方法叫做经典Gram Schmidt正交化法,其过程可以用图4.7.1说明。
Björck发现,对经典Gram-Schmidt正交化法加以修正,使上三角矩阵R的元素不是按列,而是按行计算时,舍入误差将变小。
这样一种修正方法叫做修正Gram-Schmidt正交化算法。具体说来,
a
1
a_1
a1的标准正交化结果取作
q
1
q_1
q1(这与经典Gram-Schmidt正交化法相同),但同时需要从
a
2
,
a
3
,
…
,
a
n
a_2,a_3,…,a_n
a2,a3,…,an预先减去与
a
1
a_1
a1平行的分量,即
R
11
=
∣
∣
a
1
∣
∣
,
q
1
=
a
1
/
R
11
R_{11}=||a_1||,q_1=a_1/R_{11}
R11=∣∣a1∣∣,q1=a1/R11
R
1
j
=
q
1
H
a
j
,
a
j
(
1
)
=
a
j
−
q
1
R
1
j
,
2
≤
j
≤
n
R_{1j}=q_1^Ha_j,a_j^{(1)}=a_j-q_1R_{1j}, 2≤j≤n
R1j=q1Haj,aj(1)=aj−q1R1j,2≤j≤n
经过以上运算后,向量
a
2
(
1
)
,
a
3
(
1
)
,
…
,
a
n
(
1
)
)
a_2^{(1)},a_3^{(1)},…,a_n^{(1)})
a2(1),a3(1),…,an(1))与
q
1
q_1
q1正交。
然后,将
a
2
(
1
)
a_2^{(1)}
a2(1)标准正交化,并从
a
3
(
1
)
,
a
4
(
1
)
,
.
.
.
,
a
n
(
1
)
a_3^{(1)},a_4^{(1)},...,a_n^{(1)}
a3(1),a4(1),...,an(1)减去与
a
2
(
1
)
a_2^{(1)}
a2(1)平行的分量,得
R
22
=
∣
∣
a
2
(
1
)
∣
∣
,
q
2
=
a
2
/
R
22
R_{22}=||a_2^{(1)}||,q_2=a_2/R_{22}
R22=∣∣a2(1)∣∣,q2=a2/R22
R
2
j
=
q
2
H
a
j
(
1
)
,
a
j
(
2
)
=
a
j
(
1
)
−
q
2
R
2
j
,
3
≤
j
≤
n
R_{2j}=q_2^Ha_j^{(1)},a_j^{(2)}=a_j^{(1)}-q_2R_{2j}, 3≤j≤n
R2j=q2Haj(1),aj(2)=aj(1)−q2R2j,3≤j≤n
这样构造的向量
a
3
(
2
)
,
a
4
(
2
)
,
…
,
a
n
(
2
)
)
a_3^{(2)},a_4^{(2)},…,a_n^{(2)})
a3(2),a4(2),…,an(2))与
q
1
,
q
2
q_1,q_2
q1,q2均正交。重复这一过程,就可以将
A
A
A和
Q
Q
Q重写在同一矩阵。图47.2示出了修正Gram-Schmidt正交化算法的运算过程。
为了分析误差的情况,假定
q
2
q_2
q2包含有少量与
q
1
q_1
q1平行的分量,即
q
2
+
ϵ
q
1
q_2+\epsilon q_1
q2+ϵq1。应用经典Gram-Schmidt法,求
q
2
q_2
q2和
a
3
a_3
a3的内积
R
23
R_{23}
R23时,具体计算如下:
(
q
2
H
+
ϵ
q
1
H
)
a
3
=
q
2
H
a
3
+
ϵ
q
1
H
a
3
(1)
(q_2^H+\epsilon q_1^H)a_3=q_2^Ha_3+\epsilon q_1^Ha_3 \tag{1}
(q2H+ϵq1H)a3=q2Ha3+ϵq1Ha3(1)
而在修正Gram-Schmidt法中,求
R
23
R_{23}
R23时计算的是
q
2
q_2
q2和
a
2
(
1
)
=
a
3
−
R
13
q
1
a_2^{(1)}=a_3-R_{13}q_1
a2(1)=a3−R13q1的内积,即
(
q
2
H
+
ϵ
q
1
H
)
(
a
3
−
R
13
q
1
)
=
q
2
H
a
3
+
ϵ
q
1
H
a
3
−
ϵ
R
13
=
q
2
H
a
3
(2)
(q_2^H+\epsilon q_1^H)(a_3-R_{13}q_1)=q_2^Ha_3+\epsilon q_1^Ha_3-\epsilon R_{13}=q_2^Ha_3 \tag{2}
(q2H+ϵq1H)(a3−R13q1)=q2Ha3+ϵq1Ha3−ϵR13=q2Ha3(2)
比较式(1)与式(2),可以看出,经典方法比修正方法多第二项误差。尤其是当
∣
∣
R
23
∣
∣
≪
∣
R
13
∣
||R_{23}||\ll |R_{13}|
∣∣R23∣∣≪∣R13∣时,修正Gram-Schmidt法减小误差的效果将更明显。