¿Cómo calcula Numpy el pseudo inverso de una matriz?

El pseudoinverso se realiza con SVD.

Múltiples formas de hacerlo.

Existen diferentes métodos, uno tradicional es la bidiagonalización de golub kahan. [1]

La rutina de Numpy svd Lapack es dgesdd. [2]

Este es un método más nuevo. Divide and conquer [3] permite multi-threading.

Así es como. [4]

El método se basa en el mismo concepto pero en mosaico de la matriz utilizando matrices de bloques.

para [matemáticas] Ax = b [/ matemáticas]

[math] \ bar {x} [/ math] es la solución dada [math] \ bar {x} = A ^ {+} b [/ math]

[matemáticas] A = U \ Sigma V ^ {T} [/ matemáticas]

[matemáticas] A ^ {+} = V \ Sigma ^ {+} U ^ {T} [/ matemáticas]

Notas al pie

[1] Procedimiento de bidiagonalización de Golub-Kahan-Lanczos.

[2] LAPACK: dgesdd

[3] Algoritmo de valor propio de divide y vencerás – Wikipedia

[4] Algoritmo de divide y vencerás para la SVD bidiagonal