Dieser Artikel ist ein Teilnehmer am Schreibwettbewerb

„Numerische lineare Algebra“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
mehr refs
Zeile 30: Zeile 30:
=== Ausnutzung von Strukturen ===
=== Ausnutzung von Strukturen ===
[[Datei:Finite element sparse matrix.png|mini|Besetzungsstruktur einer dünnbesetzten Matrix, wie sie bei der Finite-Elemente-Methode auftritt; die kleinen schwarzen Quadrate stehen für die Matrixeinträge ungleich null]]
[[Datei:Finite element sparse matrix.png|mini|Besetzungsstruktur einer dünnbesetzten Matrix, wie sie bei der Finite-Elemente-Methode auftritt; die kleinen schwarzen Quadrate stehen für die Matrixeinträge ungleich null]]
Modelle und Fragestellungen in Wissenschaft und Technik können auf Probleme der linearen Algebra mit Millionen von Gleichungen führen. Die Einträge einer Matrix mit einer Million Zeilen und Spalten benötigen im [[Doppelte Genauigkeit|''double-precision'']]-Format 8 Terabyte Speicherplatz. Das zeigt, dass bereits die Bereitstellung der Daten eines Problems, geschweige denn seine Lösung, eine Herausforderung darstellen, wenn nicht auch seine spezielle Struktur berücksichtigt wird. Glücklicherweise führen viele wichtige Anwendungen – wie beispielsweise die Diskretisierung partieller Differentialgleichungen mit der [[Finite-Elemente-Methode]] – zwar auf sehr viele Gleichungen, in jeder einzelnen Gleichung kommen jedoch nur relativ wenige Unbekannte vor. Für die zugehörige Matrix bedeutet das, dass es in jeder Zeile nur wenige Einträge ungleich null gibt, die Matrix ist wie man sagt [[Dünnbesetzte Matrix|dünnbesetzt]]. Es gibt zahlreiche Methoden, um solche Matrizen effizient abzuspeichern und ihre Struktur auszunutzen. Verfahren, in denen Matrizen nur in Matrix-Vektor-Produkten vorkommen, sind für dünnbesetzte Probleme besonders gut geeignet, da dabei alle Multiplikationen und Additionen mit null, nicht explizit ausgeführt werden müssen. Algorithmen, bei denen die Matrix selbst umgeformt wird, sind hingegen meist nur schwierig zu implementieren, da dann die Dünnbesetztheit meist verloren geht.
Modelle und Fragestellungen in Wissenschaft und Technik können auf Probleme der linearen Algebra mit Millionen von Gleichungen führen. Die Einträge einer Matrix mit einer Million Zeilen und Spalten benötigen im [[Doppelte Genauigkeit|''double-precision'']]-Format 8&nbsp;Terabyte Speicherplatz. Das zeigt, dass bereits die Bereitstellung der Daten eines Problems, geschweige denn seine Lösung, eine Herausforderung darstellen, wenn nicht auch seine spezielle Struktur berücksichtigt wird. Glücklicherweise führen viele wichtige Anwendungen – wie beispielsweise die Diskretisierung partieller Differentialgleichungen mit der [[Finite-Elemente-Methode]] – zwar auf sehr viele Gleichungen, in jeder einzelnen Gleichung kommen jedoch nur relativ wenige Unbekannte vor. Für die zugehörige Matrix bedeutet das, dass es in jeder Zeile nur wenige Einträge ungleich null gibt, die Matrix ist wie man sagt [[Dünnbesetzte Matrix|dünnbesetzt]]. Es gibt zahlreiche Methoden, um solche Matrizen effizient abzuspeichern und ihre Struktur auszunutzen. Verfahren, in denen Matrizen nur in Matrix-Vektor-Produkten vorkommen, sind für dünnbesetzte Probleme besonders gut geeignet, da dabei alle Multiplikationen und Additionen mit null, nicht explizit ausgeführt werden müssen. Algorithmen, bei denen die Matrix selbst umgeformt wird, sind hingegen meist nur schwierig zu implementieren, da dann die Dünnbesetztheit meist verloren geht.<ref>Demmel: ''Applied Numerical Linear Algebra.'' 1997, S. 83–90.</ref>


Allgemein hat die Besetzungsstruktur, also die Anzahl und die Position der Matrixeinträge ungleich null, einen sehr großen Einfluss auf die theoretischen und numerischen Eigenschaften eines Problems. Das wird am Extremfall von [[Diagonalmatrix|Diagonalmatrizen]], also Matrizen, die nur auf der Hauptdiagonale Einträge ungleich null haben, besonders deutlich. Ein lineares Gleichungssystem mit einer Diagonalmatrix kann einfach gelöst werden, indem die Einträge auf der rechten Seite durch die Diagonalelemente dividiert werden, also mittels <math>n</math> Divisionen. Auch lineare Ausgleichsprobleme und Eigenwertprobleme sind für Diagonalmatrizen trivial. Die Eigenwerte einer Diagonalmatrix sind ihre Diagonalelemente und die zugehörigen Eigenvektoren die Standardbasisvektoren <math>\mathbf e_1, \dotsc, \mathbf e_n</math>.
Allgemein hat die Besetzungsstruktur, also die Anzahl und die Position der Matrixeinträge ungleich null, einen sehr großen Einfluss auf die theoretischen und numerischen Eigenschaften eines Problems. Das wird am Extremfall von [[Diagonalmatrix|Diagonalmatrizen]], also Matrizen, die nur auf der Hauptdiagonale Einträge ungleich null haben, besonders deutlich. Ein lineares Gleichungssystem mit einer Diagonalmatrix kann einfach gelöst werden, indem die Einträge auf der rechten Seite durch die Diagonalelemente dividiert werden, also mittels <math>n</math> Divisionen. Auch lineare Ausgleichsprobleme und Eigenwertprobleme sind für Diagonalmatrizen trivial. Die Eigenwerte einer Diagonalmatrix sind ihre Diagonalelemente und die zugehörigen Eigenvektoren die Standardbasisvektoren <math>\mathbf e_1, \dotsc, \mathbf e_n</math>.
Zeile 48: Zeile 48:
wird als ''(normweiser) absoluter Fehler'' bezeichnet. Betrachtet man den absoluten Fehler im Verhältnis zur Norm des „exakten“ Vektors <math>\mathbf x \neq \mathbf 0</math> erhält man den ''(normweisen) relativen Fehler''
wird als ''(normweiser) absoluter Fehler'' bezeichnet. Betrachtet man den absoluten Fehler im Verhältnis zur Norm des „exakten“ Vektors <math>\mathbf x \neq \mathbf 0</math> erhält man den ''(normweisen) relativen Fehler''
: <math>\frac{\|\tilde\mathbf x - \mathbf x\|}{\|\mathbf x\|}</math>.
: <math>\frac{\|\tilde\mathbf x - \mathbf x\|}{\|\mathbf x\|}</math>.
Da der relative Fehler nicht durch die [[Skalarmultiplikation|Skalierung]] von <math>\mathbf x</math> und <math>\tilde\mathbf x</math> beeinflusst wird, ist dieser das Standardmaß für den Unterschied der beiden Vektoren und wird oft auch vereinfacht nur als „Fehler“ bezeichnet.
Da der relative Fehler nicht durch die [[Skalarmultiplikation|Skalierung]] von <math>\mathbf x</math> und <math>\tilde\mathbf x</math> beeinflusst wird, ist dieser das Standardmaß für den Unterschied der beiden Vektoren und wird oft auch vereinfacht nur als „Fehler“ bezeichnet.<ref>{{Literatur | Autor=Wolfgang Dahmen, Arnold Reusken | Titel=Numerik für Ingenieure und Naturwissenschaftler | Auflage=2. | Verlag=Springer | Ort=Berlin/Heidelberg | Jahr=2008 | ISBN=978-3-540-76492-2 | Seiten=18 f}}</ref>


Auch die „Größe“ von Matrizen wird mit [[Norm (Mathematik)|Normen]] gemessen, den [[Matrixnorm]]en. Für die Wahl einer Matrixnorm <math>\|A\|</math> ist es wesentlich, dass sie zur verwendeten Vektornorm „passt“, insbesondere soll die Ungleichung <math>\|A \mathbf x \| \leq \|A\| \|\mathbf x\|</math> für alle <math>\mathbf x</math> erfüllt sein. Definiert man <math>\|A\|</math> für eine gegebene Vektornorm als die kleinste Zahl <math>L</math>, sodass <math>\|A \mathbf x \| \leq L \|\mathbf x\|</math> für alle <math>\mathbf x</math> gilt, dann erhält man die sogenannte [[natürliche Matrixnorm]]. Für jede Vektornorm gibt es also eine davon induzierte natürliche Matrixnorm: Für die euklidische Norm ist das die [[Spektralnorm]] <math>\|A\|_2</math>, für die Maximumsnorm ist es die [[Zeilensummennorm]] <math>\|A\|_{\infty}</math> und für die 1-Norm die [[Spaltensummennorm]] <math>\|A\|_1</math>. Analog zu Vektoren kann mithilfe einer Matrixnorm der relative Fehler
Auch die „Größe“ von Matrizen wird mit [[Norm (Mathematik)|Normen]] gemessen, den [[Matrixnorm]]en. Für die Wahl einer Matrixnorm <math>\|A\|</math> ist es wesentlich, dass sie zur verwendeten Vektornorm „passt“, insbesondere soll die Ungleichung <math>\|A \mathbf x \| \leq \|A\| \|\mathbf x\|</math> für alle <math>\mathbf x</math> erfüllt sein. Definiert man <math>\|A\|</math> für eine gegebene Vektornorm als die kleinste Zahl <math>L</math>, sodass <math>\|A \mathbf x \| \leq L \|\mathbf x\|</math> für alle <math>\mathbf x</math> gilt, dann erhält man die sogenannte [[natürliche Matrixnorm]]. Für jede Vektornorm gibt es also eine davon induzierte natürliche Matrixnorm: Für die euklidische Norm ist das die [[Spektralnorm]] <math>\|A\|_2</math>, für die Maximumsnorm ist es die [[Zeilensummennorm]] <math>\|A\|_{\infty}</math> und für die 1-Norm die [[Spaltensummennorm]] <math>\|A\|_1</math>. Analog zu Vektoren kann mithilfe einer Matrixnorm der relative Fehler
Zeile 61: Zeile 61:
: <math>\frac{\|\tilde\mathbf x - \mathbf x\|}{\|\mathbf x\|} \leq \|A\| \|A^{-1}\| \cdot \frac{\|\tilde\mathbf b - \mathbf b\|}{\|\mathbf b\|}</math>
: <math>\frac{\|\tilde\mathbf x - \mathbf x\|}{\|\mathbf x\|} \leq \|A\| \|A^{-1}\| \cdot \frac{\|\tilde\mathbf b - \mathbf b\|}{\|\mathbf b\|}</math>


beweisen. Das Problem ist also gut konditioniert, wenn <math>\|A\| \|A^{-1}\|</math>, das Produkt der Norm der Koeffizientenmatrix und der Norm ihrer [[Inverse Matrix|Inversen]], klein ist. Diese wichtige Kenngröße heißt [[Kondition (Mathematik)#Kondition von linearen Abbildungen|Konditionszahl]] der Matrix <math>A</math> und wird mit <math>\kappa(A)</math> bezeichnet. In realen Problemen wird meist nicht nur, wie hier dargestellt, die rechte Seite <math>\mathbf b</math> fehlerbehaftet sein, sondern auch die Matrix <math>A</math>. Dann gilt eine ähnliche, kompliziertere Abschätzung, in der aber ebenfalls <math>\kappa(A)</math> die wesentliche Kennzahl zur Bestimmung der Kondition des Problems bei kleinen Datenfehlern ist.<ref>{{Literatur | Autor=Hans Rudolf Schwarz, Norbert Köckler | Titel=Numerische Mathematik | Auflage=8. | Verlag=Vieweg+Teubner | Ort=Wiesbaden | Jahr=2011 | ISBN=978-3-8348-1551-4 | Seiten=53 f}}</ref> Die Definition der Konditionszahl lässt sich auf nicht quadratische Matrizen verallgemeinern und spielt dann auch eine wesentliche Rolle bei Analyse linearer Ausgleichsprobleme. Wie gut ein solches Problem konditioniert ist, hängt allerdings nicht nur wie bei linearen Gleichungssytemen von der Konditionszahl der Koeffizientenmatrix <math>A</math> ab, sondern auch von der rechten Seite <math>\mathbf b</math>, genauer vom [[Skalarprodukt#Betrag von Vektoren und eingeschlossener Winkel|Winkel]] zwischen den Vektoren <math>A \mathbf x</math> und <math>\mathbf b</math>.<ref>Trefethen, Bau: ''Numerical Linear Algebra.'' 1997, S. 131.</ref> Nach dem [[Satz von Bauer-Fike]] lässt sich auch die Kondition des Eigenwertproblems mit Konditionszahlen beschreiben. Hier ist es jedoch nicht die Zahl <math>\kappa(A)</math>, mit der sich Störungen der Eigenwerte abschätzen lassen, sondern <math>\kappa(S)</math>, die Konditionszahl der Matrix <math>S</math>, die <math>A</math> via <math>S^{-1}AS=D</math> diagonalisiert.
beweisen. Das Problem ist also gut konditioniert, wenn <math>\|A\| \|A^{-1}\|</math>, das Produkt der Norm der Koeffizientenmatrix und der Norm ihrer [[Inverse Matrix|Inversen]], klein ist. Diese wichtige Kenngröße heißt [[Kondition (Mathematik)#Kondition von linearen Abbildungen|Konditionszahl]] der Matrix <math>A</math> und wird mit <math>\kappa(A)</math> bezeichnet. In realen Problemen wird meist nicht nur, wie hier dargestellt, die rechte Seite <math>\mathbf b</math> fehlerbehaftet sein, sondern auch die Matrix <math>A</math>. Dann gilt eine ähnliche, kompliziertere Abschätzung, in der aber ebenfalls <math>\kappa(A)</math> die wesentliche Kennzahl zur Bestimmung der Kondition des Problems bei kleinen Datenfehlern ist.<ref>{{Literatur | Autor=Hans Rudolf Schwarz, Norbert Köckler | Titel=Numerische Mathematik | Auflage=8. | Verlag=Vieweg+Teubner | Ort=Wiesbaden | Jahr=2011 | ISBN=978-3-8348-1551-4 | Seiten=53 f}}</ref> Die Definition der Konditionszahl lässt sich auf nicht quadratische Matrizen verallgemeinern und spielt dann auch eine wesentliche Rolle bei Analyse linearer Ausgleichsprobleme. Wie gut ein solches Problem konditioniert ist, hängt allerdings nicht nur wie bei linearen Gleichungssytemen von der Konditionszahl der Koeffizientenmatrix <math>A</math> ab, sondern auch von der rechten Seite <math>\mathbf b</math>, genauer vom [[Skalarprodukt#Betrag von Vektoren und eingeschlossener Winkel|Winkel]] zwischen den Vektoren <math>A \mathbf x</math> und <math>\mathbf b</math>.<ref>Trefethen, Bau: ''Numerical Linear Algebra.'' 1997, S. 131.</ref> Nach dem [[Satz von Bauer-Fike]] lässt sich auch die Kondition des Eigenwertproblems mit Konditionszahlen beschreiben. Hier ist es jedoch nicht die Zahl <math>\kappa(A)</math>, mit der sich Störungen der Eigenwerte abschätzen lassen, sondern <math>\kappa(S)</math>, die Konditionszahl der Matrix <math>S</math>, die <math>A</math> via <math>S^{-1}AS=D</math> diagonalisiert.<ref>{{Literatur | Autor=Martin Hanke-Bourgeois | Titel=Grundlagen der Numerischen Mathematik und des Wissenschaftlichen Rechnens | Auflage=3. | Verlag=Vieweg+Teubner | Ort=Wiesbaden | Jahr=2009 | ISBN=978-3-8348-0708-3 | Seiten=214}}</ref>


Während die Kondition eine Eigenschaft des zu lösenden Problems ist, ist [[Stabilität (Numerik)|Stabilität]] eine Eigenschaft des dafür verwendeten Verfahrens. Ein numerischer Algorithmus liefert – auch bei exakt gedachten Eingangsdaten – im Allgemeinen nicht die exakte Lösung des Problems. Zum Beispiel muss ein iteratives Verfahren, das eine wahre Lösung schrittweise immer genauer annähert, nach endlich vielen Schritten mit der bis dahin erreichten Näherungslösung abbrechen. Aber auch bei direkten Verfahren, die theoretisch in endlich vielen Rechenschritten die exakte Lösung ergeben, kommt es bei der Umsetzung auf dem Computer bei jeder Rechenoperation zu Rundungsfehlern. In der numerischen Mathematik werden zwei unterschiedliche Stabilitätsbegriffe verwendet, die Vorwärtsstabilität und Rückwärtsstabilität. Sei dazu allgemein <math>u</math> eine Eingabegröße eines Problems und <math>v = f(u)</math> seine exakte Lösung, aufgefasst als Wert einer Funktion <math>f</math> angewendet auf <math>u</math>. Auch wenn man die Eingabegröße als exakt vorgegeben betrachtet, wird die Berechnung mit einem Algorithmus ein anderes, „falsches“ Ergebnis <math>\tilde v = \operatorname{alg}(u)</math> liefern, aufgefasst als Wert einer anderen, „falschen“ Funktion <math>\operatorname{alg}</math> ebenfalls angewendet auf <math>u</math>. Ein Algorithmus heißt ''vorwärtsstabil'', wenn sich <math>\tilde v</math> nicht wesentlich stärker von <math>v</math> unterscheidet, als es aufgrund der Fehler in der Eingangsgröße <math>u</math> und der Kondition des Problems sowieso zu erwarten wäre.
Während die Kondition eine Eigenschaft des zu lösenden Problems ist, ist [[Stabilität (Numerik)|Stabilität]] eine Eigenschaft des dafür verwendeten Verfahrens. Ein numerischer Algorithmus liefert – auch bei exakt gedachten Eingangsdaten – im Allgemeinen nicht die exakte Lösung des Problems. Zum Beispiel muss ein iteratives Verfahren, das eine wahre Lösung schrittweise immer genauer annähert, nach endlich vielen Schritten mit der bis dahin erreichten Näherungslösung abbrechen. Aber auch bei direkten Verfahren, die theoretisch in endlich vielen Rechenschritten die exakte Lösung ergeben, kommt es bei der Umsetzung auf dem Computer bei jeder Rechenoperation zu Rundungsfehlern. In der numerischen Mathematik werden zwei unterschiedliche Stabilitätsbegriffe verwendet, die Vorwärtsstabilität und Rückwärtsstabilität. Sei dazu allgemein <math>u</math> eine Eingabegröße eines Problems und <math>v = f(u)</math> seine exakte Lösung, aufgefasst als Wert einer Funktion <math>f</math> angewendet auf <math>u</math>. Auch wenn man die Eingabegröße als exakt vorgegeben betrachtet, wird die Berechnung mit einem Algorithmus ein anderes, „falsches“ Ergebnis <math>\tilde v = \operatorname{alg}(u)</math> liefern, aufgefasst als Wert einer anderen, „falschen“ Funktion <math>\operatorname{alg}</math> ebenfalls angewendet auf <math>u</math>. Ein Algorithmus heißt ''vorwärtsstabil'', wenn sich <math>\tilde v</math> nicht wesentlich stärker von <math>v</math> unterscheidet, als es aufgrund der Fehler in der Eingangsgröße <math>u</math> und der Kondition des Problems sowieso zu erwarten wäre.ref>{{Literatur | Autor=Peter Deuflhard, Andreas Hohmann | Titel=Numerische Mathematik 1 | Auflage=4. | Verlag=Walter de Gruyter | Ort=Berlin | Jahr=2008 | ISBN=978-3-11-020354-7 | Seiten=44}}</ref>
Mit einer formalen Definition dieses Begriffs erhält man zwar ein naheliegendes und relativ anschauliches Maß für die Stabilität, aber bei komplizierten Algorithmen ist es oft schwierig, ihre Vorwärtsstabilität zu untersuchen. Daher wird im Allgemeinen zunächst eine sogenannte Rückwärtsanalyse betrachtet: Dazu wird ein <math>\tilde u</math> bestimmt mit <math>\operatorname{alg}(u) = f(\tilde u)</math>, das heißt: Der durch das Verfahren berechnete „falsche“ Wert wird aufgefasst als „richtiger“ Wert, der aber mit einem anderen Wert der Eingabegröße berechnet wurde.<ref>{{Literatur | Autor=Wolfgang Dahmen, Arnold Reusken | Titel=Numerik für Ingenieure und Naturwissenschaftler | Auflage=2. | Verlag=Springer | Ort=Berlin/Heidelberg | Jahr=2008 | ISBN=978-3-540-76492-2 | Seiten=44}}</ref> Ein Algorithmus heißt ''rückwärtsstabil'', wenn sich <math>\tilde u</math> nicht wesentlich stärker von <math>u</math> unterscheidet, als es aufgrund der Fehler in dieser Eingangsgröße sowieso zu erwarten wäre.
Mit einer formalen Definition dieses Begriffs erhält man zwar ein naheliegendes und relativ anschauliches Maß für die Stabilität, aber bei komplizierten Algorithmen ist es oft schwierig, ihre Vorwärtsstabilität zu untersuchen. Daher wird im Allgemeinen zunächst eine sogenannte Rückwärtsanalyse betrachtet: Dazu wird ein <math>\tilde u</math> bestimmt mit <math>\operatorname{alg}(u) = f(\tilde u)</math>, das heißt: Der durch das Verfahren berechnete „falsche“ Wert wird aufgefasst als „richtiger“ Wert, der aber mit einem anderen Wert der Eingabegröße berechnet wurde.<ref>{{Literatur | Autor=Wolfgang Dahmen, Arnold Reusken | Titel=Numerik für Ingenieure und Naturwissenschaftler | Auflage=2. | Verlag=Springer | Ort=Berlin/Heidelberg | Jahr=2008 | ISBN=978-3-540-76492-2 | Seiten=44}}</ref> Ein Algorithmus heißt ''rückwärtsstabil'', wenn sich <math>\tilde u</math> nicht wesentlich stärker von <math>u</math> unterscheidet, als es aufgrund der Fehler in dieser Eingangsgröße sowieso zu erwarten wäre.
Es lässt sich beweisen, dass ein rückwärtsstabiler Algorithmus auch vorwärtsstabil ist.<ref>{{Literatur | Autor=Peter Deuflhard, Andreas Hohmann | Titel=Numerische Mathematik 1 | Auflage=4. | Verlag=Walter de Gruyter | Ort=Berlin | Jahr=2008 | ISBN=978-3-11-020354-7 | Seiten=49 f}}</ref>
Es lässt sich beweisen, dass ein rückwärtsstabiler Algorithmus auch vorwärtsstabil ist.<ref>{{Literatur | Autor=Peter Deuflhard, Andreas Hohmann | Titel=Numerische Mathematik 1 | Auflage=4. | Verlag=Walter de Gruyter | Ort=Berlin | Jahr=2008 | ISBN=978-3-11-020354-7 | Seiten=49 f}}</ref>
Zeile 99: Zeile 99:
Das charakteristische Polynom hat zwar eine große theoretische Bedeutung für das Eigenwertproblem, zur numerischen Berechnung ist es jedoch nicht geeignet. Das liegt vor allem daran, dass das Problem, aus gegebenen Koeffizienten die Nullstellen des zugehörigen Polynoms zu berechnen, im Allgemeinen sehr schlecht konditioniert ist: Kleine Störungen wie Rundefehler an Koeffizienten eines Polynoms können zu einer starken Verschiebung seiner Nullstellen führen. Damit würde ein gegebenenfalls gut konditioniertes Problem – die Berechnung der Eigenwerte – durch ein zwar mathematisch äquivalentes, aber schlecht konditioniertes Problem – die Berechnung der Nullstellen des charakteristischen Polynoms – ersetzt.<ref>{{Literatur | Autor=Peter Deuflhard, Andreas Hohmann | Titel=Numerische Mathematik 1 | Auflage=4. | Verlag=Walter de Gruyter | Ort=Berlin | Jahr=2008 | ISBN=978-3-11-020354-7 | Seiten=135}}</ref> Viele numerische Verfahren zur Berechnung von Eigenwerten und Eigenvektoren beruhen daher auf einer anderen Grundidee, den Ähnlichkeitstransformationen: Zwei quadratische Matrizen <math>A</math> und <math>B</math> werden [[Ähnlichkeit (Matrix)|ähnlich]] genannt, wenn es eine reguläre Matrix <math>S</math> mit
Das charakteristische Polynom hat zwar eine große theoretische Bedeutung für das Eigenwertproblem, zur numerischen Berechnung ist es jedoch nicht geeignet. Das liegt vor allem daran, dass das Problem, aus gegebenen Koeffizienten die Nullstellen des zugehörigen Polynoms zu berechnen, im Allgemeinen sehr schlecht konditioniert ist: Kleine Störungen wie Rundefehler an Koeffizienten eines Polynoms können zu einer starken Verschiebung seiner Nullstellen führen. Damit würde ein gegebenenfalls gut konditioniertes Problem – die Berechnung der Eigenwerte – durch ein zwar mathematisch äquivalentes, aber schlecht konditioniertes Problem – die Berechnung der Nullstellen des charakteristischen Polynoms – ersetzt.<ref>{{Literatur | Autor=Peter Deuflhard, Andreas Hohmann | Titel=Numerische Mathematik 1 | Auflage=4. | Verlag=Walter de Gruyter | Ort=Berlin | Jahr=2008 | ISBN=978-3-11-020354-7 | Seiten=135}}</ref> Viele numerische Verfahren zur Berechnung von Eigenwerten und Eigenvektoren beruhen daher auf einer anderen Grundidee, den Ähnlichkeitstransformationen: Zwei quadratische Matrizen <math>A</math> und <math>B</math> werden [[Ähnlichkeit (Matrix)|ähnlich]] genannt, wenn es eine reguläre Matrix <math>S</math> mit
: <math>B = S^{-1} A S</math>
: <math>B = S^{-1} A S</math>
gibt. Es kann gezeigt werden, dass zueinander ähnliche Matrizen die gleichen Eigenwerte haben, bei einer Ähnlichkeitstransformation der Matrix <math>A</math> auf die Matrix <math>B</math> ändern sich also die gesuchten Eigenwerte nicht. Auch die zugehörigen Eigenvektoren lassen sich leicht ineinander umrechnen: Ist <math>\mathbf x</math> ein Eigenvektor von <math>B</math>, dann ist <math>S \mathbf x</math> ein Eigenvektor von <math>A</math> zum gleichen Eigenwert. Das führt zu Grundideen, die in zahlreichen Algorithmen zum Einsatz kommen. Die Matrix <math>A</math> wird durch Ähnlichkeitstransformation in eine Matrix überführt, für die das Eigenwertproblem effizienter zu lösen ist, oder es wird eine Folge von Ähnlichkeitstransformationen konstruiert, bei denen sich die Matrix einer Diagonal- oder Dreiecksmatrix immer weiter annähert. Aus den oben genannten Gründen werden dabei für die Transformationsmatrizen <math>S</math> meist orthogonale Matrizen verwendet.
gibt. Es kann gezeigt werden, dass zueinander ähnliche Matrizen die gleichen Eigenwerte haben, bei einer Ähnlichkeitstransformation der Matrix <math>A</math> auf die Matrix <math>B</math> ändern sich also die gesuchten Eigenwerte nicht. Auch die zugehörigen Eigenvektoren lassen sich leicht ineinander umrechnen: Ist <math>\mathbf x</math> ein Eigenvektor von <math>B</math>, dann ist <math>S \mathbf x</math> ein Eigenvektor von <math>A</math> zum gleichen Eigenwert. Das führt zu Grundideen, die in zahlreichen Algorithmen zum Einsatz kommen. Die Matrix <math>A</math> wird durch Ähnlichkeitstransformation in eine Matrix überführt, für die das Eigenwertproblem effizienter zu lösen ist, oder es wird eine Folge von Ähnlichkeitstransformationen konstruiert, bei denen sich die Matrix einer Diagonal- oder Dreiecksmatrix immer weiter annähert. Aus den oben genannten Gründen werden dabei für die Transformationsmatrizen <math>S</math> meist orthogonale Matrizen verwendet.<ref>Börm, Mehl: ''Numerical Methods for Eigenvalue Problems.'' 2012, S. 15–19</ref>


== Verfahren und Verfahrensklassen ==
== Verfahren und Verfahrensklassen ==
Zeile 110: Zeile 110:
: <math>l_{ik} := \frac{a_{ik}}{a_{kk}}</math>
: <math>l_{ik} := \frac{a_{ik}}{a_{kk}}</math>
das <math>l_{ik}</math>-fache der <math>k</math>-ten Zeile von der <math>i</math>-Zeile subtrahiert werden.
das <math>l_{ik}</math>-fache der <math>k</math>-ten Zeile von der <math>i</math>-Zeile subtrahiert werden.
Dazu muss zumindest <math>a_{kk} \neq 0</math> gelten, was sich durch geeignete Zeilenvertauschungen für eine reguläre Matrix <math>A</math> stets erreichen lässt. Aber mehr noch: Ist <math>|a_{kk}|</math> sehr klein im Vergleich zu <math>|a_{ik}|</math>, dann ergäbe sich ein sehr großer Betrag von <math>l_{ik}</math>. In den nachfolgenden Schritten bestünde dann die Gefahr von [[Stellenauslöschung]]en durch Subtraktionen großer Zahlen und das Verfahren wäre instabil. Daher ist es wichtig, durch Zeilenvertauschungen, sogenannte [[Pivotisierung]] dafür zu sorgen, dass die Quotienten <math>l_{ik}</math> möglichst klein bleiben.
Dazu muss zumindest <math>a_{kk} \neq 0</math> gelten, was sich durch geeignete Zeilenvertauschungen für eine reguläre Matrix <math>A</math> stets erreichen lässt. Aber mehr noch: Ist <math>|a_{kk}|</math> sehr klein im Vergleich zu <math>|a_{ik}|</math>, dann ergäbe sich ein sehr großer Betrag von <math>l_{ik}</math>. In den nachfolgenden Schritten bestünde dann die Gefahr von [[Stellenauslöschung]]en durch Subtraktionen großer Zahlen und das Verfahren wäre instabil. Daher ist es wichtig, durch Zeilenvertauschungen, sogenannte [[Pivotisierung]] dafür zu sorgen, dass die Quotienten <math>l_{ik}</math> möglichst klein bleiben.<ref>{{Literatur | Autor=Martin Hanke-Bourgeois | Titel=Grundlagen der Numerischen Mathematik und des Wissenschaftlichen Rechnens | Auflage=3. | Verlag=Vieweg+Teubner | Ort=Wiesbaden | Jahr=2009 | ISBN=978-3-8348-0708-3 | Seiten=46–57}}</ref>


=== Faktorisierungsverfahren ===
=== Faktorisierungsverfahren ===
Zeile 128: Zeile 128:
Die [[Cholesky-Zerlegung]] ist wie die LR-Zerlegung eine Faktorisierung der Matrix <math>A</math> in zwei Dreiecksmatrizen für den in vielen Anwendungen auftretenden Fall, dass <math>A</math> symmetrisch und [[Definitheit|positiv definit]] ist, also <math>A^T = A</math> erfüllt und nur positive Eigenwerte besitzt. Unter diesen Voraussetzungen gibt es eine untere Dreiecksmatrix <math>L</math> mit
Die [[Cholesky-Zerlegung]] ist wie die LR-Zerlegung eine Faktorisierung der Matrix <math>A</math> in zwei Dreiecksmatrizen für den in vielen Anwendungen auftretenden Fall, dass <math>A</math> symmetrisch und [[Definitheit|positiv definit]] ist, also <math>A^T = A</math> erfüllt und nur positive Eigenwerte besitzt. Unter diesen Voraussetzungen gibt es eine untere Dreiecksmatrix <math>L</math> mit
: <math>A = LL^T</math>.
: <math>A = LL^T</math>.
Ein allgemeiner Ansatz für die Matrixeinträge von <math>L</math> führt auf ein explizites Verfahren, mit dem diese spaltenweise oder zeilenweise nacheinander berechnet werden können, das Cholesky-Verfahren. Durch diese Ausnutzung der Symmetrie von <math>A</math> reduziert sich der Rechenaufwand gegenüber der LU-Zerlegung auf etwa die Hälfte.
Ein allgemeiner Ansatz für die Matrixeinträge von <math>L</math> führt auf ein explizites Verfahren, mit dem diese spaltenweise oder zeilenweise nacheinander berechnet werden können, das Cholesky-Verfahren. Durch diese Ausnutzung der Symmetrie von <math>A</math> reduziert sich der Rechenaufwand gegenüber der LU-Zerlegung auf etwa die Hälfte.<ref>{{Literatur | Autor=Wolfgang Dahmen, Arnold Reusken | Titel=Numerik für Ingenieure und Naturwissenschaftler | Auflage=2. | Verlag=Springer | Ort=Berlin/Heidelberg | Jahr=2008 | ISBN=978-3-540-76492-2 | Seiten=88}}</ref>


Symmetrische und positiv definite Koeffizientenmatrizen treten klassisch bei der Formulierung der sogenannten [[Normalgleichungen]] zur Lösung linearer Ausgleichsprobleme auf. Man kann zeigen, dass das Problem, <math>\|A \mathbf x - \mathbf b\|_2^2</math> zu minimieren, äquivalent zur Lösung des linearen Gleichungssystems
Symmetrische und positiv definite Koeffizientenmatrizen treten klassisch bei der Formulierung der sogenannten [[Normalgleichungen]] zur Lösung linearer Ausgleichsprobleme auf. Man kann zeigen, dass das Problem, <math>\|A \mathbf x - \mathbf b\|_2^2</math> zu minimieren, äquivalent zur Lösung des linearen Gleichungssystems
: <math>A^T A \mathbf x = A^T \mathbf b</math>
: <math>A^T A \mathbf x = A^T \mathbf b</math>
ist. Die Koeffizientenmatrix <math>A^T A</math> dieser Normalgleichungen ist symmetrisch und, wenn die Spalten von <math>A</math> linear unabhängig sind, auch positiv definit. Es kann also mit dem Cholesky-Verfahren gelöst werden. Dieses Vorgehen empfiehlt sich jedoch nur für gut konditionierte Probleme mit wenigen Unbekannten. Im Allgemeinen ist nämlich das System der Normalgleichungen deutlich schlechter konditioniert als das ursprünglich gegebene lineare Ausgleichsproblem. Es ist dann besser, nicht den Umweg über die Normalgleichungen zu gehen, sondern direkt eine QR-Zerlegung von <math>A</math> zu verwenden.
ist. Die Koeffizientenmatrix <math>A^T A</math> dieser Normalgleichungen ist symmetrisch und, wenn die Spalten von <math>A</math> linear unabhängig sind, auch positiv definit. Es kann also mit dem Cholesky-Verfahren gelöst werden.<ref>{{Literatur | Autor=Wolfgang Dahmen, Arnold Reusken | Titel=Numerik für Ingenieure und Naturwissenschaftler | Auflage=2. | Verlag=Springer | Ort=Berlin/Heidelberg | Jahr=2008 | ISBN=978-3-540-76492-2 | Seiten=127 f}}</ref> Dieses Vorgehen empfiehlt sich jedoch nur für gut konditionierte Probleme mit wenigen Unbekannten. Im Allgemeinen ist nämlich das System der Normalgleichungen deutlich schlechter konditioniert als das ursprünglich gegebene lineare Ausgleichsproblem. Es ist dann besser, nicht den Umweg über die Normalgleichungen zu gehen, sondern direkt eine QR-Zerlegung von <math>A</math> zu verwenden.


==== QR-Zerlegung ====
==== QR-Zerlegung ====
Zeile 146: Zeile 146:
: <math>\|\mathbf r\|_2^2 = \| Q^T \mathbf r\|_2^2 = \|Q^TQR \mathbf x - Q^T \mathbf b\|_2^2 = \|R \mathbf x - Q^T \mathbf b\|_2^2</math>.
: <math>\|\mathbf r\|_2^2 = \| Q^T \mathbf r\|_2^2 = \|Q^TQR \mathbf x - Q^T \mathbf b\|_2^2 = \|R \mathbf x - Q^T \mathbf b\|_2^2</math>.
Dabei wurde verwendet, dass <math>Q^T</math> orthogonal ist, also die euklidische Norm erhält, und dass <math>Q^T Q = I</math> gilt.
Dabei wurde verwendet, dass <math>Q^T</math> orthogonal ist, also die euklidische Norm erhält, und dass <math>Q^T Q = I</math> gilt.
Der letzte Ausdruck lässt sich einfach durch Rückwärtseinsetzen der ersten <math>n</math> Zeilen von <math>R \mathbf x = Q^T \mathbf b</math> minimieren.
Der letzte Ausdruck lässt sich einfach durch Rückwärtseinsetzen der ersten <math>n</math> Zeilen von <math>R \mathbf x = Q^T \mathbf b</math> minimieren.ref>{{Literatur | Autor=Peter Deuflhard, Andreas Hohmann | Titel=Numerische Mathematik 1 | Auflage=4. | Verlag=Walter de Gruyter | Ort=Berlin | Jahr=2008 | ISBN=978-3-11-020354-7 | Seiten=76 f}}</ref>


=== Fixpunktiteration mit Splitting-Verfahren ===
=== Fixpunktiteration mit Splitting-Verfahren ===

Version vom 18. März 2016, 15:24 Uhr

Die Modellierung durch finite Elemente, wie hier zur Spannungsanalyse eines Hubkolbens, führt auf lineare Gleichungssysteme mit sehr vielen Gleichungen und Unbekannten: eine für jeden Knotenpunkt des Gitternetzes

Die numerische lineare Algebra ist ein zentrales Teilgebiet der numerischen Mathematik. Sie beschäftigt sich mit der Entwicklung und der Analyse von Rechenmethoden für Problemstellungen der linearen Algebra, insbesondere der Lösung von linearen Gleichungssystemen und Eigenwertproblemen. Solche Probleme treten häufig in den Ingenieurwissenschaften, der Physik oder der Ökonometrie auf.

Einführung in die Problemstellungen

Ein – auch historisch gesehen – zentraler Anfangspunkt der elementaren linearen Algebra sind lineare Gleichungssysteme. Wir betrachten Gleichungen der Gestalt

für Unbekannte . Die Koeffizienten und sind gegebene Zahlen; die gesuchten Werte für sollen so bestimmt werden, dass alle Gleichungen erfüllt werden. Die Koeffizienten lassen sich zu einer Matrix zusammenfassen; die Zahlen und die Unbekannten bilden Spaltenvektoren und . Auf diese Weise ergibt sich die Matrix-Vektor-Darstellung

eines linearen Gleichungssystems: Gesucht ist ein Vektor , der bei der Matrix-Vektor-Multiplikation mit der gegebenen Matrix den gegebenen Vektor ergibt. Als Teilgebiet der Numerik betrachtet auch die numerische lineare Algebra nur sogenannte korrekt gestellte Probleme, also insbesondere nur solche Probleme, die eine Lösung besitzen und bei denen die Lösung eindeutig bestimmt ist. Insbesondere wird im Folgenden stets angenommen, dass die Matrix regulär ist, also eine Inverse besitzt. Dann gibt es für jede rechte Seite eine eindeutig bestimmte Lösung des linearen Gleichungssystems, die formal als angegeben werden kann.

Viele wichtige Anwendungen führen allerdings auf lineare Gleichungssysteme mit mehr Gleichungen als Unbekannten. In der Matrix-Vektor-Darstellung hat in diesem Fall die Matrix mehr Zeilen als Spalten. Solche überbestimmten Systeme haben im Allgemeinen keine Lösung. Man behilft sich deshalb damit, den Vektor so zu wählen, dass die Differenz in einem noch festzulegenden Sinn „möglichst klein“ wird. Beim mit Abstand wichtigsten Fall, dem sogenannten linearen Ausgleichsproblem, wird dazu die Methode der kleinsten Quadrate verwendet: Hierbei wird so gewählt, dass die Quadratsumme minimal wird, wobei die Komponenten des Differenzvektors bezeichnen. Mithilfe der euklidischen Norm lässt sich das auch so schreiben: Man wähle so, dass minimal wird.

Neben den linearen Gleichungen sind die Eigenwertprobleme ein weiteres zentrales Thema der linearen Algebra. Gegeben ist hierbei eine Matrix mit Zeilen und Spalten; gesucht sind Zahlen und Vektoren , sodass die Gleichung

erfüllt ist. Man nennt dann einen Eigenvektor von zum Eigenwert . Das Problem alle Eigenwerte und Eigenvektoren einer Matrix zu bestimmen ist gleichbedeutend damit sie zu diagonalisieren. Das bedeutet: Man finde eine reguläre Matrix und eine Diagonalmatrix mit . Die Diagonaleinträge von sind dann die Eigenwerte von und die Spalten von die zugehörigen Eigenvektoren.

Grundprinzipien

“The field of numerical linear algebra is more beautiful, and more fundamental, than its rather dull name may suggest. More beautiful, because it is full of powerful ideas that are quite unlike those normally emphasized in a linear algebra course in a mathematics department. […] More fundamental, because, thanks to a trick of history, ‘numerical’ linear algebra is really applied linear algebra.”

„Das Fachgebiet der numerischen linearen Algebra ist schöner und grundlegender als es sein ziemlich langweiliger Name vermuten lässt. Schöner, weil es voll mächtiger Ideen ist, die ganz anders sind als diejenigen, die normalerweise in einer Vorlesung über lineare Algebra an einem mathematischen Institut als bedeutend herausgestellt werden. […] Grundlegender, weil ‚numerische‘ lineare Algebra dank eines Tricks der Geschichte in Wirklichkeit angewandte lineare Algebra ist.“

Lloyd N. Trefethen, David Bau[1]

Ausnutzung von Strukturen

Besetzungsstruktur einer dünnbesetzten Matrix, wie sie bei der Finite-Elemente-Methode auftritt; die kleinen schwarzen Quadrate stehen für die Matrixeinträge ungleich null

Modelle und Fragestellungen in Wissenschaft und Technik können auf Probleme der linearen Algebra mit Millionen von Gleichungen führen. Die Einträge einer Matrix mit einer Million Zeilen und Spalten benötigen im double-precision-Format 8 Terabyte Speicherplatz. Das zeigt, dass bereits die Bereitstellung der Daten eines Problems, geschweige denn seine Lösung, eine Herausforderung darstellen, wenn nicht auch seine spezielle Struktur berücksichtigt wird. Glücklicherweise führen viele wichtige Anwendungen – wie beispielsweise die Diskretisierung partieller Differentialgleichungen mit der Finite-Elemente-Methode – zwar auf sehr viele Gleichungen, in jeder einzelnen Gleichung kommen jedoch nur relativ wenige Unbekannte vor. Für die zugehörige Matrix bedeutet das, dass es in jeder Zeile nur wenige Einträge ungleich null gibt, die Matrix ist wie man sagt dünnbesetzt. Es gibt zahlreiche Methoden, um solche Matrizen effizient abzuspeichern und ihre Struktur auszunutzen. Verfahren, in denen Matrizen nur in Matrix-Vektor-Produkten vorkommen, sind für dünnbesetzte Probleme besonders gut geeignet, da dabei alle Multiplikationen und Additionen mit null, nicht explizit ausgeführt werden müssen. Algorithmen, bei denen die Matrix selbst umgeformt wird, sind hingegen meist nur schwierig zu implementieren, da dann die Dünnbesetztheit meist verloren geht.[2]

Allgemein hat die Besetzungsstruktur, also die Anzahl und die Position der Matrixeinträge ungleich null, einen sehr großen Einfluss auf die theoretischen und numerischen Eigenschaften eines Problems. Das wird am Extremfall von Diagonalmatrizen, also Matrizen, die nur auf der Hauptdiagonale Einträge ungleich null haben, besonders deutlich. Ein lineares Gleichungssystem mit einer Diagonalmatrix kann einfach gelöst werden, indem die Einträge auf der rechten Seite durch die Diagonalelemente dividiert werden, also mittels Divisionen. Auch lineare Ausgleichsprobleme und Eigenwertprobleme sind für Diagonalmatrizen trivial. Die Eigenwerte einer Diagonalmatrix sind ihre Diagonalelemente und die zugehörigen Eigenvektoren die Standardbasisvektoren .

Ein weiterer wichtiger Spezialfall sind die Dreiecksmatrizen, bei denen alle Einträge oberhalb oder unterhalb der Hauptdiagonale null sind. Gleichungssysteme mit solchen Matrizen können durch Vorwärts- bzw. Rückwärtseinsetzen einfach von oben nach unten bzw. von unten nach oben der Reihe nach aufgelöst werden. Die Eigenwerte von Dreiecksmatrizen sind wiederum trivialerweise die Einträge auf der Hauptdiagonale; zugehörige Eigenvektoren können ebenfalls durch Vorwärts- oder Rückwärtseinsetzen bestimmt werden. Ein weiterer häufiger Spezialfall dünnbesetzter Matrizen sind die Bandmatrizen: Hier sind nur die Hauptdiagonale und einige benachbarte Nebendiagonalen mit Einträgen ungleich null besetzt. Eine Abschwächung der oberen Dreiecksmatrizen sind die oberen Hessenbergmatrizen, bei den auch die Nebendiagonale unter der Hauptdiagonale besetzt ist. Eigenwertprobleme lassen sich mit relativ geringem Aufwand in äquivalente Probleme für Hessenberg- oder Tridiagonalmatrizen transformieren.

Aber nicht nur die Besetzungsstruktur, sondern auch andere Matrixeigenschaften spielen für Entwicklung und Analyse numerischer Verfahren eine wichtige Rolle. Viele Anwendungen führen auf Probleme mit symmetrischen Matrizen. Insbesondere die Eigenwertprobleme sind deutlich einfacher zu handhaben, wenn die gegebene Matrix symmetrisch ist,[3] aber auch bei linearen Gleichungssystemen reduziert sich in diesem Fall der Lösungsaufwand im Allgemeinen um etwa die Hälfte. Weitere Beispiele für Typen von Matrizen, für die spezialisierte Algorithmen existieren, sind die Vandermonde-Matrizen, die Toeplitz-Matrizen und die zirkulanten Matrizen.[4]

Fehleranalyse: Vektor- und Matrixnormen

Als Maße für die „Größe“ eines Vektors werden in der Mathematik unterschiedliche Vektornormen verwendet. Am bekanntesten und verbreitetsten ist die euklidische Norm

,

also die Wurzel aus der Summe der Quadrate aller Vektorkomponenten. Bei der bekannten geometrischen Veranschaulichung von Vektoren als Pfeile im zwei- oder dreidimensionalen Raum entspricht dies gerade der Pfeillänge. Je nach untersuchter Fragestellung können jedoch auch andere Vektornormen wie etwa die Maximumsnorm oder die 1-Norm geeigneter sein.

Sind Vektoren, wobei als eine Näherung für aufgefasst werden soll, so lässt sich mithilfe einer Vektornorm die Genauigkeit dieser Näherung quantifizieren. Die Norm des Differenzvektors

wird als (normweiser) absoluter Fehler bezeichnet. Betrachtet man den absoluten Fehler im Verhältnis zur Norm des „exakten“ Vektors erhält man den (normweisen) relativen Fehler

.

Da der relative Fehler nicht durch die Skalierung von und beeinflusst wird, ist dieser das Standardmaß für den Unterschied der beiden Vektoren und wird oft auch vereinfacht nur als „Fehler“ bezeichnet.[5]

Auch die „Größe“ von Matrizen wird mit Normen gemessen, den Matrixnormen. Für die Wahl einer Matrixnorm ist es wesentlich, dass sie zur verwendeten Vektornorm „passt“, insbesondere soll die Ungleichung für alle erfüllt sein. Definiert man für eine gegebene Vektornorm als die kleinste Zahl , sodass für alle gilt, dann erhält man die sogenannte natürliche Matrixnorm. Für jede Vektornorm gibt es also eine davon induzierte natürliche Matrixnorm: Für die euklidische Norm ist das die Spektralnorm , für die Maximumsnorm ist es die Zeilensummennorm und für die 1-Norm die Spaltensummennorm . Analog zu Vektoren kann mithilfe einer Matrixnorm der relative Fehler

bei einer Näherung einer Matrix durch eine Matrix quantifiziert werden.[6]

Kondition und Stabilität

Bei Problemen aus der Praxis sind gegebene Größen meist mit Fehlern behaftet, den Datenfehlern. Zum Beispiel kann bei einem linearen Gleichungssystem die gegebene rechte Seite aus einer Messung stammen und daher eine Messabweichung aufweisen. Aber auch bei theoretisch beliebig genau bekannten Größen lassen sich Rundungsfehler bei ihrer Darstellung im Computer als Gleitkommazahlen nicht vermeiden. Es muss also davon ausgegangen werden, dass anstelle des exakten Systems in Wirklichkeit ein System mit einer gestörten rechten Seite und dementsprechend einer „falschen“ Lösung vorliegt. Die grundlegende Frage ist nun, wie stark sich Störungen der gegebenen Größen auf Störungen der gesuchten Größen auswirken. Wenn der relative Fehler der Lösung nicht wesentlich größer ist als die relativen Fehler der Eingangsgrößen spricht man von einem gut konditionierten, anderenfalls von einem schlecht konditionierten Problem. Für das Beispiel linearer Gleichungssysteme lässt sich hierzu die Abschätzung

beweisen. Das Problem ist also gut konditioniert, wenn , das Produkt der Norm der Koeffizientenmatrix und der Norm ihrer Inversen, klein ist. Diese wichtige Kenngröße heißt Konditionszahl der Matrix und wird mit bezeichnet. In realen Problemen wird meist nicht nur, wie hier dargestellt, die rechte Seite fehlerbehaftet sein, sondern auch die Matrix . Dann gilt eine ähnliche, kompliziertere Abschätzung, in der aber ebenfalls die wesentliche Kennzahl zur Bestimmung der Kondition des Problems bei kleinen Datenfehlern ist.[7] Die Definition der Konditionszahl lässt sich auf nicht quadratische Matrizen verallgemeinern und spielt dann auch eine wesentliche Rolle bei Analyse linearer Ausgleichsprobleme. Wie gut ein solches Problem konditioniert ist, hängt allerdings nicht nur wie bei linearen Gleichungssytemen von der Konditionszahl der Koeffizientenmatrix ab, sondern auch von der rechten Seite , genauer vom Winkel zwischen den Vektoren und .[8] Nach dem Satz von Bauer-Fike lässt sich auch die Kondition des Eigenwertproblems mit Konditionszahlen beschreiben. Hier ist es jedoch nicht die Zahl , mit der sich Störungen der Eigenwerte abschätzen lassen, sondern , die Konditionszahl der Matrix , die via diagonalisiert.[9]

Während die Kondition eine Eigenschaft des zu lösenden Problems ist, ist Stabilität eine Eigenschaft des dafür verwendeten Verfahrens. Ein numerischer Algorithmus liefert – auch bei exakt gedachten Eingangsdaten – im Allgemeinen nicht die exakte Lösung des Problems. Zum Beispiel muss ein iteratives Verfahren, das eine wahre Lösung schrittweise immer genauer annähert, nach endlich vielen Schritten mit der bis dahin erreichten Näherungslösung abbrechen. Aber auch bei direkten Verfahren, die theoretisch in endlich vielen Rechenschritten die exakte Lösung ergeben, kommt es bei der Umsetzung auf dem Computer bei jeder Rechenoperation zu Rundungsfehlern. In der numerischen Mathematik werden zwei unterschiedliche Stabilitätsbegriffe verwendet, die Vorwärtsstabilität und Rückwärtsstabilität. Sei dazu allgemein eine Eingabegröße eines Problems und seine exakte Lösung, aufgefasst als Wert einer Funktion angewendet auf . Auch wenn man die Eingabegröße als exakt vorgegeben betrachtet, wird die Berechnung mit einem Algorithmus ein anderes, „falsches“ Ergebnis liefern, aufgefasst als Wert einer anderen, „falschen“ Funktion ebenfalls angewendet auf . Ein Algorithmus heißt vorwärtsstabil, wenn sich nicht wesentlich stärker von unterscheidet, als es aufgrund der Fehler in der Eingangsgröße und der Kondition des Problems sowieso zu erwarten wäre.ref>Peter Deuflhard, Andreas Hohmann: Numerische Mathematik 1. 4. Auflage. Walter de Gruyter, Berlin 2008, ISBN 978-3-11-020354-7, S. 44.</ref> Mit einer formalen Definition dieses Begriffs erhält man zwar ein naheliegendes und relativ anschauliches Maß für die Stabilität, aber bei komplizierten Algorithmen ist es oft schwierig, ihre Vorwärtsstabilität zu untersuchen. Daher wird im Allgemeinen zunächst eine sogenannte Rückwärtsanalyse betrachtet: Dazu wird ein bestimmt mit , das heißt: Der durch das Verfahren berechnete „falsche“ Wert wird aufgefasst als „richtiger“ Wert, der aber mit einem anderen Wert der Eingabegröße berechnet wurde.[10] Ein Algorithmus heißt rückwärtsstabil, wenn sich nicht wesentlich stärker von unterscheidet, als es aufgrund der Fehler in dieser Eingangsgröße sowieso zu erwarten wäre. Es lässt sich beweisen, dass ein rückwärtsstabiler Algorithmus auch vorwärtsstabil ist.[11]

Orthogonalität und orthogonale Matrizen

Wie die lineare Algebra zeigt, besteht ein enger Zusammenhang zwischen Matrizen und Basen des Vektorraums . Sind linear unabhängige Vektoren im gegeben, so sind diese eine Basis des Raums und jeder andere Vektor kann eindeutig als Linearkombination der Basisvektoren dargestellt werden. Ein Basiswechsel entspricht dabei der Multiplikation gegebener Vektoren und Matrizen mit einer Transformationsmatrix. Einen wichtigen Spezialfall bilden die Orthonormalbasen. Hierbei sind die Basisvektoren paarweise orthogonal zueinander („stehen senkrecht aufeinander“) und sind zudem alle auf euklidische Länge 1 normiert, so wie die Standardbasis im dreidimensionalen Raum. Fasst man die Basisvektoren spaltenweise zu einer Matrix

zusammen, so erhält man im Fall einer Orthonormalbasis eine sogenannte orthogonale Matrix.

Orthonormalbasen und orthogonale Matrizen besitzen zahlreiche bemerkenswerte Eigenschaften, auf denen die wichtigsten Verfahren der modernen numerischen linearen Algebra basieren.[12] Die Tatsache, dass bei einer orthogonalen Matrix die Spalten eine Orthonormalbasis bilden, lässt sich in Matrixschreibweise durch die Gleichung ausdrücken, wobei die transponierte Matrix und die Einheitsmatrix bezeichnen. Das zeigt wiederum, dass eine orthogonale Matrix regulär ist und ihre Inverse gleich ihrer Transponierten ist: . Die Lösung eines linearen Gleichungssystems lässt sich daher sehr einfach bestimmen, es gilt . Ein andere grundlegende Eigenschaft ist es, dass eine Multiplikation eines Vektors mit einer orthogonalen Matrix seine euklidische Norm unverändert lässt

.

Damit folgt für die Spektralnorm und für die Konditionszahl ebenfalls

,

denn ist ebenfalls eine orthogonale Matrix. Multiplikationen mit orthogonalen Matrizen bewirken also keine Vergrößerung des relativen Fehlers.[13]

Orthogonale Matrizen spielen auch eine wichtige Rolle in der Theorie und der numerischen Behandlung von Eigenwertproblemen. Nach der einfachsten Version des Spektralsatzes lassen sich symmetrische Matrizen orthogonal diagonalisieren. Damit ist gemeint: Zu einer Matrix , für die gilt, existiert eine orthogonale Matrix und eine Diagonalmatrix mit

.

Auf der Diagonale von stehen die Eigenwerte von und die Spalten von bilden eine Orthonormalbasis aus Eigenvektoren. Mit der sogenannten schurschen Normalform existiert eine Verallgemeinerung dieser orthogonalen Transformation für nicht symmetrische Matrizen.[14] Insbesondere ist nach dem oben erwähnten Satz von Bauer-Fike das Eigenwertproblem für symmetrische Matrizen stets gut konditioniert.[15]

Es gibt zwei spezielle, leicht handhabbare Arten orthogonaler Matrizen, die in zahllosen konkreten Verfahren der numerischen linearen Algebra zum Einsatz kommen: die Housholder-Matrizen und die Givens-Rotationen. Householder-Matrizen haben die Gestalt

mit einem Vektor mit . Geometrisch beschreiben sie Spiegelungen des -dimensionalen Raums an der -dimensionalen Hyperebene durch den Nullpunkt, die orthogonal zu ist. Ihre wesentliche Eigenschaft ist die folgende: Zu einem gegebenen Vektor lässt sich leicht ein Vektor bestimmen, sodass die zugehörige Householder-Matrix den Vektor auf ein Vielfaches von transformiert: mit . Dieses transformiert also alle Einträge von bis auf den ersten zu null. Wendet man auf diese Weise geeignete Householder-Transformationen Spalte für Spalte nacheinander auf eine Matrix an, so können alle Einträge von unterhalb der Hauptdiagonale zu null transformiert werden.

Givens-Rotationen sind spezielle Drehungen des , die eine zweidimensionale Ebene drehen und die anderen Dimensionen fest lassen. Die Transformation eines Vektors mit einer Givens-Rotions verändert daher nur zwei Einträge von . Durch geeignete Wahl des Drehwinkels kann dabei einer der beiden Einträge auf null gesetzt wird. Während Householder-Transformation, angewendet auf Matrizen, ganze Teilspalten transformieren, können Givens-Rotationen dazu verwendet werden, gezielt einzelne Matrixeinträge zu ändern.

Mit Householder-Transformationen und Givens-Rotationen können also dazu verwendet werden eine gegebene Matrix auf eine obere Dreiecksmatrix zu transformieren, oder anders ausgedrückt, eine QR-Zerlegung in eine orthogonale Matrix und eine obere Dreiecksmatrix zu berechnen. Die QR-Zerlegung ist ein wichtiges und vielseitiges Werkzeug, das in zahlreichen Verfahren aus allen Bereichen der numerischen linearen Algebra zum Einsatz kommt.[16]

Ähnlichkeitstransformationen

In der linearen Algebra wird zur Untersuchung des Eigenwertproblems einer Matrix mit Zeilen und Spalten das charakteristische Polynom verwendet, ein Polynom vom Grad . Die Eigenwerte von sind genau die Nullstellen von . Mit dem Fundamentalsatz der Algebra ergibt sich daraus direkt, dass genau Eigenwerte besitzt, wenn sie mit ihrer Vielfachheit gezählt werden. Allerdings können diese Eigenwerte, auch bei reellen Matrizen, komplexe Zahlen sein. Ist jedoch eine reelle symmetrische Matrix, dann sind ihre Eigenwerte alle reell.

Das charakteristische Polynom hat zwar eine große theoretische Bedeutung für das Eigenwertproblem, zur numerischen Berechnung ist es jedoch nicht geeignet. Das liegt vor allem daran, dass das Problem, aus gegebenen Koeffizienten die Nullstellen des zugehörigen Polynoms zu berechnen, im Allgemeinen sehr schlecht konditioniert ist: Kleine Störungen wie Rundefehler an Koeffizienten eines Polynoms können zu einer starken Verschiebung seiner Nullstellen führen. Damit würde ein gegebenenfalls gut konditioniertes Problem – die Berechnung der Eigenwerte – durch ein zwar mathematisch äquivalentes, aber schlecht konditioniertes Problem – die Berechnung der Nullstellen des charakteristischen Polynoms – ersetzt.[17] Viele numerische Verfahren zur Berechnung von Eigenwerten und Eigenvektoren beruhen daher auf einer anderen Grundidee, den Ähnlichkeitstransformationen: Zwei quadratische Matrizen und werden ähnlich genannt, wenn es eine reguläre Matrix mit

gibt. Es kann gezeigt werden, dass zueinander ähnliche Matrizen die gleichen Eigenwerte haben, bei einer Ähnlichkeitstransformation der Matrix auf die Matrix ändern sich also die gesuchten Eigenwerte nicht. Auch die zugehörigen Eigenvektoren lassen sich leicht ineinander umrechnen: Ist ein Eigenvektor von , dann ist ein Eigenvektor von zum gleichen Eigenwert. Das führt zu Grundideen, die in zahlreichen Algorithmen zum Einsatz kommen. Die Matrix wird durch Ähnlichkeitstransformation in eine Matrix überführt, für die das Eigenwertproblem effizienter zu lösen ist, oder es wird eine Folge von Ähnlichkeitstransformationen konstruiert, bei denen sich die Matrix einer Diagonal- oder Dreiecksmatrix immer weiter annähert. Aus den oben genannten Gründen werden dabei für die Transformationsmatrizen meist orthogonale Matrizen verwendet.[18]

Verfahren und Verfahrensklassen

Gaußsches Eliminationsverfahren

Das klassische Eliminationsverfahren von Gauß zur Lösung linearer Gleichungssysteme ist ein Ausgangspunkt und Vergleichsmaßstand für weiterentwickelte Verfahren. Es wird aber auch immer noch als einfaches und zuverlässiges Verfahren – insbesondere in seiner Modifikation als LR-Zerlegung (siehe unten) – für nicht zu große, gut konditionierte Systeme in der Praxis verbreitet eingesetzt. Das Verfahren eliminiert systematisch Variablen aus den gegebenen Gleichungen, indem geeignete Vielfache einer Gleichung von einer anderen Gleichung subtrahiert werden, bis ein System in Stufenform entsteht, das der Reihe nach von unten nach oben aufgelöst werden kann.

Numerische Überlegungen kommen ins Spiel, wenn die Stabilität des Verfahrens betrachtet wird. Soll mit dem -ten Diagonalelement der Matrix ein Element in derselben Spalte eliminiert werden, dann muss mit dem Quotienten

das -fache der -ten Zeile von der -Zeile subtrahiert werden. Dazu muss zumindest gelten, was sich durch geeignete Zeilenvertauschungen für eine reguläre Matrix stets erreichen lässt. Aber mehr noch: Ist sehr klein im Vergleich zu , dann ergäbe sich ein sehr großer Betrag von . In den nachfolgenden Schritten bestünde dann die Gefahr von Stellenauslöschungen durch Subtraktionen großer Zahlen und das Verfahren wäre instabil. Daher ist es wichtig, durch Zeilenvertauschungen, sogenannte Pivotisierung dafür zu sorgen, dass die Quotienten möglichst klein bleiben.[19]

Faktorisierungsverfahren

Die wichtigsten direkten Verfahren zur Lösung linearer Gleichungssysteme lassen sich als Faktorisierungsverfahren darstellen. Deren Grundidee ist es, die Koeffizientenmatrix des Systems in ein Produkt aus zwei oder mehr Matrizen zu zerlegen, allgemein etwa . Das lineare Gleichungssystem lautet damit und wird in zwei Schritten gelöst: Zuerst wird die Lösung des Systems berechnet und anschließend die Lösung des System . Es gilt dann , also ist die Lösung des ursprünglichen Problems. Auf den ersten Blick scheint dabei nur die Aufgabe, ein lineares Gleichungssystem zu lösen, durch die Aufgabe, zwei lineare Gleichungssysteme zu lösen, ersetzt zu werden. Die Idee dahinter ist es jedoch, die Faktoren und so zu wählen, dass die beiden Teilsysteme wesentlich einfacher zu lösen sind als das Ausgangssystem. Ein offensichtlicher Vorteil der Verfahrensklasse ergibt sich im Fall, dass mehrere lineare Gleichungssysteme mit derselben Koeffizientenmatrix aber unterschiedlichen rechten Seiten gelöst werden sollen: Die Faktorisierung von , im Allgemeinen der aufwändigste Verfahrensschritt, muss dann nur einmal berechnet werden.

LR-Zerlegung

Das Gaußsche Eliminationsverfahren kann als Faktorisierungsverfahren aufgefasst werden. Trägt man die Koeffizienten für in eine Matrix ein, ergibt sich ohne Zeilenvertauschungen mit einer unteren Dreiecksmatrix und einer oberen Dreiecksmatrix . Zusätzlich ist unipotent, das heißt alle Einträge auf der Hauptdiagonale von sind gleich 1. Wie gesehen müssen im Allgemeinen bei der Gauß-Elimination Zeilen von vertauscht werden. Das lässt sich formal mit Hilfe einer Permutationsmatrix darstellen, indem anstelle von die zeilenpermutierte Matrix faktorisiert wird:

.

Nach dem Grundprinzip der Faktorisierungsverfahren werden zur Lösung von also zunächst wie beschrieben die Dreiecksmatrizen und sowie gegebenenfalls die zugehörige Permutation bestimmt. In nächsten Schritt wird mit der zeilenpermutierten rechten Seite durch Vorwärtseinsetzen und schließlich durch Rückwärtseinsetzen gelöst.

Die LR-Zerlegung und damit das gaußsche Eliminationsverfahren ist mit geeigneter Pivotisierung „fast immer stabil“, das heißt in den meisten praktischen Anwendungsaufgaben tritt keine große Fehlerverstärkung auf. Es lassen sich jedoch pathologische Beispiele angeben, bei denen die Verfahrensfehler exponentiell mit der Anzahl der Unbekannten anwachsen.[20]

Cholesky-Zerlegung

Die Cholesky-Zerlegung ist wie die LR-Zerlegung eine Faktorisierung der Matrix in zwei Dreiecksmatrizen für den in vielen Anwendungen auftretenden Fall, dass symmetrisch und positiv definit ist, also erfüllt und nur positive Eigenwerte besitzt. Unter diesen Voraussetzungen gibt es eine untere Dreiecksmatrix mit

.

Ein allgemeiner Ansatz für die Matrixeinträge von führt auf ein explizites Verfahren, mit dem diese spaltenweise oder zeilenweise nacheinander berechnet werden können, das Cholesky-Verfahren. Durch diese Ausnutzung der Symmetrie von reduziert sich der Rechenaufwand gegenüber der LU-Zerlegung auf etwa die Hälfte.[21]

Symmetrische und positiv definite Koeffizientenmatrizen treten klassisch bei der Formulierung der sogenannten Normalgleichungen zur Lösung linearer Ausgleichsprobleme auf. Man kann zeigen, dass das Problem, zu minimieren, äquivalent zur Lösung des linearen Gleichungssystems

ist. Die Koeffizientenmatrix dieser Normalgleichungen ist symmetrisch und, wenn die Spalten von linear unabhängig sind, auch positiv definit. Es kann also mit dem Cholesky-Verfahren gelöst werden.[22] Dieses Vorgehen empfiehlt sich jedoch nur für gut konditionierte Probleme mit wenigen Unbekannten. Im Allgemeinen ist nämlich das System der Normalgleichungen deutlich schlechter konditioniert als das ursprünglich gegebene lineare Ausgleichsproblem. Es ist dann besser, nicht den Umweg über die Normalgleichungen zu gehen, sondern direkt eine QR-Zerlegung von zu verwenden.

QR-Zerlegung

Das lineare Gleichungssystem kann nach der Berechnung einer QR-Zerlegung

direkt nach dem allgemeinen Prinzip der Faktorisierungsverfahren gelöst werden; es ist nur noch mit durch Rückwärtseinsetzen zu bestimmen. Aufgrund der guten Kondition orthogonaler Matrizen treten dabei die möglichen Instabilitäten der LR-Zerlegung nicht ein.[23] Allerdings ist der Rechenaufwand im Allgemeinen etwa doppelt so groß, sodass unter Umständen eine Abwägung der Verfahren getroffen werden muss.[24]

Die QR-Zerlegung ist auch das gängige Verfahren zur Lösung nicht zu großer, gut konditionierter linearer Ausgleichsprobleme. Für das Problem

Minimiere

gilt mit und

.

Dabei wurde verwendet, dass orthogonal ist, also die euklidische Norm erhält, und dass gilt. Der letzte Ausdruck lässt sich einfach durch Rückwärtseinsetzen der ersten Zeilen von minimieren.ref>Peter Deuflhard, Andreas Hohmann: Numerische Mathematik 1. 4. Auflage. Walter de Gruyter, Berlin 2008, ISBN 978-3-11-020354-7, S. 76 f.</ref>

Fixpunktiteration mit Splitting-Verfahren

Eine völlig andere Idee, um zu lösen, besteht darin, einen Startvektor zu wählen und daraus schrittweise , immer neue Näherungen an die gesuchte Lösung zu berechnen. Im Fall der Konvergenz der Folge gegen wird dann diese Iteration nach einer geeigneten Anzahl von Schritten mit einer ausreichend genauen Näherung für abgebrochen. Die einfachsten und wichtigsten Verfahren dieser Art verwenden eine Iteration der Gestalt

mit einer geeigneten Matrix und einem geeigneten Vektor . Es lässt sich beweisen, dass solche Verfahren genau dann konvergieren, wenn alle Eigenwerte von einen Betrag echt kleiner als 1 haben. In diesem Fall konvergieren die Iterierten gegen eine Lösung der Gleichung , also gegen einen Fixpunkt der Iterationsfunktion .

Ein systematisches Vorgehen bei der Suche nach geeigneten Algorithmen dieser Gestalt ermöglicht die Idee der Splitting-Verfahren. Dabei wird die Matrix in eine Summe

zerlegt mit einer leicht zu invertierenden Matrix und dem Rest . Durch Einsetzen und Umstellen ergibt sich damit aus die Fixpunktgleichung

.

Mit und erhält man so ein Iterationsverfahren der Gestalt , das im Falle der Konvergenz die Lösung von liefert. Die Konvergenzgeschwindigkeit ist umso größer, je kleiner der betragsgrößte Eigenwert der Iterationsmatrix ist. Dieser lässt sich auch durch beliebige Matrixnormen von abschätzen.[25]

Als klassische Beispiele für Splitting-Verfahren verwendet das Jacobi-Verfahren für die Diagonalmatrix mit der Hauptdiagonale von , das Gauß-Seidel-Verfahren den unteren Dreiecksanteil von . Zur Konvergenzbeschleunigung der Fixpunktverfahren lässt sich die Idee der Relaxation nutzen. Denkt man sich die Iteration in der Form

mit der Korrektur im -ten Schritt dargestellt, geht man mit einem geeignet gewählten Relaxationsparameter zu

über.[26] Zum Beispiel erhält man auf diese Weise aus dem Gauß-Seidel-Verfahren das SOR-Verfahren.[27]

Literatur

Weblinks

Einzelnachweise

  1. Trefethen, Bau: Numerical Linear Algebra. 1997, S. ix.
  2. Demmel: Applied Numerical Linear Algebra. 1997, S. 83–90.
  3. Golub, Van Loan: Matrix Computations. 1996, S. 391 ff.
  4. Golub, Van Loan: Matrix Computations. 1996, S. 183, S. 193, S. 201.
  5. Wolfgang Dahmen, Arnold Reusken: Numerik für Ingenieure und Naturwissenschaftler. 2. Auflage. Springer, Berlin/Heidelberg 2008, ISBN 978-3-540-76492-2, S. 18 f.
  6. Wolfgang Dahmen, Arnold Reusken: Numerik für Ingenieure und Naturwissenschaftler. 2. Auflage. Springer, Berlin/Heidelberg 2008, ISBN 978-3-540-76492-2, 2.5.1 Operatornormen, Konditionszahlen linearer Abbildungen., S. 26–34.
  7. Hans Rudolf Schwarz, Norbert Köckler: Numerische Mathematik. 8. Auflage. Vieweg+Teubner, Wiesbaden 2011, ISBN 978-3-8348-1551-4, S. 53 f.
  8. Trefethen, Bau: Numerical Linear Algebra. 1997, S. 131.
  9. Martin Hanke-Bourgeois: Grundlagen der Numerischen Mathematik und des Wissenschaftlichen Rechnens. 3. Auflage. Vieweg+Teubner, Wiesbaden 2009, ISBN 978-3-8348-0708-3, S. 214.
  10. Wolfgang Dahmen, Arnold Reusken: Numerik für Ingenieure und Naturwissenschaftler. 2. Auflage. Springer, Berlin/Heidelberg 2008, ISBN 978-3-540-76492-2, S. 44.
  11. Peter Deuflhard, Andreas Hohmann: Numerische Mathematik 1. 4. Auflage. Walter de Gruyter, Berlin 2008, ISBN 978-3-11-020354-7, S. 49 f.
  12. Trefethen, Bau: Numerical Linear Algebra. 1997, S. 11.
  13. Wolfgang Dahmen, Arnold Reusken: Numerik für Ingenieure und Naturwissenschaftler. 2. Auflage. Springer, Berlin/Heidelberg 2008, ISBN 978-3-540-76492-2, S. 94.
  14. Demmel: Applied Numerical Linear Algebra. 1997, S. 146–148.
  15. Demmel: Applied Numerical Linear Algebra. 1997, S. 150.
  16. Higham: Accuracy and Stability of Numerical Algorithms. 2002, S. 354 ff.
  17. Peter Deuflhard, Andreas Hohmann: Numerische Mathematik 1. 4. Auflage. Walter de Gruyter, Berlin 2008, ISBN 978-3-11-020354-7, S. 135.
  18. Börm, Mehl: Numerical Methods for Eigenvalue Problems. 2012, S. 15–19
  19. Martin Hanke-Bourgeois: Grundlagen der Numerischen Mathematik und des Wissenschaftlichen Rechnens. 3. Auflage. Vieweg+Teubner, Wiesbaden 2009, ISBN 978-3-8348-0708-3, S. 46–57.
  20. Demmel: Applied Numerical Linear Algebra. 1997, S. 49.
  21. Wolfgang Dahmen, Arnold Reusken: Numerik für Ingenieure und Naturwissenschaftler. 2. Auflage. Springer, Berlin/Heidelberg 2008, ISBN 978-3-540-76492-2, S. 88.
  22. Wolfgang Dahmen, Arnold Reusken: Numerik für Ingenieure und Naturwissenschaftler. 2. Auflage. Springer, Berlin/Heidelberg 2008, ISBN 978-3-540-76492-2, S. 127 f.
  23. Demmel: Applied Numerical Linear Algebra. 1997, S. 123 f.
  24. Meister: Numerik linearer Gleichungssysteme. S. 64.
  25. Meister: Numerik linearer Gleichungssysteme. S. 72–75.
  26. Meister: Numerik linearer Gleichungssysteme. S. 85.
  27. Meister: Numerik linearer Gleichungssysteme. S. 96.

Dieser Artikel nimmt am Schreibwettbewerb teil. Bitte hilf mit, ihn zu verbessern!