cholesky#
- scipy.linalg.cholesky(a, lower=False, overwrite_a=False, check_finite=True)[Quelle]#
Berechnet die Cholesky-Zerlegung einer Matrix.
Gibt die Cholesky-Zerlegung \(A = L L^*\) oder \(A = U^* U\) einer hermiteschen positiv definiten Matrix A zurück.
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(M, M) array_like
Zu zerlegende Matrix
- lowerbool, optional
Ob die obere oder untere Dreiecks-Cholesky-Faktorisierung berechnet werden soll. Während der Zerlegung wird nur die ausgewählte Hälfte der Matrix referenziert. Standard ist obere Dreiecksform.
- overwrite_abool, optional
Ob die Daten in a überschrieben werden sollen (kann die Leistung verbessern).
- check_finitebool, optional
Ob geprüft werden soll, ob die gesamte Eingabematrix nur endliche Zahlen enthält. Deaktivierung kann zu Leistungsgewinnen führen, kann aber zu Problemen (Abstürze, Nicht-Terminierung) führen, wenn die Eingaben Unendlichkeiten oder NaNs enthalten.
- Rückgabe:
- c(M, M) ndarray
Obere oder untere Dreiecks-Cholesky-Faktor von a.
- Löst aus:
- LinAlgErrorwenn die Zerlegung fehlschlägt.
Hinweise
Während der Endlichkeitsprüfung (falls ausgewählt) wird die gesamte Matrix a überprüft. Während der Zerlegung wird angenommen, dass a symmetrisch oder hermitesch ist (je nach Anwendbarkeit), und nur die von der Option lower ausgewählte Hälfte wird referenziert. Folglich kann
choleskyauch dann erfolgreich sein, wenn a asymmetrisch/nicht-hermitesch ist und die durch die ausgewählte Hälfte dargestellte symmetrische/hermiteschte Matrix positiv definit ist, aber fehlschlagen, wenn ein Element in der anderen Hälfte nicht endlich ist.Beispiele
>>> import numpy as np >>> from scipy.linalg import cholesky >>> a = np.array([[1,-2j],[2j,5]]) >>> L = cholesky(a, lower=True) >>> L array([[ 1.+0.j, 0.+0.j], [ 0.+2.j, 1.+0.j]]) >>> L @ L.T.conj() array([[ 1.+0.j, 0.-2.j], [ 0.+2.j, 5.+0.j]])