pinvh — SciPy v1.15.2 Manual (original) (raw)
scipy.linalg.
scipy.linalg.pinvh(a, atol=None, rtol=None, lower=True, return_rank=False, check_finite=True)[source]#
Compute the (Moore-Penrose) pseudo-inverse of a Hermitian matrix.
Calculate a generalized inverse of a complex Hermitian/real symmetric matrix using its eigenvalue decomposition and including all eigenvalues with ‘large’ absolute value.
Parameters:
a(N, N) array_like
Real symmetric or complex hermetian matrix to be pseudo-inverted
atolfloat, optional
Absolute threshold term, default value is 0.
Added in version 1.7.0.
rtolfloat, optional
Relative threshold term, default value is N * eps
whereeps
is the machine precision value of the datatype of a
.
Added in version 1.7.0.
lowerbool, optional
Whether the pertinent array data is taken from the lower or upper triangle of a. (Default: lower)
return_rankbool, optional
If True, return the effective rank of the matrix.
check_finitebool, optional
Whether to check that the input matrix contains only finite numbers. Disabling may give a performance gain, but may result in problems (crashes, non-termination) if the inputs do contain infinities or NaNs.
Returns:
B(N, N) ndarray
The pseudo-inverse of matrix a.
rankint
The effective rank of the matrix. Returned if return_rank is True.
Raises:
LinAlgError
If eigenvalue algorithm does not converge.
See also
Moore-Penrose pseudoinverse of a matrix.
Examples
For a more detailed example see pinv.
import numpy as np from scipy.linalg import pinvh rng = np.random.default_rng() a = rng.standard_normal((9, 6)) a = np.dot(a, a.T) B = pinvh(a) np.allclose(a, a @ B @ a) True np.allclose(B, B @ a @ B) True