Possible Duplicate:
Understanding how Numpy does SVD

I have been using different methods to calculate both the rank of a matrix and the solution of a matrix system of equations. I came across the function linalg.svd, which I now learned is in fact a LAPACK routine. Comparing this to my own effort of solving the system with Gaussian Elimination, it appears to be both faster and more precise. I'm trying to understand why.

As far as I know, the linalg.svd function uses a QR algorithm to calculate the eigenvalues of my matrix. I know how this works mathematically, but I don't know how Numpy manages to do it so quickly and without losing much precision.

I'm obviously not saying my script is in any way close to what the LAPACK authors do, but I'm trying to understand the fundamentals behind it.

So my question: How does the numpy.svd function work, and more specifically, how does it manage to do it fast and accurately (compared to gaussian elimination)?

Thank you for your time.



Browse other questions tagged or ask your own question.