〇、Gauss消去法
对于
n元线性方程组
Ax=b(0)
其中,
A=(aij)n×n,
x=(ξ1,ξ2,⋯,ξn)T,
b=(b1,b2,⋯,bn)T。Gauss消去法的基本思想是化系数矩阵
A为上三角矩阵,或化增广矩阵
[Ab]为上阶梯形矩阵以求其解,这个过程就叫Gauss消元。
Gauss消元过程能够进行到底的条件是当且仅当
A的各阶顺序主子式都不为零,即:
Δr̸=0(r=1,2,⋯,n−1)
一、矩阵的三角分解
三角分解⎩⎪⎨⎪⎧A=LDUA=L(DU)=LU^A=(LD)U=L^ULDU分解Doolittle分解Crout分解
三角分解又称作LU分解或LR分解。在上式中,
L是单位下三角矩阵,
D是对角矩阵,
U是单位上三角矩阵。
分解过程:
A=A(0)=L1A(1)=L1L2A(2)=⋯=L1L2⋯Ln−1A(n−1)=LA(n−1)(1)
L1=⎣⎢⎢⎢⎡1c21⋮cn11⋱1⎦⎥⎥⎥⎤,
L2=⎣⎢⎢⎢⎢⎢⎡11c32⋮cn21⋱1⎦⎥⎥⎥⎥⎥⎤,
⋯,
Lr=⎣⎢⎢⎢⎢⎢⎢⎢⎡1⋱1cr+1,r⋮cnr1⋱1⎦⎥⎥⎥⎥⎥⎥⎥⎤,
Ln−1=⎣⎢⎢⎢⎢⎡11⋱1cn,n−11⎦⎥⎥⎥⎥⎤为Frobenius矩阵,其中空白处全为
0,
cir=arr(r−1)air(r−1),(r=1,2,⋯,n−1),(i=r+1,r+2,⋯,n),
Lr−1=⎣⎢⎢⎢⎢⎢⎢⎢⎡1⋱1−cr+1,r⋮−cnr1⋱1⎦⎥⎥⎥⎥⎥⎥⎥⎤。
L=L1L2⋯L(n−1)=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡1c21⋮cn−1,1cn11⋮cn−1,2cn2⋱⋯⋯1cn,n−11⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤是一个单位下三角矩阵,
A(n−1)=Ln−1−1⋯L2−1L1−1A(0)=L−1A是一个上三角矩阵,可以分解成一个对角矩阵(
D)和一个单位上三角矩阵(
U)。
二、矩阵的Cholesky分解
当
A为实对称正定矩阵时,有
A=LDU=AT=(LDU)T=UTDLT,D=diag(d1,d2,⋯,dn)
即有:
L=UT,
U=LT,令
D~=diag(d1
,d2
,⋯,dn
),则有:
A=LDLT=LD~2LT=(LD~)(D~LT)=(LD~)(LD~)T=GGT(2)
其中,
G=LD~为下三角矩阵。上式即为矩阵的Cholesky分解,又称平方根分解或对称三角分解。
Cholesky分解过程中,可以根据以下递推公式计算
G矩阵中每个元素的值:
gij=⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧(aii−k=1∑i−1gik2)1/2gjj1(aij−k=1∑j−1gikgjk)0(i=j)(i>j)(i<j)
当然也可以先对矩阵
A做LDU分解,然后取
G=LD~。
三、矩阵的QR分解
3.1、Givens矩阵与Givens变换
设非零列向量
x∈Rn及单位列向量
z∈Rn,存在有限个Givens矩阵的乘积,记作
T,使得
Tx=∣x∣z(3)
上式即为Givens变换,也称初等旋转变换,其中Givens矩阵,也称初等旋转矩阵,记作
Tij=Tij(c,s)=⎣⎢⎢⎢⎢⎢⎢⎢⎡Ic−sIscI⎦⎥⎥⎥⎥⎥⎥⎥⎤,
T=T1nT1,n−1⋯T13T12。
对于非零列向量
x=(ξ1,ξ2,⋯,ξn)T,及单位列向量
z=e1=(1,0,⋯,0)T,其Givens变换过程如下:
-
首先对
x构造Givens矩阵
T12(c,s)=⎣⎡c−sscI⎦⎤,其中
c=ξ12+ξ22
ξ1,s=ξ12+ξ22
ξ2,有
T12x=(ξ12+ξ22
,0,ξ3,⋯,ξn)T
-
再对
T12x构造Givens矩阵
T13(c,s)=⎣⎢⎢⎡c−s1scI⎦⎥⎥⎤,其中
c=ξ12+ξ22+ξ32
ξ12+ξ22
,s=ξ12+ξ22+ξ32
ξ3,有
T13(T12x)=(ξ12+ξ22+ξ32
,0,0,ξ4,⋯,ξn)T
-
如此下去,最后对
T1,n−1T1,n−2⋯T13T12x构造Givens矩阵
T1n(c,s)=⎣⎡c−sIsc⎦⎤,其中
c=ξ12+ξ22+⋯+ξn−12+ξn2
ξ12+⋯+ξn−12
,s=ξ12+ξ22+⋯+ξn−12+ξn2
ξn,有
T1n(T1,n−1⋯T12x)=(ξ12+ξ22+⋯+ξn−12+ξn2
,0,⋯,0)T
令
T=T1nT1,n−1⋯T12,有
Tx=∣x∣z=∣x∣e1,即通过有限个Givens矩阵
T将
x变换为与
z同方向的向量。
3.2、Householder矩阵与Householder变换
任意给定非零列向量
x∈Rn(n>1)及单位列向量
z∈Rn,则存在矩阵
H,使得
H=∣x∣z(4)
上式即为Householder变换,也称初等反射变换,其中
H=I−2uuT,为Householder矩阵,也称初等反射矩阵。
对于非零列向量
x=(ξ1,ξ2,⋯,ξn−1,ξn)T及单位列向量
z=e1=(1,0,⋯,0)T,其Householder变换过程如下:
取
u=∣x−∣x∣z∣x−∣x∣z=∣x−∣x∣e1∣x−∣x∣e1,其中
∣x∣=ξ12+ξ22+⋯+ξn−12+ξn2
,则
H=I−2uuT,
Hx=∣x∣z=∣x∣e1,即通过Householder矩阵
H将
x变换为与
z同方向的向量。
|
Givens矩阵
Tij具有如下性质 |
Householder矩阵
H具有如下性质 |
(1) |
Tij=−TijT=−Tij−1 |
H=HT=H−1 |
(2) |
Tij2=−TijTTij=−Tij−1Tij=−I |
H2=HTH=H−1H=I |
(3) |
detTij=1 |
detH=−1 |
初等旋转矩阵是两个初等反射矩阵的乘积,即有Tij=HvHu(5)
3.3、QR分解
设
A是
m×n实(复)矩阵,且其
n个列线性无关,则
A有分解
A=QR(6)
其中
Q是
m×n实(复)矩阵,且满足
QTQ=I(
QHQ=I),
R是
n阶实(复)可逆上三角矩阵。上式即为矩阵的QR分解,也称正交三角分解,该分解除去相差一个对角元素的绝对值(模)全等于1的对角矩阵因子外是唯一的。
对于任意的
n阶实可逆矩阵
A=(aij)n×n,均可通过左连乘Givens矩阵(初等旋转矩阵)或左连乘Householder矩阵(初等反射矩阵),将其化为可逆上三角矩阵。
完成矩阵的QR分解有三种常用的方法:Schmidt正交化方法,Givens变换方法和Householder变换方法。下面通过一个具体实例,将矩阵
A=⎣⎡121212221⎦⎤分别用上述三种方法进行QR分解。
Schmidt正交化方法:
令
a1=(1,2,1)T,a2=(2,1,2)T,a3=(2,2,1)T,将其Schmidt正交化可得:
b1=a1=(1,2,1)Tb2=a2−(b1,b1)(a2,b1)b1=a2−b1=(1,−1,1)Tb3=a3−(b1,b1)(a3,b1)b1−(b2,b2)(a3,b2)b2=a3−31b2−67b1=(21,0,−21)T
进而有:
(a1,a2,a3)=(b1,b2,b3)⋅C=(b1,b2,b3)⎣⎢⎢⎢⎢⎢⎡10011067311⎦⎥⎥⎥⎥⎥⎤
取:
q1=∣b1∣1∣b1∣=6
1(1,2,1)Tq2=∣b2∣1∣b2∣=3
1(1,−1,1)Tq3=∣b3∣1∣b3∣=2
1(1,0,−1)T
令:
Q=(q1,q2,q3)=⎣⎢⎢⎢⎢⎢⎢⎡6
16
26
13
1−3
13
12
10−2
1⎦⎥⎥⎥⎥⎥⎥⎤R=diag(∣b1∣,∣b2∣,∣b3∣)⋅C=⎣⎡6
0003
0002
⎦⎤⎣⎢⎢⎢⎢⎢⎡10011067311⎦⎥⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎢⎢⎡6
006
3
06
73
12
1⎦⎥⎥⎥⎥⎥⎥⎥⎤
则有
A=QR。
Givens变换方法:
第1步,对
A(0)=A=⎣⎡121212221⎦⎤的第1列
b(1)=⎣⎡121⎦⎤构造旋转矩阵
T1,使
T1b(1)=∣b(1)∣e1:
T1=T13T12=⎣⎢⎢⎢⎢⎡6
5
0−6
10106
106
5
⎦⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎡5
1−5
205
25
10001⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎢⎡6
1−5
2−30
16
25
1−30
26
106
5
⎦⎥⎥⎥⎥⎥⎥⎤
T1b(1)=⎣⎢⎢⎢⎢⎢⎢⎡6
1−5
2−30
16
25
1−30
26
106
5
⎦⎥⎥⎥⎥⎥⎥⎤⎣⎡121⎦⎤=⎣⎡6
00⎦⎤
T1A(0)=⎣⎢⎢⎢⎢⎢⎢⎡6
1−5
2−30
16
25
1−30
26
106
5
⎦⎥⎥⎥⎥⎥⎥⎤⎣⎡121212221⎦⎤=⎣⎢⎢⎢⎢⎢⎢⎡6
006
−5
330
66
7−5
2−30
1⎦⎥⎥⎥⎥⎥⎥⎤
第2步,对
A(1)=⎣⎢⎢⎡−5
330
6−5
2−30
1⎦⎥⎥⎤的第1列
b(2)=⎣⎢⎢⎡−5
330
6⎦⎥⎥⎤构造旋转矩阵
T2,使
T2b(2)=∣b(2)∣e1:
T2=T12=⎣⎢⎢⎡−5
3
−10
210
2−5
3
⎦⎥⎥⎤
T2b(2)=⎣⎢⎢⎡−5
3
−10
210
2−5
3
⎦⎥⎥⎤⎣⎢⎢⎡−5
330
6⎦⎥⎥⎤=[3
0]
T2A(1)=⎣⎢⎢⎡−5
3
−10
210
2−5
3
⎦⎥⎥⎤⎣⎢⎢⎡−5
330
6−5
2−30
1⎦⎥⎥⎤=⎣⎢⎢⎡3
03
12
1⎦⎥⎥⎤
最后,令
T=[1OOTT2]T1=⎣⎢⎢⎢⎢⎡1000−5
3
−10
2010
2−5
3
⎦⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎢⎢⎡6
1−5
2−30
16
25
1−30
26
106
5
⎦⎥⎥⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎢⎡6
13
12
16
2−3
106
13
1−2
1⎦⎥⎥⎥⎥⎥⎥⎤
Q=TT==⎣⎢⎢⎢⎢⎢⎢⎡6
16
26
13
1−3
13
12
10−2
1⎦⎥⎥⎥⎥⎥⎥⎤,R=TA=⎣⎢⎢⎢⎢⎢⎢⎡6
006
3
06
73
12
1⎦⎥⎥⎥⎥⎥⎥⎤
则有
A=QR。
Householder变换方法:
第1步,对
A(0)=A=⎣⎡121212221⎦⎤的第1列
b(1)=⎣⎡121⎦⎤构造Householder矩阵
H1,使
H1b(1)=∣b(1)∣e1:
b(1)−∣b(1)∣e1=⎣⎡121⎦⎤−6
⎣⎡100⎦⎤=⎣⎡1−6
21⎦⎤
u=∣b(1)−∣b(1)∣e1∣b(1)−∣b(1)∣e1=12−26
1⎣⎡1−6
21⎦⎤
H1=I−2uuT=⎣⎡100010001⎦⎤−6−6
1⎣⎡1−6
21⎦⎤[1−6
21]=⎣⎢⎢⎢⎢⎢⎢⎡6
16
26
16
26
−66
−26
−626
16
−626
−66
−5⎦⎥⎥⎥⎥⎥⎥⎤
H1A(0)=⎣⎢⎢⎢⎢⎢⎢⎡6
16
26
16
26
−66
−26
−626
16
−626
−66
−5⎦⎥⎥⎥⎥⎥⎥⎤⎣⎡121212221⎦⎤=⎣⎢⎢⎢⎢⎢⎢⎡6
006
6
−13−6
6
−16
6
76
26
1⎦⎥⎥⎥⎥⎥⎥⎤
第2步,对
A(1)=⎣⎢⎢⎡6
−13−6
6
−16
6
26
1⎦⎥⎥⎤的第1列
b(2)=⎣⎢⎢⎡6
−13−6
6
−16
⎦⎥⎥⎤构造Householder矩阵
H2,使
H2b(2)=∣b(2)∣e1:
b(2)−∣b(2)∣e1=⎣⎢⎢⎡6
−13−6
6
−16
⎦⎥⎥⎤−6
−121−66
[10]=⎣⎢⎢⎢⎡6
−13−6
−21−66
6
−16
⎦⎥⎥⎥⎤=⎣⎢⎢⎡6
−1x6
−16
⎦⎥⎥⎤
u=∣b(2)−∣b(2)∣e1∣b(2)−∣b(2)∣e1=x2+6
6
−1⎣⎢⎢⎡6
−1x6
−16
⎦⎥⎥⎤=⎣⎢⎢⎡x2+6
xx2+6
6
⎦⎥⎥⎤
H2=I−2uuT=[1001]−2⎣⎢⎢⎡x2+6
xx2+6
6
⎦⎥⎥⎤[x2+6
xx2+6
6
]=⎣⎢⎢⎡x2+66−x2x2+6−26
xx2+6−26
xx2+6x2−6⎦⎥⎥⎤
H2A(1)=⎣⎢⎢⎡x2+66−x2x2+6−26
xx2+6−26
xx2+6x2−6⎦⎥⎥⎤⎣⎢⎢⎡6
−13−6
6
−16
6
26
1⎦⎥⎥⎤=⎣⎢⎢⎡3
03
12
1⎦⎥⎥⎤
最后,令
S=[1OOTH2]H1=⎣⎢⎢⎢⎢⎢⎢⎡1000x2+66−x2x2+6−26
x0x2+6−26
xx2+6x2−6⎦⎥⎥⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎢⎢⎡6
16
26
16
26
−66
−26
−626
16
−626
−66
−5⎦⎥⎥⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎢⎡6
13
12
16
2−3
106
13
1−2
1⎦⎥⎥⎥⎥⎥⎥⎤
Q=ST==⎣⎢⎢⎢⎢⎢⎢⎡6
16
26
13
1−3
13
12
10−2
1⎦⎥⎥⎥⎥⎥⎥⎤,R=SA=⎣⎢⎢⎢⎢⎢⎢⎡6
006
3
06
73
12
1⎦⎥⎥⎥⎥⎥⎥⎤
则有
A=QR。(感兴趣的读者可用MATLAB验证结果,没想到一个小小的矩阵计算这么复杂(╯﹏╰))
四、矩阵的满秩分解
设
A∈Crm×n(r>0),存在矩阵
F∈Crm×r和
G∈Crr×n,使得
A=FG(7)
其中
r为矩阵的秩,
F是列满秩矩阵,
G是行满秩矩阵,上式即为矩阵的满秩分解。当
A是满秩(列满秩或行满秩)矩阵时,
A可分解为一个因子是单位矩阵,另一个因子是
A本身,称此满秩分解为平凡分解。
五、矩阵的奇异值分解
设
A∈Crm×n(r>0),则存在
m阶酉矩阵
U和
n阶酉矩阵
V,使得
A=UDVH=U[ΣOOO]VH(8)
其中,
VH代表酉矩阵
V的共轭转置,
Σ=diag(σ1,σ2,⋯,σr),
σi(i=1,2,⋯,r)为矩阵
A的全部非零奇异值。上式即为矩阵的奇异值分解(Singular Value Decomposition,简称SVD分解),当
A为实对称矩阵时,也称正交对角分解。
矩阵的奇异值分解在最优化问题、特征值问题、最小二乘问题、广义逆矩阵问题及统计学等方面都有重要应用。下面通过一个具体实例,将矩阵
A=⎣⎡101011⎦⎤进行SVD分解。
-
首先计算
ATA=[100111]⎣⎡101011⎦⎤=[2112]
-
对矩阵
ATA,由
∣λI−ATA∣=∣∣∣∣λ−2−1−1λ−2∣∣∣∣=(λ−1)(λ−3)=0,得特征值
λ1=1,λ2=3,对应的特征向量分别为:
ξ1=k1[1−1],ξ1=k2[11]
Σ=diag(λ1
,λ2
)=[1003
]D=[ΣOOO]=⎣⎡10003
0⎦⎤V=[∥ξ1∥ξ1∥ξ2∥ξ2]=⎣⎢⎢⎡2
1−2
12
12
1⎦⎥⎥⎤,这里V可以有四种解
U1=AVΣ−1=⎣⎡101011⎦⎤⎣⎢⎢⎡2
1−2
12
12
1⎦⎥⎥⎤⎣⎡1003
1⎦⎤=⎣⎢⎢⎢⎢⎢⎢⎡2
1−2
106
16
16
2⎦⎥⎥⎥⎥⎥⎥⎤
- 构造一个列向量
U2=[α1,α2,α3]T,使得
U=[U1U2]=⎣⎢⎢⎢⎢⎢⎢⎡2
1−2
106
16
16
2α1α2α3⎦⎥⎥⎥⎥⎥⎥⎤为酉矩阵,即有:
⎣⎢⎢⎡2
16
1−2
16
106
2⎦⎥⎥⎤⎣⎡α1α2α3⎦⎤=0,且α12+α22+α32
=1
得
U2=±[3
13
1−3
1]
取
U=⎣⎢⎢⎢⎢⎢⎢⎡2
1−2
106
16
16
23
13
1−3
1⎦⎥⎥⎥⎥⎥⎥⎤,这里U可以有两种解
A=UDVT=⎣⎢⎢⎢⎢⎢⎢⎡2
1−2
106
16
16
23
13
1−3
1⎦⎥⎥⎥⎥⎥⎥⎤⎣⎡10003
0⎦⎤⎣⎢⎢⎡2
1−2
12
12
1⎦⎥⎥⎤T=⎣⎡101011⎦⎤
当调整奇异值的顺序,使
Σ=[3
001]时,可得
D=⎣⎡3
00010⎦⎤V=⎣⎢⎢⎡2
12
12
1−2
1⎦⎥⎥⎤,这里V可以有四种解U=⎣⎢⎢⎢⎢⎢⎢⎡6
16
16
22
1−2
103
13
1−3
1⎦⎥⎥⎥⎥⎥⎥⎤,这里U可以有两种解
A=UDVT=⎣⎢⎢⎢⎢⎢⎢⎡6
16
16
22
1−2
103
13
1−3
1⎦⎥⎥⎥⎥⎥⎥⎤⎣⎡3
00010⎦⎤⎣⎢⎢⎡2
12
12
1−2
1⎦⎥⎥⎤T=⎣⎡101011⎦⎤
可以看到,矩阵的奇异值分解通常不是唯一的。