Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Possible Duplicate:
Inverse of symmetric matrix $M = A A^\top$

I have a matrix, generated by the product of a non-square matrix with its own transpose:

M = A * A^T

I need the inverse of M, assuming det(M) != 0.

Given the nature of the matrix M, are there any specialised computational methods to find its inverse, prioritising precision over speed? Gauss-Jordan is prone to error, and I hope to find something nicer than and with comparable precision to adj(M^T)/det(M).

I've had a quick read of the Matrix Cookbook and of this page, but (at the present time of 1am) I'm struggling to see how it could help me.

In case it helps, I'm actually trying to calculate:

B = (A * A^T)^-1 * A
share|cite|improve this question

migrated from Aug 15 '12 at 12:59

This question came from our site for professional and enthusiast programmers.

marked as duplicate by J. M., Zhen Lin, Rudy the Reindeer, Michael Greinecker, Jack Schmidt Aug 15 '12 at 13:24

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

You might get lucky here, although there are more numerical analysts on mathSE than here, so I suggest you post there. – davin Aug 15 '12 at 0:27
thanks - what/where is mathSE? – Mark K Cowan Aug 15 '12 at 0:32
up vote 2 down vote accepted

Actually, you don't need to calculate (A * A^T)^-1 to compute B. What you are trying to calculate is the left inverse of A^T, and it is give by

$B = \left(A A^T\right)^{-1} A = \left(A^T\right)^{-1_{L}} = \left(A^{TT} A^T \right)^{-1} * A^{TT}$

Since in your case the left inverse exists, it's equivalent to the pseudo-inverse of A^T, which can be computed by SVD. And since the left (right) singular vectors of a matrix are right (left) singular vectors of it's transpose or left/pseudo inverse, and a matrix and its transpose have the same singular values, but the pseudo-inverse has inversed singular values, the pseudo-inverse of A^T has the same singular vectors with A, and has the inversed singular values of A.

So, all you have to do is calculating the SVD of A, and inversing it's singular values, then you will get B.

share|cite|improve this answer

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