I am writing a routine to return the Moore-Penrose inverse of a rectangular matrix.

Currently am computing the Moore-Penrose inverse using SVD, i.e., if the SVD is given by $A = \sum_{i=1}^r \lambda_i u_i v_i^T$, with $\lambda_i > 0 $ then $A^{+} = \sum_{i=1}^{r} \frac{1}{\lambda_i} v_i u_i^T$. However, if SVD computation does not converge, I will have to throw an exception, I would prefer to compute the pseudo-inverse using some non-iterative method.

I have come across the formula that $A^{+} = H(H^2)^-A^T$, where $H=A^TA$ and $(H^2)^-$ is any generalized inverse of $H^2$, and I can compute a generalized inverse using elementary row operations, this does provide a way. However, I am not fond of this method because $H^2$'s condition number is $A$'s condition number raised to the fourth power.

Do I have any other alternative?

  • 2
    $\begingroup$ When does SVD not converge? I haven't encountered any cases where SVD doesn't converge. $\endgroup$ – Shiyu Jun 22 '11 at 15:32
  • 1
    $\begingroup$ Unfortunately OP has not been able to share an example of a matrix that chokes SVD... $\endgroup$ – J. M. is a poor mathematician Oct 19 '11 at 0:26

You can compute a complete orthogonal decomposition using two QR decompositions. See http://www.netlib.org/lapack/lug/node43.html


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.