scipy.linalg.

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* oder A = U* U einer 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_solve

Lö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 cholesky immer 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