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, 2011 at 15:32
  • 1
    $\begingroup$ Unfortunately OP has not been able to share an example of a matrix that chokes SVD... $\endgroup$ Oct 19, 2011 at 0:26

1 Answer 1


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


You must log in to answer this question.

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