cho_factor#
- scipy.linalg.cho_factor(a, lower=False, overwrite_a=False, check_finite=True)[Quelle]#
Berechnet die Cholesky-Zerlegung einer Matrix, zur Verwendung in cho_solve
Gibt eine Matrix zurück, die die Cholesky-Zerlegung enthält,
A = L L*oderA = U* Ueiner hermiteschen positiv definiten Matrix a. Der Rückgabewert kann direkt als erster Parameter für cho_solve verwendet werden.Warnung
Die zurückgegebene Matrix enthält auch Zufallsdaten in den Einträgen, die nicht von der Cholesky-Zerlegung verwendet werden. Wenn Sie diese Einträge nullen müssen, verwenden Sie stattdessen die Funktion
cholesky.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
Gibt an, 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: obere Dreiecksform)
- overwrite_abool, optional
Gibt an, ob Daten in a überschrieben werden sollen (kann die Leistung verbessern)
- check_finitebool, optional
Gibt an, ob überprüft werden soll, ob die gesamte Eingabematrix nur endliche Zahlen enthält. Deaktivieren kann zu einer Leistungssteigerung 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
Matrix, deren obere oder untere Dreieck die Cholesky-Faktoren von a enthält. Andere Teile der Matrix enthalten Zufallsdaten.
- lowerbool
Flag, das angibt, ob der Faktor in der unteren oder oberen Dreiecksform vorliegt
- Löst aus:
- LinAlgError
Wird ausgelöst, wenn die Zerlegung fehlschlägt.
Siehe auch
cho_solveLöst eine lineare Gleichungsschar mithilfe der Cholesky-Zerlegung einer Matrix.
Hinweise
Während der Prüfung auf Endlichkeit (falls ausgewählt) wird die gesamte Matrix a überprüft. Während der Zerlegung wird davon ausgegangen, dass a symmetrisch oder hermitesch ist (je nach Anwendbarkeit), und nur die durch die Option lower ausgewählte Hälfte wird referenziert. Folglich kann
choleskyimmer noch erfolgreich sein, wenn die durch die ausgewählte Hälfte dargestellte symmetrische/hermitesche 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 cho_factor >>> A = np.array([[9, 3, 1, 5], [3, 7, 5, 1], [1, 5, 9, 2], [5, 1, 2, 6]]) >>> c, low = cho_factor(A) >>> c array([[3. , 1. , 0.33333333, 1.66666667], [3. , 2.44948974, 1.90515869, -0.27216553], [1. , 5. , 2.29330749, 0.8559528 ], [5. , 1. , 2. , 1.55418563]]) >>> np.allclose(np.triu(c).T @ np. triu(c) - A, np.zeros((4, 4))) True