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, wobeiepsder Maschinenpräzisionswert des Datentyps vonaist.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
pinvMoore-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