# Cholesky-Zerlegung

Die Cholesky-Zerlegung (auch Cholesky-Faktorisierung) (nach André-Louis Cholesky, 1875–1918) bezeichnet in der linearen Algebra eine Zerlegung einer symmetrischen positiv definiten Matrix in ein Produkt aus einer unteren Dreiecksmatrix und deren Transponierten. Die Zerlegung existiert für jede solche Matrix und ist nur bei der erweiterten Zerlegung mit Diagonalmatrix D eindeutig. Die Cholesky-Zerlegung selbst ist nicht eindeutig. Sie wurde von Cholesky vor 1914 im Zuge der Triangulation Kretas durch den französischen Service géographique de l’armée entwickelt. Das Konzept kann auch allgemeiner für hermitesche Matrizen definiert werden.

## Anwendungen

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 eines der Elemente auf der Hauptdiagonalen negativ, sodass die Quadratwurzel nicht gezogen werden kann, oder gleich $0$, sodass durch das Element 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 $A$ verwenden, denn es gilt $\textstyle \det A=\prod _{i=1}^{n}G_{ii}^{2}$.
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

Jede symmetrische, positiv definite Matrix $A\in \mathbb {R} ^{n\times n}$ kann eindeutig in der Form
    $A=LDL^{T}$
geschrieben werden. Dabei ist $L$ eine normierte untere Dreiecksmatrix und $D$ eine Diagonalmatrix mit positiven Elementen. Mit der Quadratwurzel von $D$ und dem Matrix-Faktor $G$, definiert durch
    $D=D^{1/2}D^{1/2}$
und
    $G:=LD^{1/2}$,
wird die Cholesky-Zerlegung – äquivalent – auch formuliert als
    $A=LDL^{T}=LD^{1/2}(D^{1/2})^{T}L^{T}=LD^{1/2}(LD^{1/2})^{T}=GG^{T}$.
Liegt eine Berechnung der Cholesky-Zerlegung vor, so lässt sich das Gleichungssystem $Ax=b$ effizient durch Vorwärts- und Rückwärtseinsetzen lösen:
* Durch Vorwärtseinsetzen: Lösen des linearen Gleichungssystems $Gy=b$
* Durch anschließendes Rückwärtseinsetzen: Lösen des linearen Gleichungssystems $G^{T}x=y.$
Für die Elemente $D_{jj}$ der Diagonalmatrix $D$ gilt
    $D_{jj}=A_{jj}-\sum _{k=1}^{j-1}L_{jk}^{2}D_{kk}$
und für die Elemente $L_{ij}$ der normierten unteren Dreiecksmatrix $L$ gilt
    $L_{ij}=\left(A_{ij}-\sum _{k=1}^{j-1}L_{ik}D_{kk}L_{jk}\right){D_{jj}}^{-1},\quad i>j$

### Beispiele

Ist $A$ eine 3x3-Matrix, dann sieht die Cholesky-Zerlegung wie folgt aus:
    ${\begin{aligned}A=LDL^{T}&={\begin{pmatrix}1&0&0\\L_{21}&1&0\\L_{31}&L_{32}&1\\\end{pmatrix}}{\begin{pmatrix}D_{11}&0&0\\0&D_{22}&0\\0&0&D_{33}\\\end{pmatrix}}{\begin{pmatrix}1&L_{21}&L_{31}\\0&1&L_{32}\\0&0&1\\\end{pmatrix}}\\&={\begin{pmatrix}D_{11}&L_{21}D_{11}&L_{31}D_{11}\\L_{21}D_{11}&L_{21}^{2}D_{11}+D_{22}&L_{31}L_{21}D_{11}+L_{32}D_{22}\\L_{31}D_{11}&L_{31}L_{21}D_{11}+L_{32}D_{22}&L_{31}^{2}D_{11}+L_{32}^{2}D_{22}+D_{33}\end{pmatrix}}\end{aligned}}$
    ${\begin{aligned}A=GG^{T}&={\begin{pmatrix}G_{11}&0&0\\G_{21}&G_{22}&0\\G_{31}&G_{32}&G_{33}\\\end{pmatrix}}{\begin{pmatrix}G_{11}&G_{21}&G_{31}\\0&G_{22}&G_{32}\\0&0&G_{33}\end{pmatrix}}\\&={\begin{pmatrix}G_{11}^{2}&G_{21}G_{11}&G_{31}G_{11}\\G_{21}G_{11}&G_{21}^{2}+G_{22}^{2}&G_{31}G_{21}+G_{32}G_{22}\\G_{31}G_{11}&G_{31}G_{21}+G_{32}G_{22}&G_{31}^{2}+G_{32}^{2}+G_{33}^{2}\end{pmatrix}}\end{aligned}}$
Mit konkreten Zahlen:
    ${\begin{aligned}A={\begin{pmatrix}4&12&-16\\12&37&-43\\-16&-43&98\\\end{pmatrix}}&={\begin{pmatrix}1&0&0\\3&1&0\\-4&5&1\\\end{pmatrix}}{\begin{pmatrix}4&0&0\\0&1&0\\0&0&9\\\end{pmatrix}}{\begin{pmatrix}1&3&-4\\0&1&5\\0&0&1\\\end{pmatrix}}=LDL^{T}\\&={\begin{pmatrix}2&0&0\\6&1&0\\-8&5&3\\\end{pmatrix}}{\begin{pmatrix}2&6&-8\\0&1&5\\0&0&3\\\end{pmatrix}}=GG^{T}\end{aligned}}$

## Berechnung

Setzt man $A=GG^{T}\in \mathbb {R} ^{n\times n}$, so erhält man für die Elemente von $A=\left(a_{ij}\right)_{ij}$:
    $a_{ij}=\sum \limits _{k=1}^{j}g_{ik}g_{jk}\quad i\geq j$
Dieser Zusammenhang führt direkt auf die folgenden Formeln für $G=\left(g_{ij}\right)_{ij}$:
    ${\begin{aligned}g_{ij}&={\begin{cases}0&\mathrm {f{\ddot {u}}r} \ i<j\\\left(a_{ii}-\sum \limits _{k=1}^{i-1}g_{ik}^{2}\right)^{1/2}&\mathrm {f{\ddot {u}}r} \ i=j\\\left(a_{ij}-\sum \limits _{k=1}^{j-1}g_{ik}g_{jk}\right)g_{jj}^{-1}&\mathrm {f{\ddot {u}}r} \ i>j\end{cases}}\\g_{i1}&={\begin{cases}\left(a_{11}\right)^{1/2}&\mathrm {f{\ddot {u}}r} \ i=1\\a_{i1}\left(g_{11}\right)^{-1}=a_{i1}\left(a_{11}\right)^{-1/2}&\mathrm {f{\ddot {u}}r} \ i>1\end{cases}}\end{aligned}}$
Bei diesem Algorithmus ist es wichtig, die Elemente in der richtigen Reihenfolge zu berechnen. Die Elemente werden spaltenweise berechnet und beginnend mit dem niedrigsten Zeilenindex.
Die Berechnung der Zerlegung $A=LDL^{T}$ erfolgt in analoger Art und Weise für $L=\left(l_{ij}\right)_{ij}$ und $D=\left(d_{ij}\right)_{ij}$:
    ${\begin{aligned}d_{ij}&={\begin{cases}0&\mathrm {f{\ddot {u}}r} \ i\neq j\\a_{ii}-\sum _{k=1}^{i-1}l_{ik}^{2}d_{kk}&\mathrm {f{\ddot {u}}r} \ i=j\end{cases}}\\l_{ij}&={\begin{cases}0&\mathrm {f{\ddot {u}}r} \ i<j\\1&\mathrm {f{\ddot {u}}r} \ i=j\\{\frac {1}{d_{jj}}}\left(a_{ij}-\sum _{k=1}^{j-1}l_{ik}l_{jk}d_{kk}\right)&\mathrm {f{\ddot {u}}r} \;i>j\end{cases}}\end{aligned}}$
Auch bei diesen Algorithmen ist es wichtig, die Reihenfolge der berechneten Elemente richtig zu wählen. Zuerst muss man zum Index $j=1,\dotsc ,n$ das Element $d_{jj}$ berechnen und anschließend die Spalte $j$ der Matrix $L$, also: $l_{ij}$ für $i=j+1,\dotsc ,n$.

### 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 $G$, sondern zwei Faktoren $L$ und $R$ berechnet werden müssen. Bei der Cholesky-Zerlegung treten ${\tfrac {1}{3}}\cdot n^{3}+O(n^{2})$ arithmetische Operationen auf, davon ${\tfrac {1}{6}}\cdot n^{3}$ Multiplikationen, ${\tfrac {1}{2}}\cdot n^{2}$ Divisionen und $n$ 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 $A$ in die Form $GG^{T}$ so aus:
Die Laufindexe $i,j=1,\ldots ,n$ im Pseudocode entsprechen der mathematischen Notierung von Elementen der Matrix $A=\left(a_{ij}\right)_{ij}$. Dabei ist $n$ die Anzahl der Zeilen und gleichzeitig die Anzahl der Spalten der Matrix $A$, Hilfsvariablen sind $k$ und Summe. Der Algorithmus arbeitet in situ: Er modifiziert die Matrix $A$ so, dass diese zur unteren Dreiecksmatrix $G$ wird. Es entsteht also für die Matrix $G$ kein neuer Speicherplatzbedarf.
Der obige Algorithmus bearbeitet nur die linke untere Dreiecksmatrix von $A=\left(a_{ij}\right)_{ij}$, die Elemente $a_{ij}$ für $i<j$ brauchen nicht mit Werten belegt zu werden, da die Matrix $A$ nach Voraussetzung symmetrisch ist, und wenn sie Werte enthalten, werden diese nicht verändert. Sucht man also nach der Cholesky-Zerlegung $G$ gemäß $A=GG^{T}$, so sind die Elemente $a_{ij}$ von $A$ oberhalb der Diagonalen noch auszunullen.