• 矩阵分析与应用+张贤达


    第一章 矩阵与线性方程组(二十三)

    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) rmin(m,n)。下面介绍求 M o o r e − P e n r o s e Moore-Penrose MoorePenrose逆矩阵 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=

    [101211011101110110]" role="presentation" style="position: relative;">[101211011101110110]
    A= 101011110211101110
    由于其列数大于行数,故选择算法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=
    [823240404]" role="presentation" style="position: relative;">[823240404]
    ,(AA^H)^2=
    [8424482420848832]" role="presentation" style="position: relative;">[8424482420848832]
    AAH= 824240304 ,(AAH)2= 8424482420848832

    (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 ]
    [8424482420848832]" role="presentation" style="position: relative;">[8424482420848832]
    [x1x2x3]" role="presentation" style="position: relative;">[x1x2x3]
    =
    [824]" role="presentation" style="position: relative;">[824]
    \Rightarrow
    [x1x2x3]" role="presentation" style="position: relative;">[x1x2x3]
    =\frac{1}{6}
    [211]" role="presentation" style="position: relative;">[211]
    8424482420848832 x1x2x3 = 824 x1x2x3 =61 211

    [ 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 ]
    [8424482420848832]" role="presentation" style="position: relative;">[8424482420848832]
    [x1x2x3]" role="presentation" style="position: relative;">[x1x2x3]
    =
    [240]" role="presentation" style="position: relative;">[240]
    \Rightarrow
    [x1x2x3]" role="presentation" style="position: relative;">[x1x2x3]
    =\frac{1}{6}
    [121]" role="presentation" style="position: relative;">[121]
    8424482420848832 x1x2x3 = 240 x1x2x3 =61 121

    [ 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 ]
    [8424482420848832]" role="presentation" style="position: relative;">[8424482420848832]
    [x1x2x3]" role="presentation" style="position: relative;">[x1x2x3]
    =
    [404]" role="presentation" style="position: relative;">[404]
    \Rightarrow
    [x1x2x3]" role="presentation" style="position: relative;">[x1x2x3]
    =\frac{1}{12}
    [427]" role="presentation" style="position: relative;">[427]
    8424482420848832 x1x2x3 = 404 x1x2x3 =121 427


    X H = 1 12 [ 4 2 − 4 2 4 − 2 − 4 − 2 7 ] X^H= \frac{1}{12}
    [424242427]" role="presentation" style="position: relative;">[424242427]
    XH=121 424242427

    (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}
    [424242427]" role="presentation" style="position: relative;">[424242427]
    (AAH)+=X(AAH)XH=121 424242427

    (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}
    [101011110211101110]" role="presentation" style="position: relative;">[101011110211101110]
    [424242427]" role="presentation" style="position: relative;">[424242427]
    =\frac{1}{12}
    [003225222221003666]" role="presentation" style="position: relative;">[003225222221003666]
    A+=AH(AAH)+=121 101211011101110110 424242427 =121 022206022206352136

    给出。容易验证, 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=[Ak1,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=

    [101111012111]" role="presentation" style="position: relative;">[101111012111]
    A= 110101111121
    的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=

    [110 1]" role="presentation" style="position: relative;">[110 1]
    ,a_2=
    [0111]" role="presentation" style="position: relative;">[0111]
    A1=a1= 110 1 ,a2= 0111
    则有
    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=(a2A1d2)+=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^+=

    [A1+d2b2b2]" role="presentation" style="position: relative;">[A1+d2b2b2]
    =\frac{1}{3}
    [11010111]" role="presentation" style="position: relative;">[11010111]
    A2+=[A1+d2b2b2]=31[10110111]
    (5) d 3 = A 2 + a 3 = 1 3 [ 1 − 2 ] d_3=A_2^+a_3=\frac{1}{3}
    [12]" role="presentation" style="position: relative;">[12]
    d3=A2+a3=31[12]

    (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=(a3A2d3)+=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^+=
    [A2+d3b3b3]" role="presentation" style="position: relative;">[A2+d3b3b3]
    =\frac{1}{12}
    [541324263033]" role="presentation" style="position: relative;">[541324263033]
    A+=[A2+d3b3b3]=121[524412363033]

    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)ICiB,i=1,2,r1
    步骤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

    [301032117]" role="presentation" style="position: relative;">[301032117]
    B=ATA 301031127
    (2) 令
    C 1 = [ 1 0 0 0 1 0 0 0 1 ] C_1=
    [100010001]" role="presentation" style="position: relative;">[100010001]
    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
    [301032117]" role="presentation" style="position: relative;">[301032117]
    C2=tr(C1B)IC1B 301031127

    (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
    [17233206369]" role="presentation" style="position: relative;">[17233206369]
    C3=21tr(C2B)IC2B 17332206369

    (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}
    [20164128168241201212]" role="presentation" style="position: relative;">[20164128168241201212]
    =\frac{1}{12}
    [541324263033]" role="presentation" style="position: relative;">[541324263033]
    A+=tr(C3B)3C3AT=481 20812161604812122412 =121 523442016333

  • 相关阅读:
    微服务框架 SpringCloud微服务架构 10 使用Docker 10.5 容器命令案例2
    vue2中,下拉框多选和全选的实现
    软件测试面试题(持续更新中),欢迎大家一起完善
    HTML制作一个介绍自己家乡的网站——贵阳,排版整洁,内容丰富,主题鲜明
    页面搭建系统的那些事儿
    基于内存的分布式NoSQL数据库Redis(三)常用命令
    企业内部网络安全四大威胁,如何应对?
    UE源码分析:Slate 鼠标/触摸输入处理
    ES学习笔记
    使用TortoiseGit导出两次提交时间之间的差异文件
  • 原文地址:https://blog.csdn.net/m0_45085885/article/details/126060014