第一章 矩阵与线性方程组(二十三)
1. Moore-Penrose逆矩阵的计算
假定 m × n m\times n m×n矩阵 A A A的秩为 r r r,其中, r ≤ m i n ( m , n ) r≤min(m,n) r≤min(m,n)。下面介绍求 M o o r e − P e n r o s e Moore-Penrose Moore−Penrose逆矩阵 A + A^+ A+的四种方法。
1.1 方程求解法
Penrose在定义广义逆矩阵
A
+
A^+
A+时,提出了计算
A
+
A^+
A+的两步法如下:
第一步:分别求解矩阵方程
A
A
H
X
H
=
A
AA^HX^H=A
AAHXH=A
A
H
A
Y
=
A
H
A^HAY=A^H
AHAY=AH
得到
X
H
X^H
XH和
Y
Y
Y。
第二步:计算广义逆矩阵
A
+
=
X
A
Y
A^+=XAY
A+=XAY。
若矩阵
A
A
A为
H
e
r
m
i
t
i
a
n
Hermitian
Hermitian矩阵,则Penrose的上述方法可以简化,因为以上两个矩阵方程等价为一个矩阵方程
A
2
X
H
=
A
,
若
A
H
=
A
A^2X^H=A, 若A^H =A
A2XH=A,若AH=A
并且Moore-Penrose逆矩阵可以计算为
A
+
=
X
A
X
H
,
若
A
H
=
A
A^+=XAX^H, 若A^H=A
A+=XAXH,若AH=A
虽然
A
A
A一般不会是Hermitian矩阵,但是
A
H
A
A^HA
AHA和
A
A
H
AA^H
AAH分别是Hermitian矩阵。
总结以上讨论,可以得到计算Moore-Penrose逆矩阵的两种算法如下
算法1
步骤1 计算矩阵
B
=
A
A
H
B=AA^H
B=AAH。
步骤2 求解矩阵方程
B
2
X
H
=
B
B^2X^H=B
B2XH=B得到矩阵
X
H
X^H
XH。
步骤3 计算
B
B
B的Moore-Penrose逆矩阵
B
+
=
(
A
A
H
)
+
=
X
B
X
H
B^+=(AA^H)^+=XBX^H
B+=(AAH)+=XBXH
步骤4 计算矩阵
A
A
A的Moore-Penrose逆矩阵
A
+
=
A
H
(
A
A
H
)
+
=
A
H
B
+
A^+=A^H(AA^H)^+=A^HB^+
A+=AH(AAH)+=AHB+
算法2
步骤1 计算矩阵
B
=
A
H
A
B=A^HA
B=AHA。
步骤2 求解矩阵方程
B
2
x
H
=
B
B^2x^H=B
B2xH=B得到矩阵
X
H
X^H
XH。
步骤3 计算
B
B
B的Moore-Penrose逆矩阵
B
+
=
(
A
H
A
)
+
=
X
B
X
H
B^+=(A^HA)^+=XBX^H
B+=(AHA)+=XBXH。
步骤4 计算矩阵
A
A
A的Moor-Penrose逆矩阵
A
+
=
(
A
H
A
)
+
A
H
=
B
+
A
H
A^+=(A^HA)^+A^H=B^+A^H
A+=(AHA)+AH=B+AH
若矩阵 A m × n A_{m\times n} Am×n的列数大于行数,则矩阵乘积 A A H AA^H AAH的维数比 A H A A^HA AHA的维数小,故选择算法1可花费较少的计算量。反之,若 A A A的行数大于列数,则选择算法2。
举例
令矩阵
A
=
[
1
0
−
1
2
−
1
1
0
1
1
−
1
0
1
1
1
0
1
−
1
0
]
A= \begin{bmatrix} 1 & 0 & -1 &2& -1 & 1\\ 0 & 1 & 1 &-1& 0 & 1\\ 1 & 1 & 0 & 1& -1 & 0 \end{bmatrix}
A=⎣
⎡101011−1102−11−10−1110⎦
⎤
由于其列数大于行数,故选择算法1。
(1)计算
3
×
3
3\times 3
3×3矩阵
A
A
H
AA^H
AAH,得
A
A
H
=
[
8
−
2
3
−
2
4
0
4
0
4
]
,
(
A
A
H
)
2
=
[
84
−
24
48
−
24
20
−
8
48
−
8
32
]
AA^H= \begin{bmatrix} 8 & -2 & 3 \\ -2 & 4 & 0 \\ 4 & 0 & 4 \end{bmatrix},(AA^H)^2= \begin{bmatrix} 84 & -24 & 48 \\ -24 & 20 & -8 \\ 48 & -8 & 32 \end{bmatrix}
AAH=⎣
⎡8−24−240304⎦
⎤,(AAH)2=⎣
⎡84−2448−2420−848−832⎦
⎤
(2)求解
(
A
A
H
)
2
X
H
=
A
A
H
(AA^H)^2X^H=AA^H
(AAH)2XH=AAH,等价求解以下三个方程:
[
84
−
24
48
−
24
20
−
8
48
−
8
32
]
[
x
1
x
2
x
3
]
=
[
8
−
2
4
]
⇒
[
x
1
x
2
x
3
]
=
1
6
[
2
1
−
1
]
\begin{bmatrix} 84 & -24 & 48 \\ -24 & 20 & -8 \\ 48 & -8 & 32 \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \\ x_3 \end{bmatrix}= \begin{bmatrix} 8 \\ -2\\ 4 \end{bmatrix} \Rightarrow \begin{bmatrix} x_1 \\ x_2 \\ x_3 \end{bmatrix}=\frac{1}{6}\begin{bmatrix} 2 \\ 1 \\ -1 \end{bmatrix}
⎣
⎡84−2448−2420−848−832⎦
⎤⎣
⎡x1x2x3⎦
⎤=⎣
⎡8−24⎦
⎤⇒⎣
⎡x1x2x3⎦
⎤=61⎣
⎡21−1⎦
⎤
[
84
−
24
48
−
24
20
−
8
48
−
8
32
]
[
x
1
x
2
x
3
]
=
[
−
2
4
0
]
⇒
[
x
1
x
2
x
3
]
=
1
6
[
1
2
−
1
]
\begin{bmatrix} 84 & -24 & 48 \\ -24 & 20 & -8 \\ 48 & -8 & 32 \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \\ x_3 \end{bmatrix}= \begin{bmatrix} -2 \\ 4\\ 0 \end{bmatrix} \Rightarrow \begin{bmatrix} x_1 \\ x_2 \\ x_3 \end{bmatrix}=\frac{1}{6}\begin{bmatrix} 1 \\ 2 \\ -1 \end{bmatrix}
⎣
⎡84−2448−2420−848−832⎦
⎤⎣
⎡x1x2x3⎦
⎤=⎣
⎡−240⎦
⎤⇒⎣
⎡x1x2x3⎦
⎤=61⎣
⎡12−1⎦
⎤
[
84
−
24
48
−
24
20
−
8
48
−
8
32
]
[
x
1
x
2
x
3
]
=
[
4
0
4
]
⇒
[
x
1
x
2
x
3
]
=
1
12
[
−
4
−
2
7
]
\begin{bmatrix} 84 & -24 & 48 \\ -24 & 20 & -8 \\ 48 & -8 & 32 \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \\ x_3 \end{bmatrix}= \begin{bmatrix} 4 \\ 0\\ 4 \end{bmatrix} \Rightarrow \begin{bmatrix} x_1 \\ x_2 \\ x_3 \end{bmatrix}=\frac{1}{12}\begin{bmatrix} -4 \\ -2 \\ 7 \end{bmatrix}
⎣
⎡84−2448−2420−848−832⎦
⎤⎣
⎡x1x2x3⎦
⎤=⎣
⎡404⎦
⎤⇒⎣
⎡x1x2x3⎦
⎤=121⎣
⎡−4−27⎦
⎤
故
X
H
=
1
12
[
4
2
−
4
2
4
−
2
−
4
−
2
7
]
X^H= \frac{1}{12}\begin{bmatrix} 4 & 2 & -4 \\ 2 & 4 & -2 \\ -4 & -2 & 7 \end{bmatrix}
XH=121⎣
⎡42−424−2−4−27⎦
⎤
(3)计算
(
A
A
H
)
+
=
X
(
A
A
H
)
X
H
=
1
12
[
4
2
−
4
2
4
−
2
−
4
−
2
7
]
(AA^H)^+=X(AA^H)X^H= \frac{1}{12}\begin{bmatrix} 4 & 2 & -4 \\ 2 & 4 & -2 \\ -4 & -2 & 7 \end{bmatrix}
(AAH)+=X(AAH)XH=121⎣
⎡42−424−2−4−27⎦
⎤
(4)矩阵A的Moore-Penrose逆矩阵由
A
+
=
A
H
(
A
A
H
)
+
=
1
12
[
1
0
1
0
1
1
−
1
1
0
2
−
1
1
−
1
0
−
1
1
1
0
]
[
4
2
−
4
2
4
−
2
−
4
−
2
7
]
=
1
12
[
0
0
3
−
2
2
5
−
2
2
2
2
−
2
1
0
0
−
3
6
6
−
6
]
A^+=A^H(AA^H)^+=\frac{1}{12}\begin{bmatrix} 1 & 0 & 1 \\ 0 & 1 & 1 \\ -1 & 1 & 0\\ 2 & -1 & 1 \\ -1 & 0 & -1 \\ 1 & 1 & 0 \end{bmatrix} \begin{bmatrix} 4 & 2 & -4 \\ 2 & 4 & -2 \\ -4 & -2 & 7 \end{bmatrix} =\frac{1}{12}\begin{bmatrix} 0 & 0 & 3 \\ -2 & 2 &5 \\ -2 & 2 & 2\\ 2 & -2 & 1 \\ 0 & 0 & -3 \\ 6 & 6 & -6 \end{bmatrix}
A+=AH(AAH)+=121⎣
⎡10−12−11011−1011101−10⎦
⎤⎣
⎡42−424−2−4−27⎦
⎤=121⎣
⎡0−2−2206022−2063521−3−6⎦
⎤
给出。容易验证,
A
+
A^+
A+满足Moore-Penrose逆矩阵的四个条件。
1.2 KL 分解法
若
A
=
K
L
A=KL
A=KL是矩阵
A
m
×
n
A_{m\times n}
Am×n的满秩分解,则
G
=
L
H
(
K
H
A
L
H
)
−
1
K
H
G=L^H(K^HAL^H)^{-1}K^H
G=LH(KHALH)−1KH
G
G
G是
A
m
×
n
A_{m\times n}
Am×n的Moore-Penrose逆矩阵。
1.3 递推法
对矩阵 A m × n A_{m\times n} Am×n的前 k k k列进行分块 A k = [ A k − 1 , a k ] A_k=[A_{k-1},a_k] Ak=[Ak−1,ak],其中, a k a_k ak是矩阵 A A A的第 k k k列。于是,分块矩阵 A k + A_k^+ Ak+的Moore-Penrose逆矩阵 A A A可以由 A A A递推计算。当递推到 k = n k=n k=n时,即获得矩阵 A A A的Moore-Penrose逆矩阵 A + A^+ A+。
算法3 (求Moore-Penrose逆矩阵的列递推算法)
初始值
A
1
+
=
a
1
+
=
(
a
1
H
a
1
)
−
1
a
1
H
A_1^+=a_1^+=(a_1^Ha_1)^{-1}a_1^H
A1+=a1+=(a1Ha1)−1a1H。
递推
令
k
=
2
,
3
,
.
.
.
,
n
k=2,3,...,n
k=2,3,...,n,进行以下计算:
上述列递推算法原则上适用于所有矩阵,但是当矩阵
A
A
A的行比列少的时候,为了减少递推次数,宜先使用列递推算法求出
A
H
A^H
AH的Moore-Penrose逆矩阵
(
A
H
)
+
=
A
H
+
(A^H)^+=A^{H+}
(AH)+=AH+,再利用KaTeX parse error: Double superscript at position 9: A^+=(A^H^̲+)^H之关系得到
A
+
A^+
A+。
举例
A
=
[
1
0
−
1
−
1
1
−
1
0
−
1
2
1
1
1
]
A= \begin{bmatrix} 1 & 0 & -1 \\ -1 & 1 & -1 \\ 0 & -1 & 2\\ 1 & 1 & 1 \end{bmatrix}
A=⎣
⎡1−10101−11−1−121⎦
⎤
的Moore-Penrose逆矩阵。
解
(1)令
A
2
=
[
A
1
,
a
2
]
A_2=[A_1,a_2]
A2=[A1,a2],其中
A
1
=
a
1
=
[
1
−
1
0
1
]
,
a
2
=
[
0
1
−
1
1
]
A_1=a_1= \begin{bmatrix} 1\\ -1 \\ 0 \ 1 \end{bmatrix} ,a_2= \begin{bmatrix} 0 \\ 1 \\ -1 \\ 1 \end{bmatrix}
A1=a1=⎣
⎡1−10 1⎦
⎤,a2=⎣
⎡01−11⎦
⎤
则有
A
1
+
=
a
1
+
=
(
a
1
T
a
1
)
−
1
a
1
T
=
1
3
[
1
,
−
1
,
0
,
1
]
A_1^+ =a_1^+ =(a_1^Ta_1)^{-1}a_1^T =\frac{1}{3}[1,-1,0, 1]
A1+=a1+=(a1Ta1)−1a1T=31[1,−1,0,1]
(2)
d
2
=
A
1
+
a
2
=
0.
d_2=A_1^+a_2=0.
d2=A1+a2=0.
(3) b 2 = ( a 2 − A 1 d 2 ) + = a 2 + = 1 3 0 , 1 , − 1 , 1 ] T b_2 = (a_2- A_1d_2)^+ =a_2^+=\frac{1}{3}0,1, -1, 1]^T b2=(a2−A1d2)+=a2+=310,1,−1,1]T。
(4)计算
A
2
+
=
[
A
1
+
−
d
2
b
2
b
2
]
=
1
3
[
1
−
1
0
1
0
1
−
1
1
]
A_2^+= \begin{bmatrix} A_1^+-d_2b_2 \\ b_2 \end{bmatrix} =\frac{1}{3} \begin{bmatrix} 1 & -1 & 0 & 1 \\ 0 & 1 & -1 & 1 \end{bmatrix}
A2+=[A1+−d2b2b2]=31[10−110−111]
(5)
d
3
=
A
2
+
a
3
=
1
3
[
1
−
2
]
d_3=A_2^+a_3=\frac{1}{3} \begin{bmatrix} 1 \\ -2 \end{bmatrix}
d3=A2+a3=31[1−2]
(6)
b
3
=
(
a
3
−
A
2
d
3
)
+
=
1
4
[
−
1
,
0
,
1
,
1
]
T
b_3=(a_3-A_2d_3)^+ =\frac{1}{4}[-1,0,1,1]^T
b3=(a3−A2d3)+=41[−1,0,1,1]T。
(7)最后,得到
A
A
A的Moore-Penrose逆矩阵为
A
+
=
[
A
2
+
−
d
3
b
3
b
3
]
=
1
12
[
5
−
4
−
1
3
−
2
4
−
2
6
−
3
0
3
3
]
A^+= \begin{bmatrix} A_2^+-d_3b_3 \\ b_3 \end{bmatrix} =\frac{1}{12} \begin{bmatrix} 5 & -4 &-1 &3 \\ -2 & 4 & -2 & 6 -3 & 0 & 3 & 3 \end{bmatrix}
A+=[A2+−d3b3b3]=121[5−2−44−1−236−3033]
1.4 迹方法
已知矩阵
A
m
×
n
A_{m\times n}
Am×n的秩为
r
o
r_o
ro
算法4(求Moore-Penrose逆矩阵的迹方法)
步骤1 计算
B
=
A
A
T
B=AA^T
B=AAT。
步骤2 令
C
1
=
I
C_1=I
C1=I。
步骤3 计算
C
i
+
1
=
1
i
t
r
(
C
i
B
)
I
−
C
i
B
,
i
=
1
,
2
…
,
r
−
1
C_{i+1}=\frac{1}{i}tr(C_iB)I-C_iB,i=1,2…,r-1
Ci+1=i1tr(CiB)I−CiB,i=1,2…,r−1
步骤4 计算
A
+
=
r
t
r
C
i
B
C
i
A
T
A^+=\frac{r}{tr{C_iB}}C_iA^T
A+=trCiBrCiAT
注意,
C
i
+
1
B
=
0
C_{i+1}B=0
Ci+1B=0,
t
r
(
C
i
B
)
≠
0
tr(C_iB)≠0
tr(CiB)=0。
举例
解 易知
r
a
n
k
(
A
)
=
3
rank(A)=3
rank(A)=3。
(1)计算
B
=
A
T
A
[
3
0
1
0
3
−
2
1
−
1
7
]
B=A^TA \begin{bmatrix} 3 & 0 &1 \\ 0 & 3 &-2\\ 1 & -1 & 7 \end{bmatrix}
B=ATA⎣
⎡30103−11−27⎦
⎤
(2) 令
C
1
=
[
1
0
0
0
1
0
0
0
1
]
C_1= \begin{bmatrix} 1 & 0 &0 \\ 0 & 1 &0\\ 0 & 0 &1 \end{bmatrix}
C1=⎣
⎡100010001⎦
⎤
(3)计算
C
2
=
t
r
(
C
1
B
)
I
−
C
1
B
[
3
0
1
0
3
−
2
1
−
1
7
]
C_2=tr(C_1B)I-C_1B \begin{bmatrix} 3 & 0 &1 \\ 0 & 3 &-2\\ 1 & -1 & 7 \end{bmatrix}
C2=tr(C1B)I−C1B⎣
⎡30103−11−27⎦
⎤
(4)计算
C
3
=
1
2
t
r
(
C
2
B
)
I
−
C
2
B
[
17
−
2
−
3
−
3
20
6
−
3
6
9
]
C_3=\frac{1}{2}tr(C_2B)I-C_2B \begin{bmatrix} 17 & -2 &-3 \\ -3 & 20 &6\\ -3 & 6 & 9 \end{bmatrix}
C3=21tr(C2B)I−C2B⎣
⎡17−3−3−2206−369⎦
⎤
(5)矩阵
A
A
A的Moore-Penrose逆矩阵
A
+
=
3
C
3
A
T
t
r
(
C
3
B
)
=
1
48
[
20
−
16
−
4
12
−
8
16
−
8
24
−
12
0
12
12
]
=
1
12
[
5
−
4
−
1
3
−
2
4
−
2
6
−
3
0
3
3
]
A^+=\frac{3C_3A^T}{tr(C_3B)}=\frac{1}{48} \begin{bmatrix} 20 & -16 &-4 & 12 \\ -8 & 16 &-8 & 24\\ -12 & 0 & 12 & 12 \end{bmatrix} =\frac{1}{12} \begin{bmatrix} 5 & -4 & -1 & 3\\ -2 & 4 -2 & 6\\ -3 & 0& 3 & 3 \end{bmatrix}
A+=tr(C3B)3C3AT=481⎣
⎡20−8−12−16160−4−812122412⎦
⎤=121⎣
⎡5−2−3−44−20−16333⎦
⎤