scipy.linalg.

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 cholesky auch 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]])