Calculate the generalized inverse of a matrix using its
singular-value decomposition (SVD) and including all
large singular values.

Changed in version 1.14: Can now operate on stacks of matrices

Parameters:

a:(…, M, N) array_like

Matrix or stack of matrices to be pseudo-inverted.

rcond:(…) array_like of float

Cutoff for small singular values.
Singular values less than or equal to
rcond*largest_singular_value are set to zero.
Broadcasts against the stack of matrices.

hermitian:bool, optional

If True, a is assumed to be Hermitian (symmetric if real-valued),
enabling a more efficient method for finding singular values.
Defaults to False.

New in version 1.17.0.

Returns:

B:(…, N, M) ndarray

The pseudo-inverse of a. If a is a matrix instance, then so
is B.

Raises:

LinAlgError

If the SVD computation does not converge.

Notes

The pseudo-inverse of a matrix A, denoted , is
defined as: “the matrix that ‘solves’ [the least-squares problem]
,” i.e., if is said solution, then
is that matrix such that .

It can be shown that if is the singular
value decomposition of A, then
, where are
orthogonal matrices, is a diagonal matrix consisting
of A’s so-called singular values, (followed, typically, by
zeros), and then is simply the diagonal matrix
consisting of the reciprocals of A’s singular values
(again, followed by zeros). [1]