# Gaußsches Eliminationsverfahren

Das gaußsche Eliminationsverfahren oder einfach Gauß-Verfahren (nach Carl Friedrich Gauß) ist ein Algorithmus aus den mathematischen Teilgebieten der linearen Algebra und der Numerik. Es ist ein wichtiges Verfahren zum Lösen von linearen Gleichungssystemen und beruht darauf, dass Äquivalenzumformungen zwar das Gleichungssystem ändern, aber die Lösung erhalten. Dies erlaubt es, jedes eindeutig lösbare Gleichungssystem auf Stufenform zu bringen, an der die Lösung durch sukzessive Elimination der Unbekannten leicht ermittelt oder die Lösungsmenge abgelesen werden kann.
Die Anzahl der benötigten Operationen ist bei einer 
  
    
      
        n
        ×
        n
      
    
    {\displaystyle n\times n}
  
-Matrix von der Größenordnung 
  
    
      
        
          n
          
            3
          
        
      
    
    {\displaystyle n^{3}}
  
. In seiner Grundform ist der Algorithmus aus numerischer Sicht anfällig für Rundungsfehler. Durch eine Umstellung der Gleichungen, die Pivotisierung, wird das Verfahren stabil. Damit stellt das gaußsche Eliminationsverfahren das Standardlösungsverfahren für allgemeine lineare Gleichungssysteme dar und ist Teil aller wesentlichen Programmbibliotheken für numerische lineare Algebra wie NAG, IMSL und LAPACK.


## Erklärung
Ein lineares Gleichungssystem 
  
    
      
        A
        x
        =
        b
      
    
    {\displaystyle Ax=b}
  
 mit drei Gleichungen und drei Unbekannten 
  
    
      
        x
        =
        (
        
          x
          
            1
          
        
        ,
         
        
          x
          
            2
          
        
        ,
         
        
          x
          
            3
          
        
        
          )
          
            T
          
        
      
    
    {\displaystyle x=(x_{1},~x_{2},~x_{3})^{T}}
  
 und rechter Seite 
  
    
      
        b
        =
        (
        
          b
          
            1
          
        
        ,
         
        
          b
          
            2
          
        
        ,
         
        
          b
          
            3
          
        
        
          )
          
            T
          
        
      
    
    {\displaystyle b=(b_{1},~b_{2},~b_{3})^{T}}
  
 hat die Form:

  
    
      
        
          
            
              
                
                  a
                  
                    11
                  
                
                
                  x
                  
                    1
                  
                
              
              
                +
              
              
                
                  a
                  
                    12
                  
                
                
                  x
                  
                    2
                  
                
              
              
                +
              
              
                
                  a
                  
                    13
                  
                
                
                  x
                  
                    3
                  
                
              
              
                =
              
              
                
                  b
                  
                    1
                  
                
                ,
              
            
            
              
                
                  a
                  
                    21
                  
                
                
                  x
                  
                    1
                  
                
              
              
                +
              
              
                
                  a
                  
                    22
                  
                
                
                  x
                  
                    2
                  
                
              
              
                +
              
              
                
                  a
                  
                    23
                  
                
                
                  x
                  
                    3
                  
                
              
              
                =
              
              
                
                  b
                  
                    2
                  
                
                ,
              
            
            
              
                
                  a
                  
                    31
                  
                
                
                  x
                  
                    1
                  
                
              
              
                +
              
              
                
                  a
                  
                    32
                  
                
                
                  x
                  
                    2
                  
                
              
              
                +
              
              
                
                  a
                  
                    33
                  
                
                
                  x
                  
                    3
                  
                
              
              
                =
              
              
                
                  b
                  
                    3
                  
                
                .
              
            
          
        
      
    
    {\displaystyle {\begin{array}{rcrcrcl}a_{11}x_{1}&+&a_{12}x_{2}&+&a_{13}x_{3}&=&b_{1},\\a_{21}x_{1}&+&a_{22}x_{2}&+&a_{23}x_{3}&=&b_{2},\\a_{31}x_{1}&+&a_{32}x_{2}&+&a_{33}x_{3}&=&b_{3}.\end{array}}}
  

Der Algorithmus zur Berechnung der Variablen 
  
    
      
        
          x
          
            1
          
        
      
    
    {\displaystyle x_{1}}
  
, 
  
    
      
        
          x
          
            2
          
        
      
    
    {\displaystyle x_{2}}
  
 und 
  
    
      
        
          x
          
            3
          
        
      
    
    {\displaystyle x_{3}}
  
 lässt sich in zwei Etappen einteilen:

Vorwärtselimination,
Rückwärtseinsetzen (Rücksubstitution).
Im ersten Schritt wird das Gleichungssystem auf Stufenform gebracht. Stufenform heißt, dass pro Zeile mindestens eine Variable weniger auftritt, also mindestens eine Variable eliminiert wird. Im obigen Gleichungssystem würde man 
  
    
      
        
          a
          
            21
          
        
      
    
    {\displaystyle a_{21}}
  
, 
  
    
      
        
          a
          
            31
          
        
      
    
    {\displaystyle a_{31}}
  
 und 
  
    
      
        
          a
          
            32
          
        
      
    
    {\displaystyle a_{32}}
  
 eliminieren, in der dritten Zeile ist dann nur noch die Variable 
  
    
      
        
          x
          
            3
          
        
      
    
    {\displaystyle x_{3}}
  
:

  
    
      
        
          
            
              
                
                  
                    
                      
                        a
                        ~
                      
                    
                  
                  
                    11
                  
                
                
                  x
                  
                    1
                  
                
              
              
                +
              
              
                
                  
                    
                      
                        a
                        ~
                      
                    
                  
                  
                    12
                  
                
                
                  x
                  
                    2
                  
                
              
              
                +
              
              
                
                  
                    
                      
                        a
                        ~
                      
                    
                  
                  
                    13
                  
                
                
                  x
                  
                    3
                  
                
              
              
                =
              
              
                
                  
                    
                      
                        b
                        ~
                      
                    
                  
                  
                    1
                  
                
              
            
            
              
              
              
                
                  
                    
                      
                        a
                        ~
                      
                    
                  
                  
                    22
                  
                
                
                  x
                  
                    2
                  
                
              
              
                +
              
              
                
                  
                    
                      
                        a
                        ~
                      
                    
                  
                  
                    23
                  
                
                
                  x
                  
                    3
                  
                
              
              
                =
              
              
                
                  
                    
                      
                        b
                        ~
                      
                    
                  
                  
                    2
                  
                
              
            
            
              
              
              
              
              
                
                  
                    
                      
                        a
                        ~
                      
                    
                  
                  
                    33
                  
                
                
                  x
                  
                    3
                  
                
              
              
                =
              
              
                
                  
                    
                      
                        b
                        ~
                      
                    
                  
                  
                    3
                  
                
                .
              
            
          
        
      
    
    {\displaystyle {\begin{array}{rcrcrcl}{\tilde {a}}_{11}x_{1}&+&{\tilde {a}}_{12}x_{2}&+&{\tilde {a}}_{13}x_{3}&=&{\tilde {b}}_{1}\\&&{\tilde {a}}_{22}x_{2}&+&{\tilde {a}}_{23}x_{3}&=&{\tilde {b}}_{2}\\&&&&{\tilde {a}}_{33}x_{3}&=&{\tilde {b}}_{3}.\end{array}}}
  

Zum Erreichen der Stufenform werden elementare Zeilenumformungen benutzt, mit Hilfe derer das Gleichungssystem in ein neues transformiert wird, welches aber dieselbe Lösungsmenge besitzt. Ausreichend sind zwei Arten von elementaren Zeilenumformungen:

Eine Zeile oder das Vielfache einer Zeile zu einer anderen Zeile addieren.
Zwei Zeilen vertauschen.
Das Verfahren besteht dann darin, angefangen in der ersten Spalte mit Umformungen der ersten Art durch geschicktes Addieren von Vielfachen der ersten Zeile alle Einträge bis auf den ersten zu null zu machen. Dies wird dann in der so modifizierten zweiten Spalte fortgesetzt, wobei diesmal Vielfache der zweiten Zeile zu den folgenden Zeilen addiert werden und so weiter. Dieser Schritt funktioniert nur, wenn das Diagonalelement der aktuellen Spalte nicht null ist. In so einem Fall ist die zweite Art der Zeilenumformung nötig, da durch eine Zeilenvertauschung ein Nichtnulleintrag auf der Diagonale erzeugt werden kann. Mit Hilfe dieser beiden Arten von Umformungen ist es möglich, jedes lineare Gleichungssystem auf Stufenform zu bringen.
Eine weitere Art der elementaren Umformung ist das Vertauschen von Spalten. Diese wird zur Durchführung des Algorithmus nicht benötigt, aber manchmal in Computerprogrammen aus Stabilitätsgründen eingesetzt. Dabei wird die Position der Variablen im Gleichungssystem geändert. Beim Rechnen per Kopf ist manchmal noch die Multiplikation einer Zeile mit einer Zahl nützlich, etwa um komplizierte Brüche zu vermeiden. Dies verursacht zusätzlichen Rechenaufwand und ist deswegen in Computerprogrammen keine Option und ändert ferner die Determinante der Koeffizientenmatrix, was theoretische Nachteile mit sich bringt.
Im zweiten Schritt des Verfahrens, dem Rückwärtseinsetzen, werden ausgehend von der letzten Zeile, in der nur noch eine Variable auftaucht, die Variablen ausgerechnet und in die darüberliegende Zeile eingesetzt.
Eine Alternative hierzu ist der Gauß-Jordan-Algorithmus, bei dem nicht nur die unteren Teile eliminiert werden, sondern auch die oberen, so dass eine Diagonalform entsteht, bei der das Rückwärtseinsetzen entfällt.
Eine weitere Möglichkeit ist die Benutzung einer erweiterten Matrix mit drei Untermatrizen, in denen mit fortschreitender Rechnung die Permutationsmatrix für die Zeilenvertauschungen zwecks Pivotisierung und die Dreiecksmatrizen für die LR-Zerlegung entstehen, siehe Äquivalenztransformation / Gauß’sches Eliminationsverfahren.


### Beispiel
          x
          
            1
          
        
        +
        2
        
          x
          
            2
          
        
        +
        3
        
          x
          
            3
          
        
        =
        2
      
    
    {\displaystyle x_{1}+2x_{2}+3x_{3}=2}
  
, hier: 
  
    
      
        
          a
          
            11
          
        
        =
        1
      
    
    {\displaystyle a_{11}=1}
  
, 
  
    
      
        
          a
          
            12
          
        
        =
        2
      
    
    {\displaystyle a_{12}=2}
  
, 
  
    
      
        
          a
          
            13
          
        
        =
        3
      
    
    {\displaystyle a_{13}=3}
  
 und 
  
    
      
        
          b
          
            1
          
        
        =
        2
      
    
    {\displaystyle b_{1}=2}
  

  
    
      
        
          x
          
            1
          
        
        +
        
          x
          
            2
          
        
        +
        
          x
          
            3
          
        
        =
        2
      
    
    {\displaystyle x_{1}+x_{2}+x_{3}=2}
  

  
    
      
        3
        
          x
          
            1
          
        
        +
        3
        
          x
          
            2
          
        
        +
        
          x
          
            3
          
        
        =
        0
      
    
    {\displaystyle 3x_{1}+3x_{2}+x_{3}=0}
  

Zur besseren Übersichtlichkeit werden die Koeffizienten 
  
    
      
        
          a
          
            i
            j
          
        
      
    
    {\displaystyle a_{ij}}
  
 des linearen Gleichungssystems in die mit 
  
    
      
        b
      
    
    {\displaystyle b}
  
 erweiterte Koeffizientenmatrix geschrieben:

  
    
      
        
          (
          
            
              
                
                  1
                
                
                  2
                
                
                  3
                
                
                  2
                
              
              
                
                  1
                
                
                  1
                
                
                  1
                
                
                  2
                
              
              
                
                  3
                
                
                  3
                
                
                  1
                
                
                  0
                
              
            
          
          )
        
      
    
    {\displaystyle \left({\begin{array}{c c c | c}1&2&3&2\\1&1&1&2\\3&3&1&0\end{array}}\right)}
  

Jetzt wird so umgeformt, dass 
  
    
      
        
          a
          
            21
          
        
      
    
    {\displaystyle a_{21}}
  
 und 
  
    
      
        
          a
          
            31
          
        
      
    
    {\displaystyle a_{31}}
  
 null werden, indem man geeignete Vielfache der ersten Gleichung zur zweiten und dritten Gleichung addiert. Den entsprechenden Multiplikator erhält man, indem man das zu eliminierende Element (als erstes 
  
    
      
        
          a
          
            21
          
        
        =
        1
      
    
    {\displaystyle a_{21}=1}
  
) durch das Pivotelement 
  
    
      
        
          a
          
            11
          
        
      
    
    {\displaystyle a_{11}}
  
 teilt (für 
  
    
      
        
          a
          
            21
          
        
      
    
    {\displaystyle a_{21}}
  
also 
  
    
      
        
          
            
              1
              1
            
          
        
        =
        1
      
    
    {\displaystyle {\tfrac {1}{1}}=1}
  
 und für 
  
    
      
        
          a
          
            31
          
        
      
    
    {\displaystyle a_{31}}
  
 dann 
  
    
      
        
          
            
              3
              1
            
          
        
        =
        3
      
    
    {\displaystyle {\tfrac {3}{1}}=3}
  
). Da die beiden Elemente 
  
    
      
        
          a
          
            21
          
        
      
    
    {\displaystyle a_{21}}
  
 und 
  
    
      
        
          a
          
            31
          
        
      
    
    {\displaystyle a_{31}}
  
 null werden sollen, werden die beiden Multiplikatoren jeweils mit 
  
    
      
        (
        −
        1
        )
      
    
    {\displaystyle (-1)}
  
 multipliziert.
Zur zweiten Zeile wird also das 
  
    
      
        (
        −
        1
        )
      
    
    {\displaystyle (-1)}
  
-fache und zur dritten Zeile das 
  
    
      
        (
        −
        3
        )
      
    
    {\displaystyle (-3)}
  
-fache der ersten Zeile addiert. Damit 
  
    
      
        
          a
          
            32
          
        
      
    
    {\displaystyle a_{32}}
  
 null wird, wird im nächsten Schritt ein Vielfaches der neuen zweiten Zeile zur neuen dritten Zeile addiert, in diesem Fall das 
  
    
      
        (
        −
        3
        )
      
    
    {\displaystyle (-3)}
  
-fache:

Falls die Zahl, durch die zur Berechnung des Multiplikators dividiert wird (hier für die ersten beiden Zeilen die Zahl 
  
    
      
        1
      
    
    {\displaystyle 1}
  
, beim dritten Mal die Zahl 
  
    
      
        −
        1
      
    
    {\displaystyle -1}
  
), null ist, wird diese Zeile mit einer weiter unten liegenden vertauscht. Die letzte Zeile bedeutet

  
    
      
        −
        2
        
          x
          
            3
          
        
        =
        −
        6
      
    
    {\displaystyle -2x_{3}=-6}
  
.
Diese Gleichung ist einfach lösbar und liefert 
  
    
      
        
          x
          
            3
          
        
        =
        3
      
    
    {\displaystyle x_{3}=3}
  
. Damit ergibt sich für die zweite Zeile

  
    
      
        −
        1
        
          x
          
            2
          
        
        −
        2
        
          x
          
            3
          
        
        =
        0
      
    
    {\displaystyle -1x_{2}-2x_{3}=0}
  
, mit 
  
    
      
        
          x
          
            3
          
        
        =
        3
      
    
    {\displaystyle x_{3}=3}
  
 also 
  
    
      
        
          x
          
            2
          
        
        =
        −
        6
      
    
    {\displaystyle x_{2}=-6}
  

und weiter 
  
    
      
        
          x
          
            1
          
        
        =
        5
      
    
    {\displaystyle x_{1}=5}
  
. Damit sind alle Variablen berechnet:

  
    
      
        
          x
          
            1
          
        
        =
        5
      
    
    {\displaystyle x_{1}=5}
  
, 
  
    
      
        
          x
          
            2
          
        
        =
        −
        6
      
    
    {\displaystyle x_{2}=-6}
  
 und 
  
    
      
        
          x
          
            3
          
        
        =
        3
      
    
    {\displaystyle x_{3}=3}
  
.


### Kontrolle durch Zeilensumme
Die Umformungen können durch das Berechnen der Zeilensumme kontrolliert werden.

Hier wurde in der letzten Spalte die Summe aller Elemente der jeweiligen Zeile angeschrieben. Für die erste Zeile ist die Zeilensumme 
  
    
      
        1
        +
        2
        +
        3
        +
        2
        =
        8
      
    
    {\displaystyle 1+2+3+2=8}
  
. Da an der ersten Zeile keine Umformungen durchgeführt werden, ändert sich ihre Zeilensumme nicht. Bei der ersten Umformung dieses Gleichungssystems wird zur zweiten Zeile das 
  
    
      
        (
        −
        1
        )
      
    
    {\displaystyle (-1)}
  
-fache der ersten addiert. Macht man das auch für die Zeilensumme, so gilt 
  
    
      
        5
        +
        (
        −
        1
        )
        ⋅
        8
        =
        −
        3
      
    
    {\displaystyle 5+(-1)\cdot 8=-3}
  
. Dieses Ergebnis ist die Zeilensumme der umgeformten zweiten Zeile 
  
    
      
        −
        1
        −
        2
        +
        0
        =
        −
        3
      
    
    {\displaystyle -1-2+0=-3}
  
. Zur Überprüfung der Rechnungen kann man also die Umformungen an der Zeilensumme durchführen. Sind alle Rechnungen korrekt, muss sich die Zeilensumme der umgeformten Zeile ergeben.


## Pivotisierung
Das gaußsche Eliminationsverfahren ist im Allgemeinen nicht ohne Zeilenvertauschungen durchführbar. Ersetzt man im obigen Beispiel 
  
    
      
        
          a
          
            11
          
        
        =
        1
      
    
    {\displaystyle a_{11}=1}
  
 durch 
  
    
      
        
          a
          
            11
          
        
        =
        0
      
    
    {\displaystyle a_{11}=0}
  
, so kann der Algorithmus ohne Zeilenvertauschung gar nicht starten. Zur Abhilfe wählt man ein Element der ersten Spalte der Koeffizientenmatrix, das sogenannte Pivotelement, welches ungleich 0 ist.

Danach vertauscht man die erste Zeile mit der Pivotzeile:

Für die Rechnung per Hand ist es hilfreich, eine 1 oder minus 1 als Pivotelement zu wählen, damit im weiteren Verlauf des Verfahrens keine Brüche entstehen. Für die Berechnung mit Hilfe eines Computers ist es sinnvoll, das betragsgrößte Element zu wählen, um einen möglichst stabilen Algorithmus zu erhalten. Wählt man das Pivotelement in der aktuellen Spalte, spricht man von Spaltenpivotisierung. Alternativ kann man das Pivot auch in der aktuellen Zeile wählen.

In diesem Fall werden entsprechend die Spalten getauscht.

Beim Rückwärtseinsetzen ist dabei zu beachten, dass die Variablen ihre Position im Gleichungssystem geändert haben. Wählt man als Pivot das betragsgrößte Element der gesamten Restmatrix, so spricht man von vollständiger Pivotisierung beziehungsweise Totalpivotisierung. Dafür sind im Allgemeinen sowohl Zeilen- als auch Spaltenvertauschungen notwendig.
Pivotisierung ist ohne nennenswerten Zusatzaufwand durchführbar, wenn nicht die Einträge der Matrix und der rechten Seite vertauscht, sondern die Vertauschungen in einem Indexvektor gespeichert werden.


## LR-Zerlegung
### Einführendes Beispiel
Will man das Lösen eines quadratischen eindeutig lösbaren Gleichungssystems 
  
    
      
        A
        x
        =
        b
      
    
    {\displaystyle Ax=b}
  
 als Computerprogramm umsetzen, bietet es sich an, den Gaußalgorithmus als LR-Zerlegung (auch LU-Zerlegung oder Dreieckszerlegung genannt) zu interpretieren. Dies ist eine Zerlegung der regulären Matrix 
  
    
      
        A
      
    
    {\displaystyle A}
  
 in das Produkt einer linken unteren, normierten Dreiecksmatrix 
  
    
      
        L
      
    
    {\displaystyle L}
  
 (links, beziehungsweise Englisch „left“, oder auch „lower“) und einer rechten oberen Dreiecksmatrix 
  
    
      
        R
      
    
    {\displaystyle R}
  
 (rechts, bzw. Englisch „right“, oder auch „upper“, und dann mit 
  
    
      
        U
      
    
    {\displaystyle U}
  
 bezeichnet). Das folgende Beispiel zeigt dies:

  
    
      
        A
        =
        
          
            (
            
              
                
                  1
                
                
                  2
                
                
                  3
                
              
              
                
                  1
                
                
                  1
                
                
                  1
                
              
              
                
                  3
                
                
                  3
                
                
                  1
                
              
            
            )
          
        
        =
        
          
            (
            
              
                
                  1
                
                
                  0
                
                
                  0
                
              
              
                
                  1
                
                
                  1
                
                
                  0
                
              
              
                
                  3
                
                
                  3
                
                
                  1
                
              
            
            )
          
        
        ⋅
        
          
            (
            
              
                
                  1
                
                
                  2
                
                
                  3
                
              
              
                
                  0
                
                
                  −
                  1
                
                
                  −
                  2
                
              
              
                
                  0
                
                
                  0
                
                
                  −
                  2
                
              
            
            )
          
        
        =
        L
        ⋅
        R
      
    
    {\displaystyle A={\begin{pmatrix}1&2&3\\1&1&1\\3&3&1\\\end{pmatrix}}={\begin{pmatrix}1&0&0\\1&1&0\\3&3&1\\\end{pmatrix}}\cdot {\begin{pmatrix}1&2&3\\0&-1&-2\\0&0&-2\\\end{pmatrix}}=L\cdot R}
  

Dabei dient die Matrix 
  
    
      
        L
      
    
    {\displaystyle L}
  
 dem Speichern der benötigten Umformungsschritte, die Multiplikationen mit Frobeniusmatrizen entsprechen, und 
  
    
      
        R
      
    
    {\displaystyle R}
  
 hat die oben erwähnte Stufenform. Das zeigt die Existenz der Zerlegung. Um Eindeutigkeit zu erreichen, werden die Diagonalelemente der Matrix 
  
    
      
        L
      
    
    {\displaystyle L}
  
 als 1 festgelegt. Die Umformungsschritte zu speichern hat den Vorteil, dass für verschiedene „rechte Seiten“ 
  
    
      
        b
      
    
    {\displaystyle b}
  
 das Gleichungssystem effizient durch Vorwärts- und Rückwärtseinsetzen gelöst werden kann.
Die im Allgemeinen benötigten Zeilenvertauschungen können durch eine Permutationsmatrix 
  
    
      
        P
      
    
    {\displaystyle P}
  
 beschrieben werden:

  
    
      
        P
        ⋅
        A
        =
        L
        ⋅
        R
        .
      
    
    {\displaystyle P\cdot A=L\cdot R.}
  

Eine Permutationsmatrix 
  
    
      
        P
      
    
    {\displaystyle P}
  
 ist eine Matrix, die aus der Einheitsmatrix durch eine beliebige Anzahl an Zeilenvertauschungen entsteht und somit weiterhin nur aus Nullen und Einsen besteht.


### Existenzsatz
Für jede reguläre Matrix 
  
    
      
        A
        ∈
        
          
            R
          
          
            n
            ×
            n
          
        
      
    
    {\displaystyle A\in \mathbb {R} ^{n\times n}}
  
 existiert eine Permutationsmatrix 
  
    
      
        P
        ∈
        
          
            R
          
          
            n
            ×
            n
          
        
      
    
    {\displaystyle P\in \mathbb {R} ^{n\times n}}
  
, eine untere, normierte Dreiecksmatrix 
  
    
      
        L
        ∈
        
          
            R
          
          
            n
            ×
            n
          
        
      
    
    {\displaystyle L\in \mathbb {R} ^{n\times n}}
  
 und eine obere Dreiecksmatrix 
  
    
      
        R
        ∈
        
          
            R
          
          
            n
            ×
            n
          
        
      
    
    {\displaystyle R\in \mathbb {R} ^{n\times n}}
  
, sodass gilt:

  
    
      
        P
        ⋅
        A
        =
        L
        ⋅
        R
      
    
    {\displaystyle P\cdot A=L\cdot R}
  
.


## Algorithmus
Der Algorithmus zur Berechnung der Matrizen 
  
    
      
        P
        ,
        L
        ,
        R
      
    
    {\displaystyle P,L,R}
  
 für ein vorgegebenes 
  
    
      
        A
        ∈
        
          
            R
          
          
            n
            ×
            n
          
        
      
    
    {\displaystyle A\in \mathbb {R} ^{n\times n}}
  
 lautet wie folgt.
Es werden 
  
    
      
        n
      
    
    {\displaystyle n}
  
 Matrixumformungen vollzogen (
  
    
      
        k
        =
        0
        ,
        …
        ,
        n
        −
        1
      
    
    {\displaystyle k=0,\ldots ,n-1}
  
).
Dabei führt man die Umformungsmatrizen 
  
    
      
        
          A
          
            (
            k
            )
          
        
      
    
    {\displaystyle A^{(k)}}
  
 ein:

  
    
      
        
          A
          
            (
            k
            )
          
        
        =
        
          (
          
            a
            
              i
              j
            
            
              (
              k
              )
            
          
          )
        
        =
        
          
            {
            
              
                
                  A
                
                
                  ,
                  
                  k
                  =
                  0
                
              
              
                
                  (
                  I
                  −
                  
                    L
                    
                      (
                      k
                      )
                    
                  
                  )
                  
                    P
                    
                      (
                      k
                      −
                      1
                      )
                    
                  
                  
                    A
                    
                      (
                      k
                      −
                      1
                      )
                    
                  
                
                
                  ,
                  
                  k
                  =
                  1
                  ,
                  …
                  ,
                  n
                  −
                  1.
                
              
            
            
          
        
      
    
    {\displaystyle A^{(k)}=\left(a_{ij}^{(k)}\right)={\begin{cases}A&,\quad k=0\\(I-L^{(k)})P^{(k-1)}A^{(k-1)}&,\quad k=1,\ldots ,n-1.\end{cases}}}
  

Dabei wurden neue Hilfsmatrizen 
  
    
      
        
          L
          
            (
            k
            )
          
        
        ,
        
          P
          
            (
            k
            )
          
        
      
    
    {\displaystyle L^{(k)},P^{(k)}}
  
 eingeführt:

  
    
      
        
          
            
              
                
                  
                    (
                    
                      L
                      
                        (
                        k
                        )
                      
                    
                    )
                  
                  
                    i
                    j
                  
                
              
              
                
                =
                
                  
                    {
                    
                      
                        
                          
                            
                              
                                a
                                
                                  i
                                  k
                                
                                
                                  (
                                  k
                                  −
                                  1
                                  )
                                
                              
                              
                                a
                                
                                  k
                                  k
                                
                                
                                  (
                                  k
                                  −
                                  1
                                  )
                                
                              
                            
                          
                        
                        
                          ,
                          
                          j
                          =
                          k
                          
                          ∧
                          
                          i
                          >
                          k
                        
                      
                      
                        
                          0
                        
                        
                          ,
                          
                          
                            sonst
                          
                        
                      
                    
                    
                  
                
              
            
            
              
                
                  P
                  
                    (
                    k
                    )
                  
                
              
              
                
                =
                (
                
                  e
                  
                    1
                  
                
                ,
                …
                ,
                
                  e
                  
                    k
                    −
                    1
                  
                
                ,
                
                  e
                  
                    
                      
                        k
                        ^
                      
                    
                  
                
                ,
                
                  e
                  
                    k
                    +
                    1
                  
                
                ,
                …
                ,
                
                  e
                  
                    
                      
                        
                          k
                          ^
                        
                      
                    
                    −
                    1
                  
                
                ,
                
                  e
                  
                    k
                  
                
                ,
                
                  e
                  
                    
                      
                        
                          k
                          ^
                        
                      
                    
                    +
                    1
                  
                
                ,
                …
                ,
                
                  e
                  
                    n
                  
                
                )
              
            
            
              
                
                  
                    
                      k
                      ^
                    
                  
                
              
              
                
                ∈
                {
                k
                ,
                …
                ,
                n
                }
                
                
                  sodass gilt
                
                
                
                  |
                  
                    a
                    
                      
                        
                          
                            k
                            ^
                          
                        
                      
                      k
                    
                    
                      (
                      k
                      )
                    
                  
                  |
                
                =
                max
                
                  
                    {
                    
                      
                        |
                        
                          a
                          
                            i
                            k
                          
                          
                            (
                            k
                            )
                          
                        
                        |
                      
                      :
                      i
                      =
                      k
                      ,
                      …
                      ,
                      n
                    
                    }
                  
                
                .
              
            
          
        
      
    
    {\displaystyle {\begin{aligned}\left(L^{(k)}\right)_{ij}&={\begin{cases}{\frac {a_{ik}^{(k-1)}}{a_{kk}^{(k-1)}}}&,\quad j=k\;\wedge \;i>k\\0&,\quad {\text{sonst}}\end{cases}}\\P^{(k)}&=(e_{1},\ldots ,e_{k-1},e_{\hat {k}},e_{k+1},\ldots ,e_{{\hat {k}}-1},e_{k},e_{{\hat {k}}+1},\ldots ,e_{n})\\{\hat {k}}&\in \{k,\ldots ,n\}\quad {\text{sodass gilt}}\quad \left|a_{{\hat {k}}k}^{(k)}\right|=\max {\left\lbrace \left|a_{ik}^{(k)}\right|\colon i=k,\ldots ,n\right\rbrace }.\end{aligned}}}
  

Beachte:

  
    
      
        
          e
          
            i
          
        
        ∈
        
          
            R
          
          
            n
          
        
      
    
    {\displaystyle e_{i}\in \mathbb {R} ^{n}}
  
 stellt den 
  
    
      
        i
      
    
    {\displaystyle i}
  
-ten Basisvektor dar
in 
  
    
      
        
          P
          
            (
            k
            )
          
        
      
    
    {\displaystyle P^{(k)}}
  
 wurde nur eine Zeile der Einheitsmatrix mit einer anderen vertauscht

  
    
      
        
          
            
              k
              ^
            
          
        
      
    
    {\displaystyle {\hat {k}}}
  
 muss so gewählt werden, dass 
  
    
      
        
          a
          
            
              
                
                  k
                  ^
                
              
            
            k
          
          
            (
            k
            )
          
        
      
    
    {\displaystyle a_{{\hat {k}}k}^{(k)}}
  
 den betragsmäßig größten Wert für alle Elemente aus der Teilspalte 
  
    
      
        k
      
    
    {\displaystyle k}
  
 hat
Man benötigt noch weitere Hilfsmatrizen 
  
    
      
        
          Q
          
            (
            k
            )
          
        
      
    
    {\displaystyle Q^{(k)}}
  
:

  
    
      
        
          Q
          
            (
            k
            )
          
        
        =
        
          
            {
            
              
                
                  I
                
                
                  ,
                  
                  k
                  =
                  n
                
              
              
                
                  
                    P
                    
                      (
                      n
                      −
                      1
                      )
                    
                  
                  ⋅
                  …
                  ⋅
                  
                    P
                    
                      (
                      k
                      )
                    
                  
                
                
                  ,
                  
                  k
                  <
                  n
                  .
                
              
            
            
          
        
      
    
    {\displaystyle Q^{(k)}={\begin{cases}I&,\quad k=n\\P^{(n-1)}\cdot \ldots \cdot P^{(k)}&,\quad k<n.\end{cases}}}
  

Nun können die gewünschten Matrizen angegeben werden:

  
    
      
        
          
            
              
                R
              
              
                
                =
                
                  A
                  
                    (
                    n
                    )
                  
                
              
            
            
              
                P
              
              
                
                =
                
                  Q
                  
                    (
                    1
                    )
                  
                
              
            
            
              
                L
              
              
                
                =
                
                  (
                  
                    I
                    +
                    
                      ∑
                      
                        k
                        =
                        1
                      
                      
                        n
                        −
                        1
                      
                    
                    
                      Q
                      
                        (
                        k
                        +
                        1
                        )
                      
                    
                    
                      L
                      
                        (
                        k
                        )
                      
                    
                  
                  )
                
                .
              
            
          
        
      
    
    {\displaystyle {\begin{aligned}R&=A^{(n)}\\P&=Q^{(1)}\\L&=\left(I+\sum _{k=1}^{n-1}Q^{(k+1)}L^{(k)}\right).\end{aligned}}}
  


### Algorithmus in Pseudocode
#### Ohne Pivotisierung, L, R out-of-place
Der folgende Algorithmus führt eine LR-Zerlegung der Matrix A ohne Pivotisierung aus, indem er simultan L und R außerhalb (out-of-place) von A erzeugt:

   Eingabe: Matrix A

   // Initialisierung
   R := A
   L := E_n

   // n-1 Iterationsschritte
   for i := 1 to n-1
     // Zeilen der Restmatrix werden durchlaufen
     for k := i+1 to n
       // Berechnung von L
       L(k,i) := R(k,i) / R(i,i) // Achtung: vorher Prüfung auf Nullwerte notwendig
       // Spalten der Restmatrix werden durchlaufen
       for j := i to n
         // Berechnung von R
         R(k,j) := R(k,j) - L(k,i) * R(i,j)

   Ausgabe: Matrix L, Matrix R


#### Ohne Pivotisierung, L, R in-place
Alternativ ist (aus möglichem Interesse an Speichereffizienz) eine simultane Entwicklung von L und R direkt in A möglich (in-place), welcher durch folgenden Algorithmus beschrieben wird:

   Eingabe: Matrix A

   // n-1 Iterationsschritte
   for i := 1 to n-1
     // Zeilen der Restmatrix werden durchlaufen
     for k := i+1 to n
       // Berechnung von L
       A(k,i) := A(k,i) / A(i,i) // Achtung: vorher Prüfung auf Nullwerte notwendig
       // Spalten der Restmatrix werden durchlaufen
       for j := i+1 to n
         // Berechnung von R
         A(k,j) := A(k,j) - A(k,i) * A(i,j)

   Ausgabe: Matrix A (in modifizierter Form)


#### Mit Pivotisierung
Der folgende Algorithmus führt eine LR-Zerlegung der Matrix 
  
    
      
        A
      
    
    {\displaystyle A}
  
 mit Pivotisierung aus.
Er unterscheidet sich von den Algorithmen ohne Pivotisierung nur durch mögliche Zeilenvertauschung:

   Eingabe: Matrix 
  
    
      
        A
      
    
    {\displaystyle A}
  

   // n-1 Iterationsschritte
   for k := 1 to n-1
     // Pivotisierung
     // finde betragsmäßig größtes Element in k-ter Spalte
     
  
    
      
        
          
            
              k
              ^
            
          
        
      
    
    {\displaystyle {\hat {k}}}
  
 = k
     
  
    
      
        
          
            
              a
              ^
            
          
        
        =
        
          |
        
        
          a
          
            
              
                
                  k
                  ^
                
              
            
            k
          
          
            (
            k
            −
            1
            )
          
        
        
          |
        
      
    
    {\displaystyle {\hat {a}}=|a_{{\hat {k}}k}^{(k-1)}|}
  

     for i := k+1 to n
       if < 
  
    
      
        
          (
          
            
              |
            
            
              a
              
                i
                k
              
              
                (
                k
                −
                1
                )
              
            
            
              |
            
            >
            
              
                
                  a
                  ^
                
              
            
          
          )
        
      
    
    {\displaystyle \left(|a_{ik}^{(k-1)}|>{\hat {a}}\right)}
  
 >
         
  
    
      
        
          
            
              k
              ^
            
          
        
      
    
    {\displaystyle {\hat {k}}}
  
 = i
         
  
    
      
        
          
            
              a
              ^
            
          
        
        =
        
          |
        
        
          a
          
            i
            k
          
          
            (
            k
            −
            1
            )
          
        
        
          |
        
      
    
    {\displaystyle {\hat {a}}=|a_{ik}^{(k-1)}|}
  

     // vertausche Zeilen
     <Erstelle 
  
    
      
        
          P
          
            (
            k
            )
          
        
      
    
    {\displaystyle P^{(k)}}
  
>
     <Vertausche Zeilen k,
  
    
      
        
          
            
              k
              ^
            
          
        
      
    
    {\displaystyle {\hat {k}}}
  
>
     // Rest analog zu obigen Algorithmen
     <Rest 
  
    
      
        …
      
    
    {\displaystyle \ldots }
  
>
   
  
    
      
        P
        =
        
          P
          
            (
            n
            )
          
        
        ⋯
        
          P
          
            (
            1
            )
          
        
      
    
    {\displaystyle P=P^{(n)}\cdots P^{(1)}}
  

   Ausgabe: Matrix L, Matrix R, Matrix P


### Lösen eines linearen Gleichungssystems
Das ursprüngliche LGS 
  
    
      
        A
        x
        =
        b
      
    
    {\displaystyle Ax=b}
  
 wird mittels der LR-Zerlegung nun wie folgt vereinfacht:

  
    
      
        
          
            
              
                A
                x
                =
                b
                
              
              
                
                  und
                
                
                P
                A
                =
                L
                R
              
            
            
              
                ⇒
                P
                A
                x
              
              
                
                =
                P
                b
              
            
            
              
                ⇔
                L
                R
                x
              
              
                
                =
                P
                b
                .
              
            
          
        
      
    
    {\displaystyle {\begin{aligned}Ax=b\quad &{\text{und}}\quad PA=LR\\\Rightarrow PAx&=Pb\\\Leftrightarrow LRx&=Pb.\end{aligned}}}
  

Nun definiert man die folgenden Hilfsvariablen

  
    
      
        y
        :=
        R
        x
        
        
          und
        
        
        
          
            
              b
              ^
            
          
        
        :=
        P
        b
        .
      
    
    {\displaystyle y:=Rx\quad {\text{und}}\quad {\hat {b}}:=Pb.}
  

Folglich hat sich das LGS 
  
    
      
        A
        x
        =
        b
      
    
    {\displaystyle Ax=b}
  
 in eine vereinfachte Struktur gewandelt:

  
    
      
        L
        y
        =
        
          
            
              b
              ^
            
          
        
        
        
          und
        
        
        R
        x
        =
        y
        .
      
    
    {\displaystyle Ly={\hat {b}}\quad {\text{und}}\quad Rx=y.}
  

Diese können leicht durch Vorwärts- beziehungsweise Rückwärtseinsetzen gelöst werden.


#### Vorwärtseinsetzen
Beim Vorwärtseinsetzen berechnet man eine Lösung 
  
    
      
        y
      
    
    {\displaystyle y}
  
 des linearen Gleichungssystems 
  
    
      
        L
        y
        =
        b
      
    
    {\displaystyle Ly=b}
  
, beziehungsweise bei Rechnung mit Pivotisierung von 
  
    
      
        L
        y
        =
        P
        b
        =
        
          
            
              b
              ^
            
          
        
      
    
    {\displaystyle Ly=Pb={\hat {b}}}
  
. Diese steht über die Gleichung 
  
    
      
        y
        =
        R
        x
      
    
    {\displaystyle y=Rx}
  
 mit der Lösung 
  
    
      
        x
      
    
    {\displaystyle x}
  
 des ursprünglichen Gleichungssystems in Beziehung.
Ausgeschrieben hat das Gleichungssystem 
  
    
      
        L
        y
        =
        b
      
    
    {\displaystyle Ly=b}
  
 folgende Gestalt:

  
    
      
        
          
            (
            
              
                
                  
                    l
                    
                      11
                    
                  
                
                
                  0
                
                
                  0
                
                
                  …
                
                
                  0
                
              
              
                
                  
                    l
                    
                      21
                    
                  
                
                
                  
                    l
                    
                      22
                    
                  
                
                
                  0
                
                
                  …
                
                
                  0
                
              
              
                
                  
                    l
                    
                      31
                    
                  
                
                
                  
                    l
                    
                      32
                    
                  
                
                
                  
                    l
                    
                      33
                    
                  
                
                
                  …
                
                
                  0
                
              
              
                
                  ⋮
                
                
                  ⋮
                
                
                  ⋮
                
                
                  ⋱
                
                
                  0
                
              
              
                
                  
                    l
                    
                      n
                      1
                    
                  
                
                
                  
                    l
                    
                      n
                      2
                    
                  
                
                
                  
                    l
                    
                      n
                      3
                    
                  
                
                
                  …
                
                
                  
                    l
                    
                      n
                      ,
                      n
                    
                  
                
              
            
            )
          
        
        ⋅
        
          
            (
            
              
                
                  
                    y
                    
                      1
                    
                  
                
              
              
                
                  
                    y
                    
                      2
                    
                  
                
              
              
                
                  
                    y
                    
                      3
                    
                  
                
              
              
                
                  ⋮
                
              
              
                
                  
                    y
                    
                      n
                    
                  
                
              
            
            )
          
        
        =
        
          
            (
            
              
                
                  
                    b
                    
                      1
                    
                  
                
              
              
                
                  
                    b
                    
                      2
                    
                  
                
              
              
                
                  
                    b
                    
                      3
                    
                  
                
              
              
                
                  ⋮
                
              
              
                
                  
                    b
                    
                      n
                    
                  
                
              
            
            )
          
        
      
    
    {\displaystyle {\begin{pmatrix}l_{11}&0&0&\ldots &0\\l_{21}&l_{22}&0&\ldots &0\\l_{31}&l_{32}&l_{33}&\ldots &0\\\vdots &\vdots &\vdots &\ddots &0\\l_{n1}&l_{n2}&l_{n3}&\ldots &l_{n,n}\end{pmatrix}}\cdot {\begin{pmatrix}y_{1}\\y_{2}\\y_{3}\\\vdots \\y_{n}\end{pmatrix}}={\begin{pmatrix}b_{1}\\b_{2}\\b_{3}\\\vdots \\b_{n}\end{pmatrix}}}
  

Für die Komponenten 
  
    
      
        
          y
          
            i
          
        
      
    
    {\displaystyle y_{i}}
  
 gilt dann die folgende Formel:

  
    
      
        
          y
          
            i
          
        
        =
        
          
            1
            
              l
              
                i
                i
              
            
          
        
        
          (
          
            
              b
              
                i
              
            
            −
            
              ∑
              
                k
                =
                1
              
              
                i
                −
                1
              
            
            
              l
              
                i
                k
              
            
            ⋅
            
              y
              
                k
              
            
          
          )
        
        .
      
    
    {\displaystyle y_{i}={\frac {1}{l_{ii}}}\left(b_{i}-\sum _{k=1}^{i-1}l_{ik}\cdot y_{k}\right).}
  

Beginnend mit 
  
    
      
        
          y
          
            1
          
        
        =
        
          
            
              b
              
                1
              
            
            
              l
              
                11
              
            
          
        
      
    
    {\displaystyle y_{1}={\frac {b_{1}}{l_{11}}}}
  
 können nacheinander 
  
    
      
        
          y
          
            1
          
        
        ,
        
          y
          
            2
          
        
        ,
        …
        ,
        
          y
          
            n
          
        
      
    
    {\displaystyle y_{1},y_{2},\ldots ,y_{n}}
  
 ausgerechnet werden, indem jeweils die schon bekannten 
  
    
      
        
          y
          
            i
          
        
      
    
    {\displaystyle y_{i}}
  
 eingesetzt werden.


#### Rückwärtseinsetzen
Beim Rückwärtseinsetzen berechnet man die Lösung 
  
    
      
        x
      
    
    {\displaystyle x}
  
 des ursprünglichen Gleichungssystems, indem man 
  
    
      
        R
        x
        =
        y
      
    
    {\displaystyle Rx=y}
  
 ähnlich wie beim Vorwärtseinsetzen löst. Der Unterschied besteht darin, dass man bei 
  
    
      
        
          x
          
            n
          
        
        =
        
          
            
              y
              
                n
              
            
            
              r
              
                n
                n
              
            
          
        
      
    
    {\displaystyle x_{n}={\frac {y_{n}}{r_{nn}}}}
  
 beginnt und dann nacheinander die Werte von 
  
    
      
        
          x
          
            n
            −
            1
          
        
        ,
        
          x
          
            n
            −
            2
          
        
        ,
        …
        ,
        
          x
          
            1
          
        
      
    
    {\displaystyle x_{n-1},x_{n-2},\ldots ,x_{1}}
  
 berechnet. Die entsprechende Formel lautet

  
    
      
        
          x
          
            i
          
        
        =
        
          
            1
            
              r
              
                i
                i
              
            
          
        
        
          (
          
            
              y
              
                i
              
            
            −
            
              ∑
              
                k
                =
                i
                +
                1
              
              
                n
              
            
            
              r
              
                i
                k
              
            
            ⋅
            
              x
              
                k
              
            
          
          )
        
        .
      
    
    {\displaystyle x_{i}={\frac {1}{r_{ii}}}\left(y_{i}-\sum _{k=i+1}^{n}r_{ik}\cdot x_{k}\right).}
  


### Unvollständige Zerlegungen
Die LR-Zerlegung hat den Nachteil, dass sie auch bei dünnbesetzten Matrizen häufig vollbesetzt ist. Werden dann statt aller Einträge nur jene in einem vorgegebenen Besetzungsmuster berechnet, spricht man von einer unvollständigen LU-Zerlegung. Diese liefert eine günstige Approximation an die Matrix 
  
    
      
        A
      
    
    {\displaystyle A}
  
 und kann somit als Vorkonditionierer bei der iterativen Lösung linearer Gleichungssysteme eingesetzt werden. Im Fall symmetrisch positiv definiter Matrizen spricht man von einer unvollständigen Cholesky-Zerlegung.


## Eigenschaften des Verfahrens
### Rechenaufwand und Speicherplatzbedarf
Die Anzahl arithmetischer Operationen für die LR-Zerlegung ist bei einer 
  
    
      
        n
        ×
        n
      
    
    {\displaystyle n\times n}
  
-Matrix circa 
  
    
      
        
          
            
              2
              3
            
          
        
        
          n
          
            3
          
        
      
    
    {\displaystyle {\tfrac {2}{3}}n^{3}}
  
. Der Aufwand für das Vorwärts- und Rückwärtseinsetzen ist quadratisch (
  
    
      
        
          
            O
          
        
        (
        
          n
          
            2
          
        
        )
      
    
    {\displaystyle {\mathcal {O}}(n^{2})}
  
) und daher insgesamt vernachlässigbar. Das gaußsche Eliminationsverfahren ist ein schnelles direktes Verfahren zur Lösung linearer Gleichungssysteme, für eine QR-Zerlegung benötigt man mindestens doppelt so viele Rechenoperationen. Dennoch sollte der Algorithmus nur für Gleichungssysteme kleiner bis mittlerer Dimension verwendet werden (bis etwa 
  
    
      
        n
        =
        10000
      
    
    {\displaystyle n=10000}
  
). Für Matrizen höherer Dimension sind iterative Verfahren oft besser. Diese nähern die Lösung schrittweise an und benötigen in jedem Schritt für eine vollbesetzte Matrix 
  
    
      
        
          
            O
          
        
        (
        
          n
          
            2
          
        
        )
      
    
    {\displaystyle {\mathcal {O}}(n^{2})}
  
 Rechenoperationen. Die Konvergenzgeschwindigkeit solcher Verfahren hängt stark von den Eigenschaften der Matrix ab und man kann die konkret benötigte Rechenzeit nur schwer vorhersagen.
Die Rechnung kann auf dem Speicher der Matrix 
  
    
      
        A
      
    
    {\displaystyle A}
  
 durchgeführt werden, so dass außer der Speicherung von 
  
    
      
        A
      
    
    {\displaystyle A}
  
 selbst kein zusätzlicher Speicherbedarf entsteht. Für eine vollbesetzte Matrix der Dimension 
  
    
      
        n
        =
        1000
      
    
    {\displaystyle n=1000}
  
 müsste man eine Million Koeffizienten abspeichern. Dies entspricht im IEEE-754-Format double in etwa 8 Megabyte. Bei iterativen Verfahren, die mit Matrix-Vektor-Multiplikationen arbeiten, kann allerdings eine explizite Speicherung von 
  
    
      
        A
      
    
    {\displaystyle A}
  
 selbst nicht nötig sein, so dass diese Verfahren gegebenenfalls vorzuziehen sind.
Für Spezialfälle lassen sich Aufwand und Speicherplatz deutlich reduzieren, indem spezielle Eigenschaften der Matrix und ihrer LR-Zerlegung ausgenutzt werden können. So benötigt die Cholesky-Zerlegung für symmetrische positiv definite Matrizen nur die Hälfte an Rechenoperationen und Speicher. Ein anderes Beispiel sind Bandmatrizen mit fester Bandbreite 
  
    
      
        m
      
    
    {\displaystyle m}
  
, da hier die LR-Zerlegung die Bandstruktur erhält und sich so der Aufwand auf 
  
    
      
        
          
            O
          
        
        (
        n
        
          m
          
            2
          
        
        )
      
    
    {\displaystyle {\mathcal {O}}(nm^{2})}
  
 reduziert. Für wenige spezielle dünnbesetzte Matrizen ist es möglich, die Besetzungsstruktur auszunutzen, so dass die LR-Zerlegung ebenfalls dünnbesetzt bleibt. Beides geht einher mit einem verringerten Speicherbedarf.


### Genauigkeit
#### Voraussetzungen der Genauigkeit – Verfahren
Damit die Berechnung von 
  
    
      
        x
      
    
    {\displaystyle x}
  
 ausreichend genau ist, darf zum einen die Kondition der Matrix nicht zu schlecht und die verwendete Maschinengenauigkeit nicht zu gering sein. Zum anderen benötigt man ein Lösungsverfahren, das ausreichend stabil ist. Ein guter Algorithmus zeichnet sich also durch eine hohe Stabilität aus.
Im Allgemeinen ist das Verfahren ohne Pivotisierung instabil. Daher wird meist Spaltenpivotisierung zur Lösung verwendet. Damit ist das Verfahren für die meisten Matrizen stabil durchführbar, wie insbesondere durch die Arbeiten von James H. Wilkinson nach dem Zweiten Weltkrieg klar wurde. Es lassen sich allerdings Matrizen angeben, für welche die Stabilitätskonstante exponentiell mit der Dimension der Matrix wächst. Mit vollständiger Pivotisierung lässt sich die Stabilität noch verbessern, allerdings steigt dann auch der Aufwand für die Pivotsuche auf 
  
    
      
        
          
            O
          
        
        (
        
          n
          
            3
          
        
        )
      
    
    {\displaystyle {\mathcal {O}}(n^{3})}
  
, daher wird diese selten verwendet. Generell bessere Stabilität haben QR-Zerlegungen, die allerdings auch aufwändiger zu berechnen sind.
Bei strikt diagonaldominanten oder positiv definiten Matrizen (siehe auch Cholesky-Zerlegung) ist das Gauß-Verfahren stabil und ohne Pivotisierung durchführbar, es treten also keine Nullen auf der Diagonale auf.


#### Nachiteration
Ein praktischer Ansatz zum Ausgleich dieser Rechenungenauigkeiten besteht aus einer Nachiteration mittels Splitting-Verfahren, da über die LR-Zerlegung eine gute Näherung der Matrix A zur Verfügung steht, die leicht invertierbar ist. Dazu startet man mit der berechneten Lösung 
  
    
      
        
          x
          
            0
          
        
        =
        x
      
    
    {\displaystyle x_{0}=x}
  
 und berechnet in jedem Schritt das Residuum

  
    
      
        
          r
          
            k
          
        
        =
        b
        −
        A
        
          x
          
            k
          
        
        .
      
    
    {\displaystyle r_{k}=b-Ax_{k}.}
  

Danach berechnet man unter Verwendung der LR-Zerlegung die Lösung 
  
    
      
        
          z
          
            k
          
        
      
    
    {\displaystyle z_{k}}
  
 des Gleichungssystems

  
    
      
        A
        
          z
          
            k
          
        
        =
        
          r
          
            k
          
        
      
    
    {\displaystyle Az_{k}=r_{k}}
  

und setzt

  
    
      
        
          x
          
            k
            +
            1
          
        
        =
        
          x
          
            k
          
        
        +
        
          z
          
            k
          
        
        .
      
    
    {\displaystyle x_{k+1}=x_{k}+z_{k}.}
  

Da es meistens nur um kleine Korrekturen geht, reichen oft wenige Iterationsschritte. Im Allgemeinen ist für die Berechnung des Residuums 
  
    
      
        
          r
          
            k
          
        
      
    
    {\displaystyle r_{k}}
  
 allerdings eine höhere Genauigkeit notwendig. Reicht auch die Nachiteration nicht aus, um auf die gewünschte Genauigkeit zu kommen, bleibt nur die Wahl eines anderen Verfahrens oder eine Umformung des Problems, um eine günstigere Matrix zu erhalten, etwa eine mit kleinerer Kondition.
Die Nachiteration wird beispielsweise in der LAPACK-Routine DSGESV angewandt. In dieser Routine wird die LR-Zerlegung in einfacher Genauigkeit ermittelt und die doppelte Genauigkeit der Lösung durch Nachiteration mit doppeltgenau berechnetem Residuum erreicht.


## Das Gauß-Verfahren als theoretisches Hilfsmittel
Das Gauß-Verfahren ist neben seiner Bedeutung zur numerischen Behandlung von eindeutig lösbaren linearen Gleichungssystemen auch ein wichtiges Hilfsmittel in der theoretischen linearen Algebra.


### Aussagen zur Lösbarkeit des linearen Gleichungssystems
Ein lineares Gleichungssystem kann keine Lösung (unlösbar), genau eine Lösung (eindeutig lösbar) oder unendlich viele Lösungen haben. Bei Verwendung von vollständiger Pivotisierung bringt das Gauß-Verfahren jede Koeffizientenmatrix auf eine reduzierte Stufenform. Der Rang der (ursprünglich gegebenen) Koeffizientenmatrix ist gleich der Anzahl der Nichtnullzeilen der in reduzierte Stufenform gebrachten Matrix. Die Lösbarkeit ergibt sich dann aus dem Zusammenspiel mit der rechten Seite: Gehören zu den Nullzeilen der in reduzierte Stufenform gebrachten Matrix Nichtnulleinträge der rechten Seite, ist das Gleichungssystem unlösbar, ansonsten lösbar. Die Anzahl der freien Parameter in der Lösungsmenge ist gleich der Anzahl der Unbekannten minus dem Rang. Das alles ergibt sich aus dem Satz von Kronecker-Capelli.

Beispiel

  
    
      
        
          
            
              
                x
              
              
                +
              
              
                4
                y
              
              
                =
              
              
                8
                ,
              
            
            
              
                3
                x
              
              
                +
              
              
                12
                y
              
              
                =
              
              
                24.
              
            
          
        
      
    
    {\displaystyle {\begin{array}{rcrcl}x&+&4y&=&8,\\3x&+&12y&=&24.\end{array}}}
  

Da die zweite Gleichung ein Vielfaches der ersten Gleichung ist, hat das Gleichungssystem unendlich viele Lösungen. Bei der Elimination von 
  
    
      
        x
      
    
    {\displaystyle x}
  
 in der zweiten Gleichung verschwindet diese vollständig, übrig bleibt nur die erste Gleichung. Löst man diese nach 
  
    
      
        x
      
    
    {\displaystyle x}
  
 auf, kann man die Lösungsmenge in Abhängigkeit von 
  
    
      
        y
      
    
    {\displaystyle y}
  
, der dann die Rolle eines freien Parameters spielt, angeben:

  
    
      
        
          
            
              
                x
              
              
                =
              
              
                8
                −
                4
                y
              
            
            
              
                L
              
              
                =
              
              
                {
                (
                8
                −
                4
                y
                ,
                y
                
                  )
                  
                    T
                  
                
                
                  |
                
                y
                }
              
            
          
        
      
    
    {\displaystyle {\begin{array}{rcl}x&=&8-4y\\L&=&\{(8-4y,y)^{T}|y\}\end{array}}}
  


### Determinante
Ferner liefert das Gauß-Verfahren eine Möglichkeit, die Determinante einer Matrix zu berechnen. Da die elementaren Zeilenumformungen die Determinante 1 haben, bis auf Zeilenvertauschungen, deren Determinante −1 ist (dies ändert jedoch nur das Vorzeichen und lässt sich daher leicht korrigieren), hat die sich ergebende obere Dreiecksmatrix dieselbe Determinante wie die ursprüngliche Matrix, kann aber wesentlich einfacher berechnet werden: Sie ist das Produkt der Diagonalelemente.


### Berechnung der Inversen
Eine weitere Möglichkeit der Anwendung des Gauß-Verfahrens besteht in der Berechnung der Inversen der Matrix. Hierzu wird der Algorithmus auf ein von rechts durch eine Einheitsmatrix erweitertes Schema angewandt und nach der ersten Phase fortgesetzt, bis links eine Einheitsmatrix erreicht ist. Im rechten Teil steht dann die inverse Matrix. Dieses Verfahren ist numerisch nicht zu empfehlen und die explizite Berechnung der Inversen kann meist umgangen werden.


## Geschichte
Bereits im chinesischen Mathematikbuch Jiu Zhang Suanshu (dt. Neun Bücher arithmetischer Technik), das zwischen 200 vor und 100 nach Christus verfasst wurde, findet sich eine beispielhafte, aber klare Demonstration des Algorithmus anhand der Lösung eines Systems mit drei Unbekannten. 263 veröffentlichte Liu Hui einen umfassenden Kommentar zu dem Buch, der daraufhin in das Textkorpus einging. Das Jiu Zhang Suanshu war bis ins 16. Jahrhundert eine wesentliche Quelle der mathematischen Bildung in China und umliegenden Ländern.
In Europa wurde erst 1759 von Joseph-Louis Lagrange ein Verfahren publiziert, das die grundlegenden Elemente enthält. Carl Friedrich Gauß beschäftigte sich im Rahmen seiner Entwicklung und Anwendung der Methode der kleinsten Quadrate mit linearen Gleichungssystemen, den dort auftretenden Normalgleichungen. Seine erste Veröffentlichung zu dem Thema stammt von 1810 (Disquisitio de elementis ellipticis Palladis), allerdings erwähnt er bereits 1798 in seinen Tagebüchern kryptisch, er habe das Problem der Elimination gelöst. Sicher ist, dass er das Verfahren zur Berechnung der Bahn des Asteroiden Pallas zwischen 1803 und 1809 nutzte. In den 1820ern beschrieb er das erste Mal etwas wie eine LR-Zerlegung. Das Eliminationsverfahren wurde in der Folgezeit vor allem in der Geodäsie eingesetzt (siehe bei Gauß’ Leistungen), und so ist der zweite Namensgeber des Gauß-Jordan-Verfahrens nicht etwa der Mathematiker Camille Jordan, sondern der Geodät Wilhelm Jordan.
Im und nach dem Zweiten Weltkrieg gewann die Untersuchung numerischer Verfahren an Bedeutung und das Gauß-Verfahren wurde nun auch vermehrt auf Probleme unabhängig von der Methode der kleinsten Quadrate angewandt. John von Neumann und Alan Turing definierten die LR-Zerlegung in der heute üblichen Form und untersuchten das Phänomen der Rundungsfehler. Befriedigend gelöst wurden diese Fragen erst in den 1960ern durch James Hardy Wilkinson, der zeigte, dass das Verfahren mit Pivotisierung rückwärtsstabil ist.


## Literatur
Gerd Fischer, Boris Springborn: Lineare Algebra. 19. Auflage. Springer, 2020, ISBN 978-3-662-61644-4.
Gene Golub, Charles van Loan: Matrix computations. 3. Auflage. Johns Hopkins University Press, Baltimore 1996, ISBN 0-8018-5414-8 (englisch). 
Andrzej Kielbasiński, Hubert Schwetlick: Numerische lineare Algebra. Eine computerorientierte Einführung. Deutscher Verlag der Wissenschaften, Berlin 1988, ISBN 3-326-00194-0.
Andreas Meister: Numerik linearer Gleichungssysteme. Eine Einführung in moderne Verfahren. 2. Auflage. Vieweg, Wiesbaden 2005, ISBN 3-528-13135-7.
Martin Hermann: Numerische Mathematik, Band 1: Algebraische Probleme. 4., überarbeitete und erweiterte Auflage. Walter de Gruyter Verlag, Berlin/Boston 2020. ISBN 978-3-11-065665-7.
Hans Rudolf Schwarz, Norbert Köckler: Numerische Mathematik. 7. Auflage. Vieweg+Teubner, Wiesbaden 2009, ISBN 978-3-8348-0683-3.


## Weblinks
Onlinetool Ganzzahliges Lösen linearer Gleichungssysteme nach Gauß-Jordan
Interaktives didaktisches Onlinetool (Erläuterungen auf Englisch)
Artikel zur Geschichte von Matrizen und Determinanten bei MacTutor (englisch)
Pete Stewart zur Geschichte des Verfahrens (englisch)


## Einzelnachweise