# Inverse of symmetric matrix M = A*At [duplicate]

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


## marked as duplicate by J. M. is a poor mathematician, Zhen Lin, Rudy the Reindeer, Michael Greinecker♦, Jack SchmidtAug 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.

## migrated from stackoverflow.comAug 15 '12 at 12:59

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

• 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

## 1 Answer

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.