Cholesky-Zerlegung
Die Cholesky-Zerlegung (auch Cholesky-Faktorisierung) (nach André-Louis Cholesky, 1875–1918) bezeichnet in der numerischen Mathematik eine Zerlegung einer symmetrischen positiv definiten Matrix in ein Produkt aus einer unteren Dreiecksmatrix und deren Transponierter. Sie wurde von Cholesky vor 1914 im Zuge der Triangulation Kretas durch den Service géographique de l’armée entwickelt. Das Konzept kann auch allgemeiner für hermitesche Matrizen definiert werden.
Einsatzbereiche
Bei der Anwendung der Methode der kleinsten Quadrate ist eine Möglichkeit, die auftauchenden Minimierungsprobleme über die Normalgleichungen zu lösen, die eine symmetrische positiv definite Systemmatrix haben. Dies ist mit Hilfe der Cholesky-Zerlegung möglich und dies war die Motivation von Cholesky, die Zerlegung zu entwickeln. Beim Gauß-Newton-Verfahren ist damit bei jedem Iterationsschritt ein Gleichungssystem zu lösen, das sich mit dem Cholesky-Verfahren bestimmen lässt.
Die Cholesky-Zerlegung kann auch zur Gewinnung eines Vorkonditionierungsverfahrens für lineare Gleichungssysteme mit positiv definiter Matrix benutzt werden; zu diesem Zweck gibt es speziell die Varianten der unvollständigen Cholesky-Zerlegung und der modifizierten unvollständigen Cholesky-Zerlegung.
Gleichzeitig stellt die Zerlegung einen Test dar, ob eine gegebene
symmetrische Matrix positiv definit ist. Andernfalls ist einer der Einträge auf
der Hauptdiagonalen
negativ, sodass die Wurzel nicht gezogen werden kann, oder gleich ,
sodass durch den Eintrag nicht dividiert werden kann. In beiden Fällen bricht
der Algorithmus ab. Die Cholesky-Zerlegung lässt sich auch zur Bestimmung der Determinante
der Matrix
verwenden, denn es gilt
.
Außerhalb der Mathematik findet die Cholesky-Zerlegung auch Anwendung in der ökonometrischen Erforschung makroökonomischer Zusammenhänge. Hierbei wird bei sogenannten vektorautoregressiven Modellen (VAR) die Reihenfolge der Beeinflussung der endogenen Variablen untereinander festgelegt.
Darüber hinaus wird sie auch bei der Monte-Carlo-Simulation eingesetzt, um vorgegebene Korrelationen in unabhängig generierte Zufallszahlenfolgen (als Diskretisierung stochastischer Prozesse) zu bringen.
Formulierung und Anwendung
Jede symmetrische,
positiv
definite Matrix
kann eindeutig in der Form
geschrieben werden. Dabei ist >
eine untere,
normierte Dreiecksmatrix und
eine Diagonalmatrix
mit positiven Einträgen. Mit der Quadratwurzel
von
und dem Matrix-Faktor
,
definiert durch
und
,
wird die Cholesky-Zerlegung – äquivalent – auch formuliert als
.
Liegt eine Berechnung der Cholesky-Zerlegung vor, so lässt sich das
Gleichungssystem
effizient durch Vorwärts-
und Rückwärtseinsetzen lösen:
- Durch Vorwärtseinsetzen: Lösen des linearen Gleichungssystems
- Durch anschließendes Rückwärtseinsetzen: Lösen des linearen
Gleichungssystems
Berechnung
Setzt man ,
so erhält man für die Elemente von
:
Dieser Zusammenhang führt direkt auf die folgenden Formeln für :
Bei diesem Algorithmus ist es wichtig die Reihenfolge der berechneten Matrixeinträge richtig durchzuführen. Die Einträge werden spaltenweise berechnet und angefangen mit dem niedrigsten Zeilenindex.
Die Berechnung der Zerlegung
erfolgt in analoger Art und Weise für
und
:
Auch bei diesen Algorithmen ist es wichtig die Reihenfolge der berechneten
Matrixeinträge richtig zu wählen. Zuerst muss man zum Index
den Eintrag
berechnen und anschließend die
-te
Spalte der Matrix
,
also:
für
.
Aufwand und Stabilität
Die Cholesky-Zerlegung ist numerisch
stabil. Im Vergleich erfordert das Eliminationsverfahren
nach Gauß mit seiner algorithmischen Umsetzung, der LR-Zerlegung, etwa doppelt
so viele Operationen, da nicht nur eine Matrix ,
sondern zwei Faktoren
und
berechnet werden müssen. Bei der Cholesky-Zerlegung treten
arithmetische Operationen auf, davon
Multiplikationen,
Divisionen
und
Wurzeloperationen.
Pseudocode
Die Berechnungen in obigen Formeln können in verschiedener Weise durchgeführt
werden. Die nach Tadeusz Banachiewicz benannte Variante berechnet die untere Dreiecksmatrix
zeilenweise. In Pseudocode
sieht das Verfahren zur Zerlegung der Matrix
in die Form
so aus:

For i = 1 To n
For j = 1 To i
Summe = a(i, j)
For k = 1 To j-1
Summe = Summe - a(i, k) * a(j, k)
If i > j Then
a(i, j) = Summe / a(j, j) // Untere Dreiecksmatrix
Else If Summe > 0 Then // Diagonalelement
a(i, i) = Sqrt(Summe) // ... ist immer groesser Null
Else
ERROR // Die Matrix ist (wenigstens numerisch) nicht symmetrisch positiv definit
Die Laufindizes
im Code entsprechen der mathematischen Notierung von Elementen der Matrix
.
Dabei ist
die Anzahl der Zeilen und gleichzeitig die Anzahl der Spalten der Matrix
,
Hilfsvariablen sind
und Summe. Der Algorithmus arbeitet in-place;
das heißt, er modifiziert die Matrix
so, dass sie die untere Dreiecksmatrix
enthält. Es muss somit kein neuer Speicherplatz alloziert werden.
Der Algorithmus bearbeitet nur die linke untere Dreiecksmatrix von ,
die Elemente
für
brauchen nicht mit Werten belegt zu werden (da die Matrix
nach Voraussetzung symmetrisch ist), und wenn sie Werte enthalten, werden diese
nicht verändert. Sucht man also nach der Cholesky-Zerlegung
gemäß
,
so sind die Matrixelemente von
oberhalb der Diagonalen (
)
gleich 0 zu setzen.



© biancahoegel.de
Datum der letzten Änderung: Jena, den: 04.04. 2023