home

LRP-Zerlegung

1. Lösung linearer Gleichungen mit LR-Zerlegung

2. Ein einfacher rekursiver Algorithmus mit einem Schönheitsfehler

3. Umformung in eine Iteration

4. Beseitigung des Schönheitsfehlers: LRP-Zerlegung

4. Beseitigung des Schönheitsfehlers: LRP-Zerlegung

Wir kommen nun auf das Problem der Division durch Null (vom Ende des 1. Abschnitts) zurück. Bei der folgenden Matrix versagt unser Algorithmus, obwohl sie invertierbar ist:

A = \begin{pmatrix} 0 & 5 & 2 \cr 2 & 6 & 4 \cr 2 & 1 & 1 \end{pmatrix}

Wir können die Division durch Null hier verhindern, indem wir die ersten beiden Zeilen der Matrix vertauschen:

A' = \begin{pmatrix} 2 & 6 & 4 \cr 0 & 5 & 2 \cr 2 & 1 & 1 \end{pmatrix}

Die Vertauschung der der ersten beiden Zeilen lässt sich erreichen, indem man A von links mit der entsprechenden Permutationsmatrix multipliziert. Diese entsteht aus der Einheitsmatrix durch Vertauschung der der entsprechenden Zeilen:

A' = \begin{pmatrix} 2 & 6 & 4 \cr 0 & 5 & 2 \cr 2 & 1 & 1 \end{pmatrix} =\begin{pmatrix} 0 & 1 & 0 \cr 1 & 0 & 0 \cr 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} 0 & 5 & 2 \cr 2 & 6 & 4 \cr 2 & 1 & 1 \end{pmatrix}

In einer invertierbaren Matrix lassen sich die Zeilen immer so permutieren, dass unser Algorithmus anschließend erfolgreich ist. Es gilt nämlich:

Satz

Zu jeder invertierbaren Matrix A gibt es

so dass PA = LR.

Wir können das lineare Gleichungssystem auf beiden Seiten mit P multiplizieren, und dann mit der Zerlegung der der permutierten Matrix arbeiten:

A\textbf x = \textbf b \quad \Rightarrow\quad \green{PA}\textbf x = P\textbf b \quad \Rightarrow\quad \green{LR}\textbf x = P\textbf b

Dieses Gleichungssystem lässt sich in zwei Schritten lösen:

1. Schritt:

Mit dem Ansatz \textbf x = \textbf y wird die Gleichung zu L\textbf y = P\textbf b. Diese Gleichung nach \textbf y auflösen!

2. Schritt:

Mit dem nun bekannten \textbf y kann der Ansatz R\textbf x = \textbf y nach x aufgelöst werden.

In der nun folgenden Implementierung vertauschen wir Zeilen nicht nur, um Divisionen durch Null zu verhindern, sondern bringen immer das dem Betrage nach größte Element an die Divisionsposition. Damit erhöht sich die numerische Stabilität beim Rechnen mit Gleitkommazahlen.

Die Funktion lup ist in mathGUIde bereits eingebaut, allerdings nicht als globale Funktion sondern als Matrix-Methode. Sie wird demnach mit A.lup() statt lup(A) aufgerufen.

home