4
$\begingroup$

I would like to compute a partial inverse of a symmetric semi-definite matrix.

I read about computing the pseudoinverse of a rectangular matrix by using SVD, however with a symmetric matrix I could apply a similar technique using instead the eigenvalue decomposition, i.e. compute the eigenvalues, discard the smallest and invert the remaining.

Does this make sense? If so can you point me to a reference that explains how to achieve this in detail?

Any help appreciated.

$\endgroup$
2
  • 1
    $\begingroup$ if it is a positive definite singular matrix it is called positive semi-definite matrix. $\endgroup$
    – user13838
    Commented Nov 28, 2011 at 23:14
  • $\begingroup$ thanks, edited the question. $\endgroup$ Commented Nov 28, 2011 at 23:17

1 Answer 1

4
$\begingroup$

The idea is that the singular value decomposition,

$$\mathbf A=\mathbf U\mathbf \Sigma\mathbf V^\top$$

and the eigendecomposition

$$\mathbf A=\mathbf Q\mathbf D\mathbf Q^\top$$

of a symmetric matrix are one and the same.

Thus, if one wants the Moore-Penrose pseudoinverse of $\mathbf A$, either decomposition could be used. (However, an SVD routine generally wouldn't exploit the nice structure of a symmetric matrix, so a bit more computational effort than what is actually needed will be used in that case; thus, use the eigendecomposition.)

The idea is that, letting $\mathbf A^\dagger$ be the Moore-Penrose pseudoinverse, we have the property

$$\mathbf A^\dagger=\mathbf Q\mathbf D^\dagger\mathbf Q^\top$$

where $\mathbf D^\dagger$ is (usually) computed via the following procedure: take $d_1$ to be the largest eigenvalue, and let $\varepsilon$ be machine epsilon. Reciprocate any entry of $\mathbf D$ that is greater than $\varepsilon\cdot d_1$, and set all other entries to zero.

$\endgroup$
5
  • $\begingroup$ thanks! do you know of any library that has this already implemented? $\endgroup$ Commented Nov 28, 2011 at 23:27
  • $\begingroup$ LAPACK is the standard library for these. $\endgroup$ Commented Nov 28, 2011 at 23:29
  • $\begingroup$ in LAPACK I found only the eigenvalue computation, I wondered if any library had all the pseudoinverse process implemented, it would think this is a quite common situation. $\endgroup$ Commented Nov 28, 2011 at 23:31
  • $\begingroup$ Sure, but the problem is that the canned routines for pseudoinverses would not exploit the fact that your matrix is symmetric. You're fine with wasted effort? (How big are your matrices, anyway?) $\endgroup$ Commented Nov 28, 2011 at 23:38
  • $\begingroup$ matrices are tiny, 3x3, but I have few thousands of them. $\endgroup$ Commented Nov 28, 2011 at 23:41

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .