zoukankan      html  css  js  c++  java
  • Woodbury matrix identity

    woodbury matrix identity

    2014/6/20

    【转载请注明出处】http://www.cnblogs.com/mashiqi

    http://en.wikipedia.org/wiki/Woodbury_matrix_identity

    Today I'm going to write down a proof of this Woodbury matrix identity, which is very important in some practical situation. For instance, the 40th equation of this paper" bayesian compressive sensing using Laplace priors" applied this identity. Now let me give the details of it.

    The Woodbury matrix identity is:

    ${(A + UCV)^{ - 1}} = {A^{ - 1}} - {A^{ - 1}}U{({C^{ - 1}} + V{A^{ - 1}}U)^{ - 1}}V{A^{ - 1}}$

    where , , and are both assumed reversible.

    Proof:

    We denote with , namely .So:

    [M{A^{ - 1}} = I + UCV{A^{ - 1}}]       

    By multiply U with both side we get:

     

    [egin{array}{l}
    M{A^{ - 1}}U = U + UCV{A^{ - 1}}U = U(I + CV{A^{ - 1}}U)\
    {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} = UC({C^{ - 1}} + V{A^{ - 1}}U)
    end{array}]

    is reversible, we get:

            

    But how could we deal with this nasty term? We should notice that this term, which may not square, is coming from itself, which is right a square and reversible matrix. So, from formula , we make up a pleasant with is nasty :

     

    [egin{array}{l}
    M{A^{ - 1}}U{({C^{ - 1}} + V{A^{ - 1}}U)^{ - 1}}V + A = UCV + A = M\
    Rightarrow M = M{A^{ - 1}}U{({C^{ - 1}} + V{A^{ - 1}}U)^{ - 1}}V + A\
    Rightarrow I - {A^{ - 1}}U{({C^{ - 1}} + V{A^{ - 1}}U)^{ - 1}}V = {M^{ - 1}}A
    end{array}]     

    And finally due to the reversibility of , we get the Woodbury matrix identity:

    [{M^{ - 1}} = {(A + VCU)^{ - 1}} = {A^{ - 1}} - {A^{ - 1}}U{({C^{ - 1}} + V{A^{ - 1}}U)^{ - 1}}V{A^{ - 1}}]        

    Done.

    We should notice that if and are identity matrix, then Woodbury matrix identity can be reduced to this form:

    [{(A + C)^{ - 1}} = {A^{ - 1}} - {A^{ - 1}}{({C^{ - 1}} + {A^{ - 1}})^{ - 1}}{A^{ - 1}}]        

    ,which is equivalent to:

    [{(A + C)^{ - 1}} = {C^{ - 1}}{({C^{ - 1}} + {A^{ - 1}})^{ - 1}}{A^{ - 1}}]        

    This is because:

     

    [egin{array}{l}
    {(A + C)^{ - 1}} = {A^{ - 1}} - ( - {C^{ - 1}} + {C^{ - 1}} + {A^{ - 1}}){({C^{ - 1}} + {A^{ - 1}})^{ - 1}}{A^{ - 1}}\
    {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} = {A^{ - 1}} + {C^{ - 1}}{({C^{ - 1}} + {A^{ - 1}})^{ - 1}}{A^{ - 1}} - ({C^{ - 1}} + {A^{ - 1}}){({C^{ - 1}} + {A^{ - 1}})^{ - 1}}{A^{ - 1}}\
    {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} = {A^{ - 1}} + {C^{ - 1}}{({C^{ - 1}} + {A^{ - 1}})^{ - 1}}{A^{ - 1}} - {A^{ - 1}}\
    {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} {kern 1pt} = {C^{ - 1}}{({C^{ - 1}} + {A^{ - 1}})^{ - 1}}{A^{ - 1}}
    end{array}]

           

  • 相关阅读:
    [翻译] FreeStreamer 在线流媒体播放
    [转] 每个程序员都必须遵守的编程原则
    iOS7以下设备获取mac地址
    iOS中alloc与init
    ON、WHERE、HAVING的区别
    在SQL语言中,join什么时候用,什么时候不用啊?请高手举例解释一下。谢谢
    你能识别这些科技公司的真假logo吗?
    in 和 exist 区别
    union和union all的区别
    Mysql避免全表扫描sql查询优化 .
  • 原文地址:https://www.cnblogs.com/mashiqi/p/3803667.html
Copyright © 2011-2022 走看看