scipy.linalg.

pinvh#

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

Berechnet die (Moore-Penrose) Pseudoinverse einer hermiteschen Matrix.

Berechnet eine verallgemeinerte Inverse einer komplexen hermiteschen/reellen symmetrischen Matrix anhand ihrer Eigenwertzerlegung und schließt alle Eigenwerte mit „großem“ Absolutbetrag ein.

Die Dokumentation wurde unter der Annahme verfasst, dass die Array-Argumente bestimmte „Kern“-Formen haben. Array-Argumente dieser Funktion können jedoch zusätzliche „Batch“-Dimensionen vorangestellt haben. In diesem Fall wird das Array als Stapel von niedrigdimensionalen Schnitten behandelt; siehe Gestapelte lineare Operationen für Details.

Parameter:
a(N, N) array_like

Reelle symmetrische oder komplexe hermitesche Matrix, die pseudoinvertiert werden soll

atolfloat, optional

Absoluter Schwellenwertterm, Standardwert ist 0.

Hinzugefügt in Version 1.7.0.

rtolfloat, optional

Relativer Schwellenwertterm, Standardwert ist N * eps, wobei eps der Maschinenpräzisionswert des Datentyps von a ist.

Hinzugefügt in Version 1.7.0.

lowerbool, optional

Ob die relevanten Array-Daten aus dem unteren oder oberen Dreieck von a übernommen werden. (Standard: unteres)

return_rankbool, optional

Wenn True, wird der effektive Rang der Matrix zurückgegeben.

check_finitebool, optional

Ob überprüft werden soll, ob die Eingabematrix nur endliche Zahlen enthält. Das Deaktivieren kann zu einer Leistungssteigerung führen, kann aber zu Problemen (Abstürze, Nichtterminierung) führen, wenn die Eingaben Unendlichkeiten oder NaNs enthalten.

Rückgabe:
B(N, N) ndarray

Die Pseudoinverse der Matrix a.

rankint

Der effektive Rang der Matrix. Wird zurückgegeben, wenn return_rank True ist.

Löst aus:
LinAlgError

Wenn der Eigenwertalgorithmus nicht konvergiert.

Siehe auch

pinv

Moore-Penrose-Pseudoinverse einer Matrix.

Beispiele

Für ein detaillierteres Beispiel siehe 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