scipy.linalg.

pinvh#

scipy.linalg.pinvh(a, atol=None, rtol=None, lower=True, return_rank=False, check_finite=True)[source]#

計算 Hermitian 矩陣的 (Moore-Penrose) 偽反矩陣。

使用特徵值分解計算複 Hermitian/實對稱矩陣的廣義反矩陣,並包含所有具有「大」絕對值的特徵值。

參數:
a(N, N) 類陣列

要偽反轉的實對稱或複 Hermitian 矩陣

atolfloat, 選用

絕對閾值項,預設值為 0。

在版本 1.7.0 中新增。

rtolfloat, 選用

相對閾值項,預設值為 N * eps,其中 epsa 資料類型的機器精度值。

在版本 1.7.0 中新增。

lowerbool, 選用

相關陣列資料是否取自 a 的下三角或上三角。(預設:lower)

return_rankbool, 選用

如果為 True,則返回矩陣的有效秩。

check_finitebool, 選用

是否檢查輸入矩陣僅包含有限數字。停用可能會提高效能,但如果輸入包含無限或 NaN,可能會導致問題(崩潰、非終止)。

返回:
B(N, N) ndarray

矩陣 a 的偽反矩陣。

rankint

矩陣的有效秩。如果 return_rank 為 True,則返回。

引發:
LinAlgError

如果特徵值演算法不收斂。

參見

pinv

矩陣的 Moore-Penrose 偽反矩陣。

範例

如需更詳細的範例,請參閱 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