假定 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+的四种方法。
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逆矩阵的四个条件。
若 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逆矩阵。
对矩阵 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]
已知矩阵 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⎦ ⎤