{ } Raw JSON

bundles / scipy 1.17.1 / scipy / linalg / _basic / pinvh

function

scipy.linalg._basic:pinvh

source: /scipy/linalg/_basic.py :1937

Signature

def   pinvh ( a atol = None rtol = None lower = True return_rank = False check_finite = True )

Summary

Compute the (Moore-Penrose) pseudo-inverse of a Hermitian matrix.

Extended Summary

Calculate a generalized inverse of a complex Hermitian/real symmetric matrix using its eigenvalue decomposition and including all eigenvalues with 'large' absolute value.

The documentation is written assuming array arguments are of specified "core" shapes. However, array argument(s) of this function may have additional "batch" dimensions prepended to the core shape. In this case, the array is treated as a batch of lower-dimensional slices; see linalg_batch for details. Note that calls with zero-size batches are unsupported and will raise a ValueError.

Parameters

a : (N, N) array_like

Real symmetric or complex hermetian matrix to be pseudo-inverted

atol : float, optional

Absolute threshold term, default value is 0.

rtol : float, optional

Relative threshold term, default value is N * eps where eps is the machine precision value of the datatype of a.

lower : bool, optional

Whether the pertinent array data is taken from the lower or upper triangle of a. (Default: lower)

return_rank : bool, optional

If True, return the effective rank of the matrix.

check_finite : bool, 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.

rank : int

The effective rank of the matrix. Returned if return_rank is True.

Raises

: LinAlgError

If eigenvalue algorithm does not converge.

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)
np.allclose(B, B @ a @ B)

See also

pinv

Moore-Penrose pseudoinverse of a matrix.

Aliases

  • scipy.linalg.pinvh

Referenced by

This package