pinvh#
- 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 * epswhere- epsis 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 - pinv
- 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