0
$\begingroup$

I have a question, in which I am computing the inverse of a matrix $(A + \sum_{i=1}^{k}u_iv_i^T)$. Typically $k $ is small than $5$. And I know if $k = 1$, we can apply the Sherman Morrison Formula to quickly obtain the matrix inversion. Is there any fast way to compute the inversion, when $k > 1$? Note that Woodbury formula does not work in this case since $\sum_{i=1}^{k}u_iv_i^T$ cannot be expressed as $UCV$. Thank you.

$\endgroup$
  • 2
    $\begingroup$ What are $A$, $u_i$ and $v_i$? You might want to make your question clearer. $\endgroup$ – Jack Sep 30 '16 at 22:09
  • $\begingroup$ $A$ is a $r\times r$ invertible matrix and $u, v$ are $r$-dim vectors. $\endgroup$ – Hongyi Xu Oct 2 '16 at 4:36
0
$\begingroup$

I'll write $v_i$ as $v_i^T$ just to indicate it's a row vector. I do not see any problem with expressing the sum as $UCV$: $\sum_{i=1}^k u_i v_i^T = [u_1 \; u_2 \ldots u_k] [v_1 \; v_2 \ldots v_k]^T = UCV$ with $U=[u_1 \; u_2 \ldots u_k]$, $C=I$, $V=[v_1 \; v_2 \ldots v_k]^T$.

$\endgroup$
  • $\begingroup$ Thanks. However, you will have cross terms $u_i v_j^T$, where $i$ is not equal to $j$. $\endgroup$ – Hongyi Xu Oct 2 '16 at 4:33
  • $\begingroup$ I don't see why. Here's a numerical example: >> n=10; u1=rand(n,1); u2=rand(n,1); v1=rand(n,1); v2=rand(n,1); A=u1*v1'+u2*v2'; B=[u1 u2]*[v1 v2]'; sum(sum(abs(A-B))) ans = 1.2212e-15 $\endgroup$ – LinAlg Oct 2 '16 at 12:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.