W. Oevel

Numerik I

Skript zur Vorlesung , Universität Paderborn, Wintersemester 97/98

Inhalt

1 Kurzer Ausblick 1

2 Fehleranalyse 5 2.1 Gleitpunktdarstellung . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2 Arithmetik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.3 Fehlerfortpflanzung . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.3.1 Fehlerfortpflanzung in der Grundarithmetik . . . . . . . . 12 2.3.2 Differentielle Fehleranalyse . . . . . . . . . . . . . . . . . 14

3 Nichtlineare Gleichungen (skalar) 21 3.1 Der Banachsche Fixpunktsatz . . . . . . . . . . . . . . . . . . . . 21 3.2 Superlineare Konvergenz . . . . . . . . . . . . . . . . . . . . . . . 26 3.3 Das Newton-Verfahren . . . . . . . . . . . . . . . . . . . . . . . . 28 3.4 Höhere Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.5 Bisektion (Intervallhalbierung) . . . . . . . . . . . . . . . . . . . 33 3.6 Das Sekantenverfahren . . . . . . . . . . . . . . . . . . . . . . . . 34 3.7 Mehrfache Nullstellen . . . . . . . . . . . . . . . . . . . . . . . . 37 3.8 Nullstellen von Polynomen . . . . . . . . . . . . . . . . . . . . . . 38

3.8.1 Das Horner-Schema . . . . . . . . . . . . . . . . . . . . . 38 3.8.2 Nullstellenabschätzung . . . . . . . . . . . . . . . . . . . . 40 3.8.3 Das Newton-Verfahren für Polynome . . . . . . . . . . . . 41

4 Lineare Gleichungssysteme 45 4.1 Vorbemerkungen . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.2 Blockzerlegungen . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.3 Strassens schnelle Matrixmultiplikation . . . . . . . . . . . . . . . 46 4.4 Dreieckssysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.5 Der Gauß-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . 49 4.6 LR-Faktorisierung . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.7 Bandmatrizen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 4.8 Pivotierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 4.9 Cholesky-Faktorisierung . . . . . . . . . . . . . . . . . . . . . . . 62 4.10 Invertierung von Matrizen . . . . . . . . . . . . . . . . . . . . . . 66 4.11 QR-Faktorisierung . . . . . . . . . . . . . . . . . . . . . . . . . . 66 4.12 Normen und Fehlerkontrolle . . . . . . . . . . . . . . . . . . . . . 76 4.13 Nachiteration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 4.14 Iterative Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . 86

5 Nichtlineare Gleichungssysteme 93

6 Eigenwertprobleme 99 6.1 Allgemeine Abschätzungen . . . . . . . . . . . . . . . . . . . . . 100 6.2 Die von-Mises-Iteration . . . . . . . . . . . . . . . . . . . . . . . 105 6.3 Die Wielandt-Rayleigh-Iteration . . . . . . . . . . . . . . . . . . 108 6.4 Weitere Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . 113

6.4.1 Das Jacobi-Verfahren für symmetrische Matrizen . . . . . 113 6.4.2 Das QR-Verfahren . . . . . . . . . . . . . . . . . . . . . . 114

7 Interpolation 115

7.1 Polynominterpolation . . . . . . . . . . . . . . . . . . . . . . . . 115 7.1.1 Entwicklung nach Monomen . . . . . . . . . . . . . . . . . 116 7.1.2 Lagrange-Darstellung . . . . . . . . . . . . . . . . . . . . 116 7.1.3 Newton-Darstellung . . . . . . . . . . . . . . . . . . . . . 117 7.1.4 Praktische Durchführung der Interpolation . . . . . . . . 123

8 Splines 127 8.1 Spline-Räume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 8.2 B-Splines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 8.3 Interpolation mit Splines . . . . . . . . . . . . . . . . . . . . . . . 137

8.3.1 Kubische Splines . . . . . . . . . . . . . . . . . . . . . . . 138 8.3.2 Die Minimaleigenschaft kubischer Splines . . . . . . . . . 141 8.3.3 Fehlerabschätzungen . . . . . . . . . . . . . . . . . . . . . 144

9 Quadratur (Integration) 147 9.1 Newton-Cotes-Formeln . . . . . . . . . . . . . . . . . . . . . . . . 148 9.2 Gauß-Quadratur . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 9.3 Adaptive Quadratur . . . . . . . . . . . . . . . . . . . . . . . . . 161

Literatur

[Scw93] H.R. Schwarz: Numerische Mathematik. Stuttgart: Teubner 1993. (hervorragende, leicht lesbare Einführung, sehr empfehlenswert)

[Sto93] J. Stoer: Numerische Mathematik 1. Berlin: Springer 1993.

[StB90] J. Stoer und R. Bulirsch: Numerische Mathematik 2. Berlin: Springer 1990. (Klassiker, sehr umfangreich und vollständig, als erste Einführung weniger leicht lesbar als [Scw93], da sehr detailliert)

[ScW92] R. Schaback und H. Werner: Numerische Mathematik. Berlin: Springer 1992. (gut lesbar, kompakter als [Scw93],[Sto93],[StB90])

[Oev96] W. Oevel: Einführung in die Numerische Mathematik. Heidelberg: Spektrum Akademischer Verlag 1996. (leicht lesbare Einführung, sehr breit geschrieben, reduzierte Themenauswahl im Vergleich zu [Scw93],[Sto93],[StB90],[ScW93]. Ist eine sehr detaillierte Ausarbeitung der in dieser Vorlesung behandelten Themen.)

Sammlung weiterer Literatur:

1. Numerische Mathematik

Abramowitz, M.; Stegun, I. A. (Eds.): Handbook of Mathematical Functions. Washington: National Bureau of Standards 1965; New York: Dover 1982.

Atkinson, K. E.: Introduction to Numerical Analysis. New York: Wiley 1989.

Bunse, W.; Bunse-Gerstner, A.: Numerische lineare Algebra. Stuttgart: Teubner 1985.

Conte, S. D.; de Boor, C.: Elementary Numerical Analysis. An Algorithmic Approach. Singapore: McGraw–Hill 1986.

Deuflhard, P.; Hohmann, A.: Numerische Mathematik I. Eine algorithmisch orientierte Einführung. Berlin: de Gruyter 1993.

Deuflhard, P.; Bornemann, F.: Numerische Mathematik II. Integration gewöhnlicher Differentialgleichungen. Berlin: de Gruyter 1994.

Engeln–Müllges, G.; Reutter, F.: Numerische Mathematik für Ingenieure. Mannheim: Bibliographisches Institut 1994.

Golub, G. H.; Van Loan, C. F.: Matrix Computations.

Baltimore: Johns Hopkins University Press 1989.

Golub, G. H.; Ortega, J. M.: Wissenschaftliches Rechnen und Differentialgleichungen. Eine Einführung in die Numerische Mathematik. Lemgo: Heldermann 1995.

Golub, G. H.; Ortega, J. M.: Scientific Computing. Eine Einführung in das wissenschaftliche Rechnen und Parallele Numerik. Stuttgart: Teubner 1996.

Hämmerlin, G.; Hoffmann, K.-H.: Numerische Mathematik. Berlin: Springer 1994.

Hager, W. W.: Applied Numerical Linear Algebra. Englewood Cliffs. Prentice Hall 1988.

Hart, J. F.; et al.: Computer Approximations. New York: Wiley 1978.

Isaacson, E.; Keller, H. B.: Analyse numerischer Verfahren. Frankfurt: Deutsch 1973.

– Nachdruck der amerikanischen Originalausgabe: Analysis of Numerical Methods.

New York: Dover 1994.

Kiełbasiński, A.; Schwetlick, H.: Numerische lineare Algebra.

Berlin: Deutscher Verlag der Wissenschaften 1988.

Köckler, N.: Numerische Algorithmen in Softwaresystemen – unter besonderer Berücksichtigung der NAG-Bibliothek. Stuttgart: Teubner 1990.

Locher, F.: Numerische Mathematik für Informatiker. Berlin: Springer 1993.

Maess, G.: Vorlesungen über Numerische Mathematik. Band I: Lineare Algebra. Band II: Analysis. Basel: Birkhäuser 1985, 1987.

Maron, M. J.: Numerical Analysis: A Practical Approach. New York: Macmillan 1991.

Oevel, W.: Einführung in die Numerische Mathematik. Heidelberg: Spektrum 1996.

Opfer, G.: Numerische Mathematik für Anfänger. Braunschweig: Vieweg 1994.

Schaback, R.; Werner, H.: Numerische Mathematik. Berlin: Springer 1993.

Schwarz, H. R.: Numerische Mathematik. Stuttgart: Teubner 1993.

Späth, H.: Numerik. Eine Einführung für Mathematiker und Informatiker. Braunschweig: Vieweg 1994.

Stoer, J.: Numerische Mathematik 1, 2 (Band 2 gemeinsam mit R. Bulirsch). Berlin: Springer 1994, 1991 .

Stummel, F.; Hainer, K.: Praktische Mathematik. Stuttgart: Teubner 1982.

Törnig, W.; Spellucci, P.: Numerische Mathematik für Ingenieure und Physiker. Band 1: Numerische Methoden der Algebra. Band 2: Eigenwertprobleme und numerische Methoden der Analysis. Berlin: Springer 1988, 1990.

Überhuber, C.: Computer–Numerik 1, 2. Berlin: Springer 1995.

Werner, J.: Numerische Mathematik. Band 1: Lineare und nichtlineare Gleichungssysteme, Interpolation, numerische Integration. Band 2: Eigenwertaufgaben, lineare Optimierungsaufgaben, unrestringierte Optimierungsaufgaben. Braunschweig: Vieweg 1992.

2. Programmsammlungen

Anderson, E.; Bai, Z.; Bischof, C.; et al.: LAPACK Users’ Guide. Philadelphia: SIAM 1995.

Dongarra, J. J.; Bunch, J. R.; Moler, C. B.; Stewart, G. W.: LINPACK Users’ Guide. Philadelphia: SIAM 1979.

Engeln–Müllges, G.; Uhlig, G.: Numerical Algorithms with Fortran. Berlin: Springer 1996.

Garbow, B. S.; Boyle, J. M.; Dongarra, J. J.; Moler, C. B.:

Matrix Eigensystem Routines – EISPACK Guide Extension. Berlin: Springer 1990.

NAG Fortran Library. Oxford: Numerical Algorithms Group.

– Introductory Guide, Mark 16. 1993.

– Manual, Mark 16, Vols. 1–12. 1993.

– Mark 16, Contents Summary. 1993.

Piessens, R.; de Doncker–Kapenga, E.; Überhuber, C.W.; Kahaner, D. K.: QUADPACK, A Subroutine Package for Automatic Integration. Berlin: Springer 1983.

Press, W. H.; Flannery, B. P.; Teukolsky, S. A.:

Numerical Recipes in FORTRAN: The Art of Scientific Computing. Cambridge: Cambridge University Press 1993.

Rice, J.; Boisvert, R. F.: Solving Elliptic Problems Using ELLPACK. Berlin: Springer 1985.

Schwarz, H. R.: FORTRAN–Programme zur Methode der finiten Elemente. Stuttgart: Teubner 1991.

Smith, B.T.; Boyle, J.M.; Dongarra, J.J.; Garbow, B.S.; Ikebe, Y.; Klema, V. C.; Moler, C. B.: Matrix Eigensystem Routines – EISPACK Guide. Berlin: Springer 1990.

Abkürzung SIAM : Society for Industrial and Applied Mathematics INHALT vii

Kapitel 1

Kurzer Ausblick

Numerik: approximative Lösung eines mathem. Problems, Zahlenwerte als

↓14.10.97

Ergebnis Aspekte:

1) Theorie: finde praktisch durchführbares Verfahren zur Approximation des Problems

2) Verfahrensfehler

3) Effizienz

4) Stabilität (Verstärkung von Fehlern im Lauf der Rechnung)

Beispiel 1.1: Berechne I := ∫_{0}^{1} e^{−x^{2}}dx. Verfahren: approximiere ∫_{a}^{b} f(x)dx durch

I_{Riemann} = h ∑_{i=0}^{n−1} f(x_{i}) , x_{i} = a + i h , h = \frac{b − a}{n}
oder I_{T rapez}  = h ( \frac{f(a)}{2} + ∑_{i=1}^{n−1} f(x_{i}) + \frac{f(b)}{2} )
oder I_{Simpson} =^{(n gerade)} \frac{h}{6} ( f(x_{0}) + 4f(x_{1}) + 2f(x_{2}) + 4f(x_{3}) + 2f(x_{4}) + ⋯

⋯ + 4f(x_{n−3}) + 2f(x_{n−2}) + 4f(x_{n−1}) + f(x_{n}) )

1) Theorie: für n → ∞ konvergieren diese Werte gegen I.

2) Verfahrensfehler: die Theorie liefert Abschätzungen, aus denen (in der Regel) Simpson besser als T rapez besser als Riemann 2 KAPITEL 1. KURZER AUSBLICK

folgt. In der Tat:

n = 10 → \{ \begin{matrix}|I − I_{Riemann}| & ≈ & 0.031 \\ |I − I_{T rapez}| & ≈ & 0.00061 \\ |I − I_{Simpson}| & ≈ & 8.2 × 10^{−7} \end{matrix}

3) zur Effizienz:

Beispiel 1.2: Berechne für gegebene Werte f_{0}, …, f_{N−1}

d_{k} = ∑_{j=0}^{N−1} f_{j} e^{\sqrt{−1} jk 2π/N} , k = 0, 1, …, N − 1

(“diskrete Fourier-Transformation” (f_{0}, …, f_{N−1}) ↦ (d_{0}, …, d_{N−1})).

Naiv:  man braucht ≈ N^{2} Rechenoperationen
FFT-Algorithmus: es geht mit ≈ N log_{2} N Rechenoperationen

4) zur Stabilität:

Beispiel 1.3: Betrachte lineares Gleichungssystem

( \begin{matrix}10 & 7.1 \\ 2 & \sqrt{2} \end{matrix} ) ( \begin{matrix}x \\ y \end{matrix} ) = ( \begin{matrix}10 \\ 4 \end{matrix} )

mit exakter Lösung

x = 2 \frac{71 − 25 \sqrt{2}}{71 − 50 \sqrt{2}} ≈ 246.401... , y = − \frac{100}{71 − 50 \sqrt{2}} ≈ −345.635... .

Problem: ersetze \sqrt{2} durch numerische Approximation \sqrt{2} ˆ= 1.41421..., etwa:

\begin{aligned}\sqrt{2} ˆ= 1.41 & → & x = 143.000... y = −200.000... \\ \sqrt{2} ˆ= 1.414 & → & x = 237.666... y = −333.333... \\ \sqrt{2} ˆ= 1.4142 & → & x = 245.827... y = −344.827... \end{aligned}

Phänomen: Ungenauigkeiten können sich dramatisch verstärken (das Problem ist “schlecht konditioniert”, “instabil”). Hier wird ein Fehler in \sqrt{2} in x um einen Faktor ≈ 42 410, in y um einen Faktor ≈ 59 732 verstärkt (Aufgabe 4). Verbesserung:

y = − \frac{100}{71 − 50 \sqrt{2}} = − \frac{100 (71 + 50 \sqrt{2})}{(71 − 50 \sqrt{2})(71 + 50 \sqrt{2})} = \frac{−100 (71 + 50 \sqrt{2})}{41}

= −\frac{7100}{41} − \frac{5000}{41} \sqrt{2} = \{ \begin{matrix}−345.129... für \sqrt{2} ˆ= 1.41 \\ −345.609... für \sqrt{2} ˆ= 1.414 \\ −345.634... für \sqrt{2} ˆ= 1.4142 \end{matrix}

Jetzt nur noch Fehlerverstärkung um den Faktor 5000/41 ≈ 122.

Fazit: Aufgabe der Numerik ist die Entwicklung effizienter und stabiler Algorithmen zur zahlenmäßigen Approximation mathematischer Probleme. Nützliche Notation: Definition 1.4: (Landau-Symbole)

Für Funktionen f, g : ℝ ↦ ℝ (oder ℕ ↦ ℝ) bedeutet

f(x) = O(g(x)) im Limes x → x_{0} ,

daß f(x)/g(x) in einer Umgebung von x_{0} beschränkt ist. Die Symbolik

f(x) = o(g(x)) im Limes x → x_{0}

steht für die Aussage lim_{x→x_{0}} f(x)/g(x) = 0. Beispiele:

\frac{n^{3} + n^{2}}{3} = O(n^{3}) (im Limes n → ∞)
1 − cos(x) = o(x) (im Limes x → 0)

4 KAPITEL 1. KURZER AUSBLICK

Fehleranalyse

↓15.10.97

Eingabeparameter x⃗ ⟶ Numerisches Verfahren (Algorithmus) ⟶ Ausgabewerte y⃗

Fehlerquellen:

• Eingabefehler: x⃗ ist mit Fehlern behaftet (z.B. Meßdaten, durch numerische Rechnung entstanden, ...)

• Verfahrensfehler: das Verfahren ist nicht exakt (z.B. Integralapproximation durch eine endliche Riemann-Summe)

• Rundungsfehler: Zahlen (z.B. π = 3.1415...) werden nicht exakt dargestellt, diese Fehler pflanzen sich beim Rechnen fort.

Eingabefehler: hängen vom Kontext des konkreten Problems ab. Verfahrensfehler: sind mit dem jeweiligen Algorithmus zu diskutieren (Theorie). Rundungsfehler: mathematisch kaum exakt zu kontrollieren. (Zukunft: Ergebnisverifikation, Intervallrechnung durch Computer)

In diesem Kapitel werden \underline{heuristische} Hilfsmittel zur \underline{approximativen} Analyse von Rundungsfehlern und ihrer Fortpflanzung bereitgestellt.

2.1 Gleitpunktdarstellung (floating point numbers)

Im Rechner wird nur begrenzter Speicherplatz zur Darstellung reeller Zahlen reserviert ⟹ die Zahlenwelt des Rechners (“Maschinenzahlen”) besteht nur aus endlich vielen rationalen Zahlen. Praktisch alle x ∈ ℝ müssen hierdurch approximiert werden und es kommt unvermeidlich zu Darstellungs- (=Rundungs-)fehlern.

Ziel: approximiere “große” Zahlen (z.B. π^{10} × e^{30}) und “kleine” Zahlen (z.B. e^{−20}/40!) mit derselben Güte. Dies wird durch Gleitpunktdarstellung erreicht. Man wählt eine Basis E ∈ {2, 3, 4, …} und stellt eine reelle Zahl dar durch:

Definition 2.1:

Die Gleitpunktdarstellung von x ∈ ℝ \ \{0\} zur \underline{Basis} E ist

x = sign(x) a × E^{b}

mit dem \underline{Vorzeichen} sign(x) = ±, der \underline{Mantisse} a ∈ [E^{−1}, 1) ⊂ ℝ und dem \underline{Exponenten} b ∈ ℤ.

Beispiel 2.2: Zur Basis E = 10:

\begin{aligned}x & = & −π^{10} e^{30} & = & − 0.100076... × 10^{19} \\ x & = & e^{−20}/40! & = & + 0.2526... × 10^{−56} \\ x & = & 10 & = & + 0.100... × 10^{2} \end{aligned}

Bemerkung 2.3: Bei gegebener Basis ist diese Darstellung eindeutig:

b = ⌊log_{E}(|x|) + 1⌋ , a = |x| E^{−b}

(mit ⌊y⌋ = Gauß-Klammer = größte ganze Zahl ≤ y).

Die Mantisse wird in Ziffern zerlegt:

Lemma 2.4:

Zu a ∈ [E^{−1}, 1) existieren Ziffern a_{1}, a_{2}, … ∈ {0, 1, …, E−1} mit a_{1} ≠ 0, sodaß

a = a_{1} E^{−1} + a_{2} E^{−2} + a_{3} E^{−3} + · · · .

Beweis: Algorithmische Konstruktion

a_{1} = ⌊a E⌋ , a_{2} = ⌊(a − a_{1}E^{−1}) E^{2}⌋ , a_{3} = ⌊(a − a_{1}E^{−1} − a_{2}E^{−2}) E^{3}⌋

usw. Nach Aufgabe 1 gilt 0 ≤ a − (a_{1}E^{−1} + ⋯ + a_{n}E^{−n}) < E^{−n}, also

a = lim_{n→∞} ∑_{i=1}^{n} a_{i} E^{−i} .

Q.E.D.

Für E = 10 ist dies unsere gewohnte Dezimalschreibweise:

a = 0 . 1 2 3 4 5 …
↑ ↑ ↑
a_{1} a_{2} a_{3} …

Achtung! 0.19999... ≡ 0.20000... . Allgemein gilt:

∑_{i=n_{0}+1}^{∞}(E − 1)E^{−i} = (E − 1)E^{−(n_{0}+1)} ∑_{i=0}^{∞} E^{−i} = \frac{(E − 1)E^{−(n_{0}+1)}}{1 − 1/E} = E^{−n_{0}} .

Vereinbarung 2.5:

Eine Ziffernfolge der Form a_{n_{0}+1} = a_{n_{0}+2} = … = E −1 (mit a_{n_{0}} < E −1) ist nicht zulässig und wird umgeschrieben:

(a_{1}, …, a_{n_{0}}, E − 1, E − 1, …) = (a_{1}, …, a_{n_{0}} + 1, 0, 0, …) .

Lemma 2.6:

Mit Vereinbarung 2.5 ist die Ziffernfolge für a ∈ [E^{−1}, 1) eindeutig.

Beweis: Betrachte zwei Ziffernfolgen

a = ∑_{i=1}^{n−1} a_{i}E^{−i} + ∑_{i=n}^{∞} a_{i}E^{−i} = ∑_{i=1}^{n−1} a_{i}E^{−i} + ∑_{i=n}^{∞} ã_{i}E^{−i}

mit a_{n} ≠ ã_{n}, o.B.d.A. a_{n} > ã_{n}. Es folgt

(a_{n} − ã_{n})E^{−n} = ∑_{i=n+1}^{∞}(ã_{i} − a_{i})E^{−i} <^{(V ereinb. 2.5)} ∑_{i=n+1}^{∞}(E − 1)E^{−i} = E^{−n} .

Widerspruch zu (a_{n} − ã_{n})E^{−n} ≥ E^{−n}.

Q.E.D.

Bei “N-stelliger Darstellung” werden nur die ersten N Ziffern einer Mantisse gespeichert, der Rest wird abgeschnitten (bzw. gerundet):

Definition 2.7: (Rundung, “round”)

Definiere rd : [E^{−1}, 1) ↦ [E^{−1}, 1) ∩ ℚ:

rd(a) = rd(a_{1}E^{−1} + ⋯ + a_{N}E^{−N} + a_{N+1}E^{−(N+1)} + ⋯)
:= a_{1}E^{−1} + ⋯ + a_{N}E^{−N}  (“Abrundung”) .

Alternativ ersetzt man a_{N} durch a_{N} + 1, falls

∑_{i=N+1}^{∞} a_{i}E^{−i} ≥ \frac{1}{2}E^{−N}

gilt (“eigentliche Rundung”). Hierbei sind eventuell rekursiv Überträge abzuarbeiten, falls sich a_{N} + 1 = E ergibt:

z.B. rd(0.4999678) = 0.5000 bei Rundung auf N = 4 Dezimalziffern.

Die sich durch Abrundung oder eigentliche Rundung ergebende rationale Zahl rd(a) approximiert a ∈ [E^{−1}, 1):

|a − rd(a)| \{ \begin{matrix}< E^{−N} & (Abrundung) \\ ≤ \frac{1}{2}E^{−N} & (eigentliche Rundung) \end{matrix}

Mit a ≥ E^{−1} folgt

|\frac{a − rd(a)}{a}| \{ \begin{matrix}< E^{1−N} & (Abrundung) \\ ≤ \frac{1}{2}E^{1−N} & (eigentliche Rundung) \end{matrix}

Definition 2.8:

Eine Zahl x ∈ ℝ\{0} wird im Rechner durch die N-stellige Gleitpunktapproximation zur Basis E

rd(x) = rd(sign(x) a × E^{b}) := sign(x) rd(a) × E^{b} ˆ= (±, a_{1}, …, a_{N}, b)

dargestellt. Es gilt

|\frac{x − rd(x)}{x}| = |\frac{a − rd(a)}{a}| ≤ τ := \{ \begin{matrix}E^{1−N} & (Abrundung) \\ \frac{1}{2}E^{1−N} & (eigentliche Rundung) \end{matrix}

mit der (relativen) Maschinengenauigkeit τ.

Grob gesprochen ist rd(x) die x ∈ ℝ nächstgelegene rationale Zahl, die auf dem Rechner dargestellt werden kann. Typisch ist E = 2 (binär) oder E = 16 (hexa-dezimal).

2.1. GLEITPUNKTDARSTELLUNG 9

Beispiel 2.9: 64-bit Variablen, E = 2:

16.10.97↓

64 bits

±|  .......  | ...
↗
Vorzeichen- bit  52 bits für die Mantisse a 11 bits für den Exponenten b

Exponentenbereich b_{min}, …, b_{max}: Mit 11 bits lassen sich die ganzen Zahlen \underbrace{(0, …, 0)}_{10} ˆ= 0 bis \underbrace{(1, …, 1)}_{10} ˆ= 2^{0} + 2^{1} + ⋯ + 2^{9} = 1023 und ein Vorzeichen darstellen,

also b ∈ {−1023, …, 1023}, also E^{b} ∈ {2^{−1023}, …, 2^{1023}}. Es gilt 2^{±1023} ≈ 10^{±308}.

Mantissengenauigkeit: Mit 52 bits lassen sich

\underbrace{a_{1}} , a_{2} , a_{3} , …, a_{53} ∈ \{0, 1\}
= 1 (braucht nicht gespeichert zu werden)

speichern, also N = 53, d.h., bei eigentlicher Rundung: τ = \frac{1}{2}2^{1−53} ≈ 1.1 × 10^{−16}.

Ergebnis: Mit 64 bits lassen sich alle reellen Zahlen x im Bereich 10^{−308} ≤ |x| ≤ 10^{308} bis auf etwa 16 Dezimalstellen genau approximieren.

Einige FORTRAN-90 Compiler bieten 3 Datentypen für reelle Variablen an:

Typ  bits  τ  E^{b_{min/max}}
REAL (KIND=4)  32 ≈ 10^{−7} ≈ 10^{±38}  (REAL (normal))
REAL (KIND=8)  64 ≈ 10^{−16} ≈ 10^{±308} (DOUBLE PRECISION)
REAL (KIND=16) 128 ≈ 10^{−31} ≈ 10^{±308}

Definition 2.10:

Für eine gegebene Basis E, eine Stellenzahl N und einen Exponentenbereich b_{min}, …, b_{max} ist

\begin{matrix}M = \{0\} ∪ \{±( ∑_{i=1}^{N} a_{i}E^{−i} ) E^{b} ; a_{i} ∈ \{0, 1, …, E − 1\} , \\ a_{1} ≠ 0 , b ∈ \{b_{min}, …, b_{max}\} \} \end{matrix}

die Menge der vom Rechner darstellbaren Maschinenzahlen.

Sie ist durch die Software (Compiler) bzw. die Hardware (floating-point-Prozessor) vorgegeben. Sollte in einer Rechnung der Exponentenbereich in M verlassen werden (overflow/underflow), so wird in der Regel das Symbol NaN (=Not a Number) ausgegeben.

Merke: Die Maschinengenauigkeit τ ist die Größe, welche die Rundungsfehler beschreibt. Sie ist der Beschreibung des Compilers zu entnehmen und hängt von der internen Darstellung E und der Speicherlänge N ab. Innerhalb des Exponentenbereichs b_{min}, …, b_{max} können alle reellen Zahlen x ∈ ℝ mit einer durch τ beschränkten relativen Genauigkeit durch rd(x) ∈ M approximiert werden:

rd(x) = x + x τ_{x} mit |τ_{x}| ≤ τ = Maschinengenauigkeit,

wobei

τ_{x} := \frac{rd(x) − x}{x}

(relativer) Darstellungsfehler der Zahl x ∈ ℝ heißt.

2.2 Arithmetik

Als Grundarithmetik wird bezeichnet:

• die 4 Grundrechenarten +, −, ∗, / und Exponentiation ∗∗ (x∗∗ y = x^{y}),

• einfache Funktionsauswertungen der dem System bekannten Funktionen:

   exp,log,sin,cos,arctan,sqrt,... .

Problem: die Grundarithmetik verläßt i.a. die Maschinenzahlen, z.B.

x, y ∈ M ⇏ x + y ∈ M .

(z.B.: x = 1, y = 10^{−20} sind im Dezimalsystem exakt mit einer Ziffer darstellbar, x + y braucht 21 Dezimalstellen.)

Die Arithmetik der meisten Sprachen ist nach folgendem Rechenmodell implementiert:

Rechenmodell 2.11:

Die von der Maschine ausgeführte Operation ist die mathematisch exakte Operation gefolgt von der Rundung auf die nächste Maschinenzahl:

Programmzeile berechnet wird

z:=x+y;  z = x ⊕ y := rd(x + y) = x + y + (x + y) τ_{z}
z:=exp(x);  z = êxp(x) := rd(exp(x)) = exp(x) + exp(x) τ_{z}

mit |τ_{z}| ≤ τ = Maschinengenauigkeit.

Merke: Jede Grundoperation liefert einen durch die Maschinengenauigkeit beschränkten relativen Fehler.

Bemerkung 2.12: τ ist die kleinste positive Zahl, sodaß 1 + τ nicht durch Rundung zu 1 wird. Damit kann τ leicht ausgetestet werden:

                   tau:=1;
                   while 1+tau>1 do tau:=tau/2;

Häßlich: die Ersatzarithmetik M × M ↦ M wie z.B. ⊕ = rd( . + .) ist nicht mehr assoziativ, z.B. bei τ ≈ 10^{−16}:

\underbrace{(\underbrace{10^{−20} ⊕ 1}_{1}) ⊕ (−1)}_{0} ≠ \underbrace{10^{−20} ⊕ (\underbrace{1 ⊕ (−1)}_{0})}_{10^{−20}}

2.3 Fehlerfortpflanzung

Gegeben glattes f : x⃗ = (x_{1}, …, x_{n}) ∈ ℝ^{n} ↦ ℝ. Wie ändert sich f bei Änderung von x⃗ auf x⃗ + Δx⃗? Taylorentwicklung:

f(x⃗ + Δx⃗) = f(x⃗) + ∑_{i=1}^{n} \frac{∂f}{∂x_{i}} Δx_{i} + \frac{1}{2!} ∑_{i,j=1}^{n} \frac{∂^{2}f}{∂x_{i}∂x_{j}} Δx_{i}Δx_{j} + · · · .

Interpretiere Δx_{i} als “kleine Fehler” und vernachlässige höhere Terme:

Definition 2.13: (Differentielle Fehlerfortpflanzung)

Δf := ∑_{i=1}^{n} \frac{∂f}{∂x_{i}} |x⃗ Δx_{i} + f(x⃗) τ_{f}

heißt differentieller Fehler der Abbildung f : x⃗ ∈ ℝ^{n} ↦ ℝ (am Punkt x⃗). Er besteht aus der Fortpflanzung der Eingabefehler Δx_{i}, die über die absoluten Konditionszahlen ∂f/∂x_{i} verstärkt werden. Hinzu kommt der Darstellungsfehler τ_{f} beim Abspeichern des berechneten Wertes f(x⃗), für den |τ_{f}| ≤ τ = Maschinengenauigkeit gilt.

Interpretation: ohne τ_{f} ist in linearer Näherung Δf = f(x⃗+Δx⃗)−f(x⃗) der von den Fehlern der Eingangsparameter stammende Fehler. Die höheren Terme der Taylorentwicklung werden ignoriert:

Achtung: der differentielle Fehler ist nur eine Näherung des wirklichen Fehlers (aber eine in der Regel sehr gute).

Beispiel 2.14: Berechne bei Maschinengenauigkeit τ den Wert z = \sqrt{3}/\sqrt{2}. Wie genau

↓28.10.97

ist das Ergebnis? Setze x = \sqrt{3}, y = \sqrt{2} mit den Darstellungsfehlern Δx = rd(x) − x = x τ_{x}, Δy = rd(y) − y = y τ_{y} (nach Rechenmodell 2.11). Mit z = f(x, y) := x/y folgt die differentielle Fehlerfortpflanzung

Δz = \frac{∂f}{∂x} Δx + \frac{∂f}{∂y} Δy + z τ_{z} = \frac{1}{y} Δx − \frac{x}{y^{2}} Δy + z τ_{z}

⟹ \frac{Δz}{z} = \frac{Δx}{x} − \frac{Δy}{y} + τ_{z} = τ_{x} − τ_{y} + τ_{z} .

Nur bekannt: |τ_{x}|, |τ_{y}|, |τ_{z}| ≤ τ. Ergebnis: |\frac{Δz}{z} | ≤ 3 τ.

Bezeichnung 2.15:

Die absoluten Fehler von Zahlen x, y, … werden mit Δx, Δy, … bezeichnet, die relativen Fehler mit ϵ_{x} = \frac{Δx}{x} , ϵ_{y} = \frac{Δy}{y} , ….

Relative Fehler sind meist aussagekräftiger als absolute Fehler, Rundungsfehler sind relative Fehler.

2.3.1 Fehlerfortpflanzung in der Grundarithmetik

Gegeben x, y mit den Fehlern Δx, Δy bzw. ϵ_{x}, ϵ_{y}. Es sei τ_{z} mit |τ_{z}| ≤ τ = Maschinengenauigkeit der Darstellungsfehler des aus x, y berechneten Ergebnisses.

Addition zweier Zahlen mit gleichem Vorzeichen:

z = f(x, y) = x+y ⇒ Δz = Δx+Δy+z τ_{z} ⇒ ϵ_{x+y} = \frac{x}{x + y} ϵ_{x}+ \frac{y}{x + y} ϵ_{y} +τ_{z}

Gleiches Vorzeichen ⇒ 0 ≤ \frac{x}{x + y} ≤ 1 , 0 ≤ \frac{y}{x + y} ≤ 1 , Fehler der Summanden

werden also nicht verstärkt. Offensichtlich gilt

|ϵ_{x+y}| ≤ max(|ϵ_{x}|, |ϵ_{y}|) + |τ_{z}| (Addition ist harmlos!)

Subtraktion zweier Zahlen mit gleichem Vorzeichen: ersetze y durch −y:

z = x − y : ϵ_{x−y} = \frac{x}{x − y} ϵ_{x} − \frac{y}{x − y} ϵ_{y} + τ_{z}

Die relativen Fehler werden um die Faktoren |x/(x − y)|, |y/(x − y)| verstärkt, von denen mindestens einer ≥ 1 ist. Kritisch, wenn

x ≈ y , d.h. \frac{x}{y} ≈ \frac{y}{x} ≈ 1 , d.h. |1 − \frac{x}{y}| ≈ |1 − \frac{y}{x}| ≪ 1 , d.h. |x − y| ≪ |x| ≈ |y| ,

da dann |\frac{x}{x−y} | ≈ |\frac{y}{x−y} | ≫ 1.

Merke: Bei Auslöschung |x − y| ≪ |x| ≈ |y| werden relative Fehler in x und y extrem verstärkt. Dies ist \underline{die Hauptursache} für Rechenfehler.

Beispiel:  x 0.123456??? (auf 6 Stellen genau) − y −0.123444??? (auf 6 Stellen genau) = z 0.000012??? (auf 2 Stellen genau)

Damit sinnvoll: Vereinbarung 2.16:

In Zukunft hat “ ≈” eine konkrete Bedeutung:

x ≈ y heißt: |x − y| ≪ |x| , also |1 − \frac{y}{x}| ≪ 1
und damit auch  |x − y| ≪ |y| , also |1 − \frac{x}{y}| ≪ 1 .

Achtung: x ≈ 0 macht keinen Sinn! Weiter: Multiplikation z = x y: ϵ_{z} = ϵ_{x} + ϵ_{y} + τ_{z} (harmlos) Division z = x/y: ϵ_{z} = ϵ_{x} − ϵ_{y} + τ_{z} (harmlos) Exponentiation z = x^{y}: ϵ_{z} = y ϵ_{x} + ln(z) ϵ_{y} + τ_{z} (kritisch für |y| ≫ 1 oder | ln(z)| ≫ 1) Funktionsauswertung z = f(x) : ϵ_{z} = \frac{xf′(x)}{f(x)} ϵ_{x} + τ_{z} z.B.

z = exp(x) : ϵ_{exp(x)} = x ϵ_{x} + τ_{z} (kritisch für |x| ≫ 1)
z = ln(x) : ϵ_{ln(x)} = \frac{ϵ_{x}}{ln(x)} + τ_{z} (kritisch für x ≈ 1)
z = \sqrt{x} :  ϵ\sqrt{x} = \frac{ϵ_{x}}{2} + τ_{z}  (harmlos)
⋮  ⋮  ⋮

Noch einmal:

Zusammenfassung: Wesentliche Ursache für Rechenfehler ist die Differenzbildung zweier fast gleicher Zahlen x ≈ y (“Auslöschung”), genauer:

Falls x, y fehlerbehaftet sind, so ist für |x − y| ≪ |x| ≈ |y| die Differenz x − y mit einem extrem verstärkten relativen Fehler behaftet.

Es tritt dann allerdings kein zusätzlicher Darstellungsfehler der Differenz auf (Aufgabe 3).

2.3.2 Differentielle Fehleranalyse

In jedem Rechenschritt(Grundarithmetik) entstehen Fehler. Wie analysiert man deren Effekt beim Weiterrechnen? Also: was passiert bei einer Hintereinanderschaltung mehrerer Grundoperationen?

Definition 2.17:

Ein Algorithmus f⃗: ℝ^{n} → ℝ^{m}, der Eingabedaten x⃗ ∈ ℝ^{n} die Ausgabedaten y⃗ = f⃗(x⃗) ∈ ℝ^{m} zuordnet, ist eine Komposition f⃗ = f⃗^{(k)} ∘ ⋯ ∘ f⃗^{(1)} von Elementaroperationen f⃗_{i} : ℝ^{n_{i−1}} ↦ ℝ^{n_{i}} der Grundarithmetik:

x⃗ ∈ ℝ^{n} ⟶^{input} x^{(0)} := x⃗ ⟶^{f⃗^{(1)}} x^{(1)} ∈ ℝ^{n_{1}} ⟶^{f⃗^{(2)}} …

… ⟶^{f⃗^{(k)}} x^{(k)} ∈ ℝ^{m} ⟶^{output} y⃗ := x^{(k)} .

Hierbei seien alle Komponenten der Zwischenergebnisse x^{(i)} = f⃗^{(i)}(x^{(i−1)}) durch Operationen der Grundarithmetik aus den Komponenten von x^{(i−1)} berechenbar.

Abbildungen, die sich nicht in diesem Sinne in Elementaroperationen zerlegen lassen, können nicht auf dem Rechner implementiert werden.

Beispiel 2.18: Berechne y = \sqrt{x + 1} − \sqrt{x − 1}. (Achtung: Auslöschungsproblem für x ≫ 1 !) Algorithmus:

x ⟶^{input} x^{(0)} := x ⟶ x^{(1)} = ( \begin{matrix}x^{(0)} + 1 \\ x^{(0)} − 1 \end{matrix} ) = ( \begin{matrix}x + 1 \\ x − 1 \end{matrix} )

⟶ x^{(2)} = ( \begin{matrix}√ & \overline{x_{1}^{(1)}} \\ √ & \overline{x_{2}^{(1)}} \end{matrix} ) = ( \begin{matrix}√ & \overline{x + 1} \\ √ & \overline{x − 1} \end{matrix} )
⟶ x^{(3)} = x_{1}^{(2)} − x_{2}^{(2)} = \sqrt{x + 1} − \sqrt{x − 1} ⟶^{output} y := x^{(3)} .

2.3. FEHLERFORTPFLANZUNG 15

Heuristisches Verfahren:

Methode der Differentiellen Fehleranalyse: benutze die differentielle Fehlerfortpflanzung 2.13 Schritt für Schritt (analog zu Beispiel 2.14), um den relativen differentiellen Fehler des Endergebnisses als Linearkombination des Eingangsfehlers und der Darstellungsfehler aller Zwischenergebnisse zu schreiben. \underline{Es interessieren dabei die Verstärkungsfaktoren} (Konditionszahlen).

Beispiel 2.19: Es seien τ_{i}^{(j)} die relativen Darstellungsfehler der Zwischenergebnisse x_{i}^{(j)} des Algorithmus

x^{(0)} = x , \begin{matrix}x_{1}^{(1)} = x^{(0)} + 1 , \\ x_{2}^{(1)} = x^{(0)} − 1 , \end{matrix} \begin{matrix}x_{1}^{(2)} = \sqrt{x_{1}^{(1)}} , \\ x_{2}^{(2)} = \sqrt{x_{2}^{(1)}} , \end{matrix} x^{(3)} = x_{1}^{(2)} − x_{2}^{(2)} , y = x^{(3)}

aus Beispiel 2.18. Anwendung von 2.13 liefert

Δx^{(0)} = Δx (Eingabefehler)
Δx_{1}^{(1)} = Δx^{(0)} + x_{1}^{(1)} τ_{1}^{(1)}  = Δx + (x + 1) τ_{1}^{(1)}
Δx_{2}^{(1)} = Δx^{(0)} + x_{2}^{(1)} τ_{2}^{(1)}  = Δx + (x − 1) τ_{2}^{(1)}
Δx_{1}^{(2)} = \frac{Δx_{1}^{(1)}}{2 \sqrt{x_{1}^{(1)}}} + x_{1}^{(2)} τ_{1}^{(2)}  = \frac{Δx}{2 \sqrt{x + 1}} + \frac{\sqrt{x + 1}}{2} τ_{1}^{(1)} + \sqrt{x + 1} τ_{1}^{(2)}

Δx_{2}^{(2)} = \frac{Δx_{2}^{(1)}}{2 \sqrt{x_{2}^{(1)}}} + x_{2}^{(2)} τ_{2}^{(2)}  = \frac{Δx}{2 \sqrt{x − 1}} + \frac{\sqrt{x − 1}}{2} τ_{2}^{(1)} + \sqrt{x − 1} τ_{2}^{(2)}
Δx^{(3)} = Δx_{1}^{(2)} − Δx_{2}^{(2)} + x^{(3)} τ^{(3)} = ( \frac{1}{\sqrt{x + 1}} − \frac{1}{\sqrt{x − 1}} ) \frac{Δx}{2}

+ \sqrt{x + 1} ( \frac{τ_{1}^{(1)}}{2} + τ_{1}^{(2)} )

− \sqrt{x − 1} ( \frac{τ_{2}^{(1)}}{2} + τ_{2}^{(2)} ) + x^{(3)} τ^{(3)} .

Ergebnis y = x^{(3)} mit Δy = Δx^{(3)}: ↓30.10.97

\frac{Δy}{y} = − \frac{x}{2 \sqrt{x^{2} − 1}} \frac{Δx}{x} + \frac{\sqrt{x + 1}}{y} (\frac{τ_{1}^{(1)}}{2} + τ_{1}^{(2)}) − \frac{\sqrt{x − 1}}{y} (\frac{τ_{2}^{(1)}}{2} + τ_{2}^{(2)}) + τ^{(3)} .

Annahme x ≫ 1 und Vereinfachung \sqrt{x + 1} ≈ \sqrt{x − 1} ≈ \sqrt{x} , \sqrt{x^{2} − 1} ≈ x ,

y = \frac{(\sqrt{x + 1} − \sqrt{x − 1}) (\sqrt{x + 1} + \sqrt{x − 1})}{\sqrt{x + 1} + \sqrt{x − 1}} = \frac{2}{\sqrt{x + 1} + \sqrt{x − 1}} ≈ \frac{1}{\sqrt{x}}

16 KAPITEL 2. FEHLERANALYSE

⟹ \frac{Δy}{y} ≈ − \frac{1}{2} \frac{Δx}{x} + x ( \frac{τ_{1}^{(1)}}{2} + τ_{1}^{(2)} − \frac{τ_{2}^{(1)}}{2} − τ_{2}^{(2)} ) + τ^{(3)} .

Der Eingangsfehler Δx/x und τ^{(3)} sind harmlos, alle anderen Fehler werden um x ≫ 1 verstärkt. Mit |τ_{1}^{(1)}|, …, |τ_{3}| ≤ τ = Maschinengenauigkeit:

|\frac{Δy}{y} | ≤^{(approx.)} \frac{1}{2} |\frac{Δx}{x}| + (3x + 1) τ .

Beispiel: x = 1.234 × 10^{14} mit 16-Stellen-Arithmetik

y_{exakt}  = 9.00207... × 10^{−8}  (≈ 1/\sqrt{x})
y_{Rechner} = 8.94069... × 10^{−8}  (PASCAL) ,

also

\frac{y_{exakt} − y_{Rechner}}{y_{exakt}} ≈ \frac{6 × 10^{−10}}{9 × 10^{−8}} ≈ 7 × 10^{−3} .

Die Fehleranalyse sagt mit |Δx/x| ≤ τ ≈ 10^{−16} die obere Schranke

|\frac{Δy}{y} | ≤^{(approx)} (3 x + \frac{3}{2}) τ ≤ 4 × 10^{−2}

voraus.

Anmerkung: es gilt die alternative Darstellung

y = \sqrt{x + 1} − \sqrt{x − 1} = \frac{2}{\sqrt{x + 1} + \sqrt{x − 1}} .

Sie ist für x ≫ 1 numerisch viel besser, da Auslöschung vermieden wird.

Man sieht: differentielle Fehleranalyse ist schon für kleine Beispiele aufwendig. Anwendung: analysiere kritische Bausteine in komplexen Algorithmen.

Formalisierung dieser Analysetechnik:

Für y⃗ = ( y_{1}(x_{1}, …, x_{n}) ; ⋮ ; y_{m}(x_{1}, …, x_{n}) ) gilt nach Definition 2.13 des differentiellen Fehlers

Δy_{i} = ∑_{j} \frac{∂y_{i}}{∂x_{j}} Δx_{j} + τ_{y_{i}} y_{i}, also

Δy⃗ = ( Δy_{1} ; ⋮ ; Δy_{m} ) = ( \begin{matrix}\frac{∂y_{1}}{∂x_{1}} & … & \frac{∂y_{1}}{∂x_{n}} \\ ⋮ & ... & ⋮ \\ \frac{∂y_{m}}{∂x_{1}} & … & \frac{∂y_{m}}{∂x_{n}} \end{matrix} ) ( Δx_{1} ; ⋮ ; Δx_{n} )+( \begin{matrix}τ_{y_{1}} \\ & . & . & . \\ & & & & τ_{y_{m}} \end{matrix} ) ( y_{1} ; ⋮ ; y_{m} )

= \frac{∂y⃗}{∂x⃗} Δx⃗ + τy⃗ y⃗

mit der diagonalen Fehlermatrix τy⃗ = diag(τ_{y_{1}}, …, τ_{y_{m}}) und der üblichen Jacobi-Matrix \frac{∂y⃗}{∂x⃗} = (\frac{∂y_{i}}{∂x_{j}} ) der Abbildung x⃗ ↦ y⃗(x⃗). Für die Komposition zweier Abbildungen x⃗ ↦ y⃗(x⃗) ↦ z⃗(y⃗) folgt

Δz⃗ = \frac{∂z⃗}{∂y⃗} Δy⃗ + τz⃗ z⃗ = \frac{∂z⃗}{∂y⃗} \frac{∂y⃗}{∂x⃗} Δx⃗ + \frac{∂z⃗}{∂y⃗} τy⃗ y⃗ + τz⃗ z⃗

mit \frac{∂z⃗}{∂y⃗} \frac{∂y⃗}{∂x⃗} = \frac{∂z⃗}{∂x⃗} (Jacobi-Matrix der Abbildung x⃗ ↦ z⃗(y⃗(x⃗)) ) und den Darstellungsfehlern τz⃗ = diag(τ_{z_{1}}, τ_{z_{2}}, …) der Komponenten von z⃗. Für einen allgemeinen Algorithmus

x⃗ →^{(input)} x^{(0)} = x⃗ → x^{(1)}(x^{(0)}) → ⋯ → x^{(k)}(x^{(k−1)}) →^{(output)} y⃗ = x^{k}

ergibt sich die rekursive Fehlerfortpflanung

Δx^{(i)} = \frac{∂x^{(i)}}{∂x^{(i−1)}} Δx^{(i−1)} + τ^{(i)} x^{(i)}

mit den Darstellungsfehlern τ^{(i)} = diag(τ_{1}^{(i)}, τ_{2}^{(i)}, …) der Komponenten des Zwischenergebnisses x^{(i)} = (x_{1}^{(i)}, x_{2}^{(i)}, …)^{T} (T =Transposition, alle Vektoren sind Spaltenvektoren!). Die offensichtliche Lösung dieser Rekursion

Δx^{(i)} = \frac{∂x^{(i)}}{∂x^{(i−1)}} ⋯ \frac{∂x^{(1)}}{∂x^{(0)}} Δx^{(0)}

+ \frac{∂x^{(i)}}{∂x^{(i−1)}} ⋯ \frac{∂x^{(2)}}{∂x^{(1)}} τ^{(1)}x^{(1)} + \frac{∂x^{(i)}}{∂x^{(i−1)}} ⋯ \frac{∂x^{(3)}}{∂x^{(2)}} τ^{(2)}x^{(2)} + ⋯

führt zu:

Definition 2.20:

Gegeben Algorithmus f⃗ = f⃗^{(k)} ∘⋯∘f⃗^{(1)} mit Eingabeparametern x^{(0)} = x⃗ und Zwischenergebnissen x^{(i)} = f⃗^{(i)}(x^{(i−1)}) , i = 1, …, k. Der absolute differentielle Fehler der Ausgabewerte y⃗ = x^{(k)} = f⃗(x⃗) ist

Δy⃗ = \frac{∂y⃗}{∂x⃗} Δx⃗ + ∑_{j=1}^{k−1} \frac{∂y⃗}{∂x^{(j)}} τ^{(j)} x^{(j)} + τ^{(k)} y⃗

= \frac{∂x^{(k)}}{∂x^{(k−1)}} \frac{∂x^{(k−1)}}{∂x^{(k−2)}} ⋯ \frac{∂x^{(2)}}{∂x^{(1)}} \frac{∂x^{(1)}}{∂x^{(0)}} Δx⃗ \} (fortgepflanzter Eingangsfehler)

\begin{matrix}+ \frac{∂x^{(k)}}{∂x^{(k−1)}} \frac{∂x^{(k−1)}}{∂x^{(k−2)}} ⋯ \frac{∂x^{(2)}}{∂x^{(1)}} τ^{(1)} x^{(1)} \\ + … \\ + \frac{∂x^{(k)}}{∂x^{(k−1)}} \frac{∂x^{(k−1)}}{∂x^{(k−2)}} τ^{(k−2)} x^{(k−2)} \\ + \frac{∂x^{(k)}}{∂x^{(k−1)}} τ^{(k−1)} x^{(k−1)} \\ + τ^{(k)} x^{(k)} . \end{matrix} \}

(fortgepflanzte Darstellungsfehler)

mit τ^{(i)} = diag(τ_{1}^{(i)}, τ_{2}^{(i)}, …) und |τ_{j}^{(i)}| ≤ τ = Maschinengenauigkeit.

Interpretation: Der so definierte differentielle Fehler ist die lineare Näherung an den tatsächlich anfallenden Fehler (bei kleinen Fehlern eine sehr gute Approximation). Gehalt der Formel: Endfehler ist als Linearkombination der Eingabefehler Δx⃗ und aller Rundungsfehler τ_{j}^{(i)} dargestellt und kann über die Verstärkungsfaktoren als Vielfaches der Maschinengenauigkeit abgeschätzt werden (siehe Beispiel 2.19).

Definition 2.21:

Unter Vernachlässigung von Rundungsfehlern gilt

Δy_{i} = ∑_{j} \frac{∂y_{i}}{∂x_{j}} Δx_{j} , \frac{Δy_{i}}{y_{i}} = ∑_{j} \frac{x_{j}}{y_{i}} \frac{∂y_{i}}{∂x_{j}} \frac{Δx_{j}}{x_{j}} .

Die Größen \frac{∂y_{i}}{∂x_{j}} bzw. \frac{x_{j}}{y_{i}} \frac{∂y_{i}}{∂x_{j}} heißen absolute bzw. relative Konditionszahlen der Abbildung x⃗ → y⃗(x⃗). Sie sind die Verstärkungsfaktoren der absoluten bzw. relativen Eingangsfehler.

Bemerkung 2.22: Zwei verschiedene Algorithmen

y⃗ = (f⃗^{(k)} ∘ ⋯ ∘ f⃗^{(1)})(x⃗) = (F⃗^{(K)} ∘ ⋯ ∘ F⃗^{(1)})(x⃗)

für dasselbe Ergebnis y⃗(x⃗) haben dieselben Konditionszahlen \frac{∂y_{i}}{∂x_{j}} bezüglich des Eingabefehlers Δx⃗. Sie können sich trotzdem numerisch völlig unterschiedlich verhalten, da Δy⃗ auch durch die von den Teilalgorithmen f⃗^{(k)} ∘ ⋯ ∘ f⃗^{(2)}, f⃗^{(k)} ∘ ⋯ ∘ f⃗^{(3)} usw. verstärkten Fehlern der Zwischenergebnisse bestimmt wird.

Ein Algorithmus ist numerisch nur dann gutmütig, wenn alle Teilalgorithmen gut konditioniert sind. Beispiel:

y = \underbrace{\sqrt{x + 1} − \sqrt{x − 1}}_{schlecht} = \underbrace{\frac{2}{\sqrt{x + 1} + \sqrt{x − 1}}}_{gut} .

In der ersten Darstellung ist für x ≫ 1 der die Differenz der Wurzeln bildende Teilalgorithmus schlecht konditiniert.

20 KAPITEL 2. FEHLERANALYSE

Nichtlineare Gleichungen (skalar)

Aufgabe: finde Lösung von f(x) = 0 mit f : ℝ → ℝ (eine Gleichung für eine Unbekannte). Allgemeine Idee: Umformulierung in ein äquivalentes Fixpunktproblem

f(x) = 0 ⟺ Φ(x) = x

und Anwendung des Banachschen Fixpunktsatzes.

3.1 Der Banachsche Fixpunktsatz

Definition 3.1:

Eine Abbildung Φ : A ⊂ ℝ → ℝ heißt Kontraktion, wenn eine Kontraktionskonstante k ∈ [0, 1) existiert, so daß |Φ(x) − Φ(y)| ≤ k |x − y| ∀x, y ∈ A.

Bildpunkte liegen dichter zusammen als die Urbilder (“Kontraktion”).

Bemerkung 3.2: Kontraktionen sind automatisch (Lipschitz-)stetig.

Satz 3.3: (Banachscher Fixpunktsatz (“BFS”), skalare Version)

Sei Φ : A → A Kontraktion auf abgeschlossenem A ⊂ ℝ mit einer Kontraktionskonstanten k < 1 . Dann

a) existiert ein eindeutiger Fixpunkt x^{∗} = Φ(x^{∗}) ∈ A,

b) konvergiert jede Folge x_{i+1} = Φ(x_{i}) mit beliebigem Startwert x_{0} ∈ A gegen x^{∗}, 22 KAPITEL 3. NICHTLINEARE GLEICHUNGEN (SKALAR)

c) gelten für jede solche Folge die Abschätzungen

|x_{i} − x^{∗}| ≤ \frac{k}{1 − k} |x_{i} − x_{i−1}| ≤ \frac{k^{i}}{1 − k} |x_{1} − x_{0}| .
“a posteriori”  “a priori”

Beweis: Zeige: (x_{i}) ist Cauchy-Folge.

\begin{aligned}|x_{i+n} − x_{i}| & = & |x_{i+n} − x_{i+n−1} + x_{i+n−1} ∓ ⋯ − x_{i+1} + x_{i+1} − x_{i}| \\ & ≤ & |x_{i+n} − x_{i+n−1}| + |x_{i+n−1} − x_{i+n−2}| + ⋯ + |x_{i+1} − x_{i}| \end{aligned}

für jedes i, n ≥ 0. Aus |x_{j} − x_{j−1}| = |Φ(x_{j−1}) − Φ(x_{j−2})| ≤ k |x_{j−1} − x_{j−2}|, d.h.,

|x_{j} − x_{j−1}| ≤ k |x_{j−1} − x_{j−2}| ≤ k^{2} |x_{j−2} − x_{j−3}| ≤ …

folgt

\begin{aligned}|x_{i+n} − x_{i}| & ≤ & k^{n−1} |x_{i+1} − x_{i}| + k^{n−2} |x_{i+1} − x_{i}| + ⋯ + |x_{i+1} − x_{i}| \\ & = & (1 + k + k^{2} + ⋯ + k^{n−1}) |x_{i+1} − x_{i}| = \frac{1 − k^{n}}{1 − k} |x_{i+1} − x_{i}| \end{aligned}

≤ \frac{|x_{i+1} − x_{i}|}{1 − k} ≤^{(#)} \frac{k |x_{i} − x_{i−1}|}{1 − k} ≤ \frac{k^{2} |x_{i−1} − x_{i−2}|}{1 − k} ≤ … ≤^{(##)} \frac{k^{i} |x_{1} − x_{0}|}{1 − k} .

Mit k^{i} → 0 folgt die Cauchy-Eigenschaft. Es existiert somit ein Grenzwert x^{∗}. Mit x_{0} ∈ A und Φ : A → A folgt x_{i} ∈ A ⇒ x^{∗} ist Häufungspunkt von A ⇒ x^{∗} ∈ A (abgeschlossen). Da Φ stetig:

x^{∗} = lim_{i→∞} x_{i+1} = lim_{i→∞} Φ(x_{i}) = Φ( lim_{i→∞} x_{i}) = Φ(x^{∗}) .

Eindeutigkeit: für weiteren Fixpunkt x^{∗∗} ≠ x^{∗} folgt Widerspruch

|x^{∗} − x^{∗∗}| = |Φ(x^{∗}) − Φ(x^{∗∗})| ≤ k |x^{∗} − x^{∗∗}| < |x^{∗} − x^{∗∗}| . Die Abschätzungen c) ergeben sich aus (#) und (##):

lim_{n→∞} |x_{i+n} − x_{i}| = |x^{∗} − x_{i}| ≤^{(#)} \frac{k}{1 − k} |x_{i} − x_{i−1}| ≤^{(##)} \frac{k^{i}}{1 − k} |x_{1} − x_{0}| .

Q.E.D.

Bemerkung 3.4: Für stetig diff’bares Φ gilt der Mittelwertsatz Φ(x)−Φ(y) = Φ′(ξ)(x − y) mit Zwischenwert ξ zwischen x und y. Für \underline{Intervalle} liegt mit x und y auch ξ in A, womit sich die beste (= kleinste) Kontraktionskonstante durch k = sup_{ξ∈A} |Φ′(ξ)| ergibt.

Es gibt viele Möglichkeiten zur Umformulierung f(x) = 0 ⟺ Φ(x) = x (z.B. Φ(x) = x + α(x) f(x) mit beliebigem α(x)). Man muß Φ so wählen, daß der BFS 3.3 anwendbar ist.

Satz 3.5:

Es sei Φ : ℝ ↦ ℝ stetig diff’bar mit Fixpunkt x^{∗} = Φ(x^{∗}). Es existiert eine abgeschlossene Umgebung A von x^{∗} mit

• Φ : A ↦ A

• Φ ist Kontraktion auf A

genau dann, wenn |Φ′(x^{∗})| < 1 gilt.

Beweis: 1) Es gelte |Φ′(x^{∗})| < 1. Dann existiert U_{ϵ}(x^{∗}) = {ξ; |ξ − x^{∗}| < ϵ} mit |Φ′(ξ)| < 1 ∀ξ ∈ U_{ϵ}. Für x, y ∈ A := {ξ; |ξ − x^{∗}| ≤ ϵ/2} ⊂ U_{ϵ} folgt

|Φ(x) − Φ(y)| =^{(MW S)} |Φ′(ξ)||x − y| ≤ k |x − y|

mit k := max_{ξ∈A} |Φ′(ξ)| < 1. Weiterhin gilt ∀x ∈ A:

|Φ(x) − x^{∗}| = |Φ(x) − Φ(x^{∗})| ≤ k |x − x^{∗}| < |x − x^{∗}| ≤ \frac{ϵ}{2} ,

also Φ(A) ⊂ A.

2) Sei |Φ′(x^{∗})| ≥ 1. Setze k̃(x, y) := |\frac{Φ(x) − Φ(y)}{x − y}| =^{(MW S)} |Φ′(ξ(x, y))| .

Für x, y → x^{∗} und damit ξ → x^{∗} folgt k̃(x, y) → |Φ′(x^{∗})| ≥ 1, so daß nicht |(Φ(x) − Φ(y))/(x − y)| ≤ k für ein festes k < 1 gelten kann.

Q.E.D.

Bemerkung 3.6: Intuitiv ist dies klar. Für x ≈ x^{∗}, also

Φ(x) − x^{∗} = Φ(x) − Φ(x^{∗}) = Φ′(ξ)(x − x^{∗}) ≈ Φ′(x^{∗})(x − x^{∗})

folgt

|Φ′(x^{∗})| > 1 ⇒ |Φ(x) − x^{∗}| > |x − x^{∗}| (“abstoßender” Fixpunkt)
|Φ′(x^{∗})| < 1 ⇒ |Φ(x) − x^{∗}| < |x − x^{∗}| (“anziehender” Fixpunkt)
|Φ′(x^{∗})| = 1 : alles kann passieren (“hyperbolischer” Fixpunkt).

24 KAPITEL 3. NICHTLINEARE GLEICHUNGEN (SKALAR)

Damit gilt die allgemeine Strategie: zur Lösung von f(x) = 0 finde äquivalentes Fixpunktproblem x = Φ(x), so daß an der Lösung |Φ′(x^{∗})| < 1 gilt (⇒ BFS 3.3 ist lokal anwendbar).

Beispiel 3.7: Problem f(x) = x + x^{3} − 1 = 0. Da f monton und f(±∞) = ±∞ ⇒ es existiert eindeutige Lösung. Einsetzen: z.B. f(0.6) = −0.184, f(0.7) = 0.043 ⇒ x^{∗} ∈ (0.6, 0.7).

Versuch 1: x + x^{3} − 1 = 0 ⇔ x = 1 − x^{3} =: Φ(x). Aber:

|Φ′(x)| = 3x^{2} ∈ (3 × 0.6^{2}, 3 × 0.7^{2}) = (1.08, 1.47) ∀x ∈ (0.6, 0.7)
⇒ |Φ′(x^{∗})| > 1.08 (abstoßender Fixpunkt).

In der Tat:

[figure: x_{3}; x_{1}; x^{∗}; x_{0}; x_{2}; x_{0} = 0.700...; x_{1} = 0.657...; x_{2} = 0.716...; x_{3} = 0.632...; ⋮]

Versuch 2: x + x^{3} − 1 = 0 ⇔ x = (1 + x − x^{3})/2 =: Φ(x). Mit Φ′(x) = (1 − 3 x^{2})/2 (monoton fallend für x > 0) folgt

Φ′(x) ∈ (Φ′(0.7), Φ′(0.6)) = (−0.235, −0.04) ∀x ∈ (0.6, 0.7)
⇒ |Φ′(x^{∗})| < 0.235 (anziehender Fixpunkt).

In der Tat:

[figure: x_{1}; x_{3}; x^{∗}; x_{4}; x_{2}; x_{0}; x_{0} = 0.70000...; x_{1} = 0.67850...; x_{2} = 0.68307...; x_{3} = 0.68217...; x_{4} = 0.68235...; ⋮]

Φ ist eine Kontraktion auf A := [0.6, 0.7], denn

• Φ([0.6, 0.7]) = [Φ(0.7), Φ(0.6)] = [0.6785..., 0.692...] ⊂ A (Φ ist auf A monoton

fallend, da Φ′(x) ∈ [−0.235, −0.04])
• Kontraktionskonstante k = max_{ξ∈A} |Φ′(ξ)| = 0.235 < 1.

Wie gut approximiert x_{4} die Lösung?

a priori:  |x_{4} − x^{∗}| ≤ \frac{k^{4}}{1 − k} |x_{1} − x_{0}| = 8.57... × 10^{−5}
a posteriori: |x_{4} − x^{∗}| ≤ \frac{k}{1 − k} |x_{4} − x_{3}| = 5.45... × 10^{−5} .

Bemerkung 3.8: Alternative Fehlerkontrolle: für ein Nullstellenproblem f(x) = 0 mit stetig diff’barem f gilt \underline{stets} (unabhängig vom verwendeten Verfahren Φ : A ↦ A):

|x_{i} − x^{∗}| ≤ \frac{|f(x_{i})|}{min_{ξ∈A} |f′(ξ)|} .

Beweis: Taylorentwicklung mit Zwischenwert ξ ∈ A:

f(x_{i}) = f(x^{∗}) + f′(ξ) (x_{i} − x^{∗}) ⇒ x_{i} − x^{∗} = \frac{f(x_{i})}{f′(ξ)} . Q.E.D.

Dies liefert bei einfachen Nullstellen und hinreichend kleinem Intervall A sehr realistische Fehlerabschätzungen.

Bemerkung 3.9: Zum Einfluß von Rechenfehlern: erfreulich!

↓6.11.97

[figure: x_{0}; x^{∗}; exakte x_{i}; fehlerhaft berechnete x̃_{i}]

Banach-Iterationen sind “selbstkorrigierend”: fehlerhaft berechnete Punkte werden beim Weiterrechnen wieder vom Fixpunkt angezogen. Fehler können sich nicht akkumulieren!! Lediglich die a priori Abschätzung wird bei langen Iterationen verfälscht.

Genauer:

Satz 3.10: (Rundungsfehler bei Banach-Iterationen)

Es sei x^{∗} = Φ(x^{∗}) der exakte Fixpunkt einer Kontraktion Φ mit der Kontraktionskonstanten k < 1. Es sei Φ̃(x) die mit einem Auswertungsfehler ΔΦ(x) := Φ̃(x)−Φ(x) behaftete numerische Iterationsfunktion. Die Iteration x̃_{i} = Φ̃(x̃_{i−1}) wird abgebrochen, sobald |x̃_{i}−x̃_{i−1}| ≤ ϵ (= vorgegebene absolute Genauigkeit) gilt. Akzeptiert man x̃^{∗} := x̃_{i} als numerischen Fixpunkt, so gilt

|x̃^{∗} − x^{∗}| ≤ \frac{k ϵ + |ΔΦ(x̃_{i−1})|}{1 − k} .

Beweis: Aufgabe 8.

Interpretation: bis auf den Faktor 1/(1−k) ist die prinzipiell erreichbare Genauigkeit (ϵ = 0) durch die Auswertungsgenauigkeit ΔΦ \underline{eines} Iterationsschritts gegeben (unabhängig von der Zahl der tatsächlich ausgeführten Iterationsschritte!). In der Praxis muß allerdings ϵ > |ΔΦ| gewählt werden, um Abbruch garantieren zu können. Für k ≪ 1 gilt dann

|x̃^{∗} − x^{∗}| ≤ \frac{k ϵ + |ΔΦ(x̃_{i−1})|}{1 − k} ≈ k ϵ + |ΔΦ(x̃_{i−1})| < (k + 1) ϵ ≈ ϵ .

Zusammenfassung: finde Nullstelle x^{∗} von f, d.h., löse f(x) = 0.

Algorithmus 3.11: (“Banach-Iteration”)

a) Wähle stetig diff’bares Φ : ℝ ↦ ℝ, so daß

\begin{matrix}• & Φ(x^{∗}) = x^{∗} ⇒ f(x^{∗}) = 0 , \\ • & |Φ′(x^{∗})| < 1 . \end{matrix}

b) Identifiziere abgeschlossenes Intervall A um x^{∗}, so daß

\begin{matrix}• & Φ(A) ⊂ A \\ • & k := max_{ξ∈A} |Φ′(ξ)| < 1 \end{matrix} \} A existiert nach Satz 3.5.

c) Iteriere x_{i+1} = Φ(x_{i}) mit beliebigem x_{0} ∈ A. Es gilt

|x_{i} − x^{∗}| ≤ \frac{k}{k − 1} |x_{i} − x_{i−1}| ≤ \frac{k^{i}}{1 − k} |x_{1} − x_{0}| .

Alternativ: Fehlerkontrolle nach Bemerkung 3.8.

Verbleibendes Problem: systematische Konstruktion eines “guten” (schnell konvergierenden) Φ aus gegebenem f. Schnelle Konvergenz ergibt sich bei kleinen Kontraktionskonstanten k ≪ 1. Im Sinne des folgenden Kapitels kann man Iterationen betrachten, deren Kontraktionskonstanten “effektiv” 0 sind.

3.2 Superlineare Konvergenz

Gegeben A_{0} = [a_{0}, b_{0}], Φ : A_{0} ↦ A_{0} stetig diff’bar und k_{0} := max_{ξ∈A_{0}} |Φ′(ξ)| < 1

(d.h., alle Voraussetzungen des BFS 3.3 gelten). Betrachte Intervallfolge

⋯ ⊂ A_{i} := Φ(A_{i−1}) ⊂ A_{i−1} ⊂ ⋯ ⊂ A_{0} :

optimale

Kontraktionskonstante:

a_{0}  b_{0}  k_{0} := max_{ξ∈A_{0}} |Φ′(ξ)|
↓ Φ
a_{1}  b_{1}  k_{1} := max_{ξ∈A_{1}} |Φ′(ξ)|
↓ Φ
a_{2}  b_{2}  k_{2} := max_{ξ∈A_{2}} |Φ′(ξ)|
↓ Φ
⋯  ⋯

Es gilt A_{i} = [a_{i}, b_{i}] = [Φ(α_{i−1}), Φ(β_{i−1})] mit gewissen α_{i−1}, β_{i−1} ∈ A_{i−1}, so daß

b_{i} − a_{i} = Φ(β_{i−1}) − Φ(α_{i−1}) = Φ′(ξ)(β_{i−1} − α_{i−1}) ≤ k_{i−1} (b_{i−1} − α_{i−1}) .

Die Intervalle schrumpfen zum Fixpunkt zusammen, es gilt

• Φ : A_{i} ↦ A_{i} (da Φ(A_{i}) ⊂ Φ(A_{i−1}) = A_{i}),

• Φ ist Kontraktion auf A_{i} mit “lokaler” Kontraktionskonstante k_{i}:

|Φ′(x^{∗})| ≤ k_{i} := max_{ξ∈A_{i}} |Φ′(ξ)| ≤ k_{i−1} ≤ k_{i−2} ≤ … ≤ k_{0} < 1.

Damit kann die Iteration für Indizes ≥ i als Banach-Iteration über dem kleineren Interval A_{i} angesehen werden, sodaß effektiv die kleinere Kontraktionskonstante k_{i} ≤ k_{0} gültig ist. Ergebnis: mit x_{0} ∈ A_{0}, x_{i} = Φ(x_{i−1}) ∈ A_{i} gilt

|x_{i+1} − x^{∗}| = |Φ(x_{i}) − Φ(x^{∗})| ≤ k_{i} |x_{i} − x^{∗}|

mit den lokalen Kontraktionskonstanten 1 > k_{0} ≥ k_{1} ≥ … ≥ k_{i} ⟶^{i→∞} |Φ′(x^{∗})|. Frage: was passiert bei Φ′(x^{∗}) = 0? Es ist extrem schnelle Konvergenz zu erwarten.

Satz 3.12: (Kriterium für höhere Konvergenz)

A sei abgeschlossenes Intervall, Φ : A ↦ A sei q-fach stetig diff’bar mit Fixpunkt x^{∗} = Φ(x^{∗}) ∈ A. Es gelte

Φ′(x^{∗}) = Φ′′(x^{∗}) = … = Φ^{(q−1)}(x^{∗}) = 0 .

Dann gilt für die Iteration x_{i+1} = Φ(x_{i}) mit x_{0} ∈ A die Fehlerfortpflanzung

|x_{i+1} − x^{∗}| ≤ \frac{max_{ξ∈A} |Φ^{(q)}(ξ)|}{q!} |x_{i} − x^{∗}|^{q} .

Beweis: Taylorentwicklung um x^{∗}:

Φ(x) = \underbrace{Φ(x^{∗})}_{x^{∗}} + \underbrace{∑_{k=1}^{q−1} \frac{Φ^{(k)}(x^{∗})}{k!} (x − x^{∗})^{k}}_{0} + \frac{Φ^{(q)}(ξ)}{q!} (x − x^{∗})^{q}

mit Zwischenpunkt ξ ∈ A, also |Φ(x) − x^{∗}| = \frac{|Φ^{(q)}(ξ)|}{q!} |x − x^{∗}|^{q} .

Q.E.D.

Definition 3.13: (Konvergenzordnung)

Eine gegen x^{∗} konvergierende Folge (x_{i}) heißt konvergent von der Ordnung q, wenn eine Konstante const existiert, so daß

|x_{i} − x^{∗}| ≤ const |x_{i−1} − x^{∗}|^{q} ∀i ≥ geeignetes i_{0} .

Superlineare Konvergenz heißt lim_{i→∞} \frac{|x_{i} − x^{∗}|}{|x_{i−1} − x^{∗}|} = 0 (z.B. bei q > 1).

Bemerkung 3.14: Bei superlinearer Konvergenz ist die a priori Abschätzung des BFS sehr unrealistisch (viel zu grob), da sie auf dem Konzept einer festen Kontraktionskonstanten beruht. Die a posteriori Abschätzung ist \underline{wesentlich} besser (aber auch noch recht grob). Die Kontrolle gemäß Bemerkung 3.8 liefert i.a. realistische Werte.

3.3 Das Newton-Verfahren

Ansatz: Φ(x) = x + α(x) f(x), womit Φ(x^{∗}) = x^{∗} ⇔ f(x^{∗}) = 0. Ziel: superlineare Konvergenz, also

Φ′(x^{∗}) = 1 + α′(x^{∗}) f(x^{∗}) + α(x^{∗}) f′(x^{∗}) =^{(!)} 0 ⇒ α(x^{∗}) = −\frac{1}{f′(x^{∗})} .

Wähle α(x) = −1/f′(x): das Newton-Verfahren für f(x) = 0 ist die Banach-Iteration mit

Φ(x) = x − \frac{f(x)}{f′(x)} .

Satz 3.15: (Das Newton-Verfahren)

Es sei x^{∗} einfache Nullstelle der 3-fach stetig diff’baren Funktion f. Dann existiert eine Umgebung U(x^{∗}), so daß die Newton-Iteration

x_{i+1} = x_{i} − \frac{f(x_{i})}{f′(x_{i})}

für alle x_{0} ∈ U(x^{∗}) quadratisch gegen x^{∗} konvergiert.

Beweis: Wegen f′(x^{∗}) ≠ 0 folgt f′(x) ≠ 0 auf einer Umgebung von x^{∗}, womit Φ(x) = x − f(x)/f′(x) dort definiert und 2-fach stetig diff’bar ist. Mit

Φ′ = \frac{ff′′}{f′^{2}} , Φ′′ = \frac{2ff′′^{2} − ff′f′′′ − f′^{2}f′′}{f′^{3}}

folgt Φ′(x^{∗}) = 0, Φ′′(x^{∗}) = −f′′(x^{∗})/f′(x^{∗}). Nach Satz 3.5 ist lokale Konvergenz garantiert, die nach Satz 3.12 quadratisch ist.

Q.E.D.

Bemerkung 3.16: “f einfach stetig diff’bar” reicht für superlineare Konver-

↓11.11.97

genz. Mit f(x) = f′(ξ)(x − x^{∗}) (Zwischenwert ξ) folgt

|Φ(x) − x^{∗}| = |x − \frac{f(x)}{f′(x)} − x^{∗}| = |1 − \frac{f′(ξ)}{f′(x)}| |x − x^{∗}|

Mit x → x^{∗} und somit ξ → x^{∗} folgt |Φ(x) − x^{∗}| ≤ k(x) |x − x^{∗}|, wobei k(x) =

|1 − f′(ξ)/f′(x)| ⟶^{x→x^{∗}} 0.

Bemerkung 3.17: Geometrisch: x_{i+1} ist die Nullstelle der Tangente am Punkt x_{i}:

f(x) x^{∗}  x_{i+1}  x_{i}  x f′(x_{i}) = \frac{f(x_{i})}{x_{i} − x_{i+1}}

Bemerkung 3.18: Prinzipielle (aber sehr grobe) Fehlerkontrolle: identifiziere Umgebung A von x^{∗} mit Φ : A ↦ A und

k := sup_{ξ∈A} |Φ′(ξ)| = sup_{ξ∈A} |\frac{f(ξ)f′′(ξ)}{(f′(ξ))^{2}} | < 1

und benutze die Fehlerabschätzungen des BFS 3.3.

Besser: a posteriori Kontrolle nach Bemerkung 3.8 oder:

Satz 3.19: (realistische Fehlerabschätzungen für das Newton-Verfahren) Es sei f 2-fach stetig diff’bar und A ein abgeschlossenes Intervall um eine einfache Nullstelle x^{∗}, es gelte Φ(A) ⊂ A (mit Φ(x) = x − f(x)/f′(x) ) und f′(x) ≠ 0 ∀x ∈ A. Mit

c = \frac{max_{ξ∈A} |f′(ξ)|}{min_{ξ∈A} |f′(ξ)|} , d = \frac{1}{2} \frac{max_{ξ∈A} |f′′(ξ)|}{min_{ξ∈A} |f′(ξ)|}

gelten für das Newton-Verfahren x_{i} = Φ(x_{i−1}) für jedes x_{0} ∈ A die Abschätzungen

|x_{i} − x^{∗}| ≤ \frac{1}{d} ( d |x_{0} − x^{∗}| )^{(2^{i})}

|x_{i} − x^{∗}| ≤ \frac{1}{d} ( \sqrt{c} d |x_{1} − x_{0}| )^{(2^{i})} (a priori)
|x_{i} − x^{∗}| ≤ c d |x_{i} − x_{i−1}|^{2}  (a posteriori) .

Beweis: Taylor-Entwicklung um x_{i−1}:

f(x^{∗}) = 0 = f(x_{i−1}) + f′(x_{i−1})(x^{∗} − x_{i−1}) + \frac{1}{2} f′′(ξ_{i−1}) (x^{∗} − x_{i−1})^{2} .

Nach Division durch f′(x_{i−1}):

x_{i} − x^{∗} ≡ x_{i−1} − \frac{f(x_{i−1})}{f′(x_{i−1})} − x^{∗} = \frac{1}{2} \frac{f′′(ξ_{i−1})}{f′(x_{i−1})} (x_{i−1} − x^{∗})^{2}  (3.1)

mit Zwischenpunkt ξ_{i−1} zwischen x_{i−1} und x^{∗}. Es folgt

\begin{aligned}c_{i} & := & \frac{x_{i} − x^{∗}}{(x_{i} − x_{i−1})^{2}} = \frac{x_{i} − x^{∗}}{( f(x_{i−1})/f′(x_{i−1}) )^{2}} \\ & = & \frac{f′′(ξ_{i−1}) f′(x_{i−1}) (x_{i−1} − x^{∗})^{2}}{2 f(x_{i−1})^{2}} . \end{aligned}

Taylor-Entwicklung mit anderem Zwischenpunkt η_{i−1} liefert f(x_{i−1}) = f′(η_{i−1}) (x_{i−1} − x^{∗}) , sodaß

|c_{i}| = | \frac{f′′(ξ_{i−1}) f′(x_{i−1})}{2f′(η_{i−1})^{2}} | ≤ \frac{max_{ξ∈A} |f′′(ξ)| max_{x∈A} |f′(x)|}{2 ( min_{η∈A} |f′(η)|)^{2}} ≤ cd .

Es folgt die a posteriori Abschätzung

|x_{i} − x^{∗}| = |c_{i}| (x_{i} − x_{i−1})^{2} ≤ c d (x_{i} − x_{i−1})^{2} .

Aus (3.1) ergibt sich |x_{i} − x^{∗}| ≤ d |x_{i−1} − x^{∗}|^{2} , wodurch rekursiv die erste der angegebenen Abschätzungen folgt:

|x_{i} − x^{∗}| ≤ d |x_{i−1} − x^{∗}|^{2} ≤ d d^{2} |x_{i−2} − x^{∗}|^{4} ≤ …
≤ d d^{2} ⋯ d^{(2^{i−2})} |x_{1} − x^{∗}|^{(2^{i−1})} =^{(#)} d^{(2^{i−1}−1)} |x_{1} − x^{∗}|^{(2^{i−1})}
≤ d d^{2} ⋯ d^{(2^{i−1})} |x_{0} − x^{∗}|^{(2^{i})} = d^{(2^{i}−1)} |x_{0} − x^{∗}|^{(2^{i})} .

Mit (#) und |x_{1} − x^{∗}| ≤ cd |x_{1} − x_{0}|^{2} (a posteriori Abschätzung, i = 1) erhält man die a priori Abschätzung:

|x_{i} − x^{∗}| ≤ d^{(2^{i−1}−1)} c^{(2^{i−1})} d^{(2^{i−1})} |x_{1} − x^{∗}|^{(2^{i})} = \frac{1}{d} ( \sqrt{c} d |x_{1} − x_{0}| )^{(2^{i})} .

Q.E.D.

Bemerkung 3.20: Was passiert bei q-fachen Nullstellen, d.h.,

f(x^{∗}) = f′(x^{∗}) = … = f^{(q−1)}(x^{∗}) = 0 , f^{(q)}(x^{∗}) ≠ 0 ?

Antwort (Aufgabe 12): das Newton-Verfahren konvergiert immer noch, aber nur linear mit asymptotischer Kontraktionskonstante |Φ′(x^{∗})| = 1 − 1/q. Ist q bekannt, so kann mit der Modifikation x_{i+1} = Φ(x_{i}) mit Φ(x) = x−q f(x)/f′(x) wieder quadratische Konvergenz erreicht werden.

Bemerkung 3.21: Das Newton-Verfahren konvergiert lokal immer (d.h., für hinreichend gute Startwerte). Global gibt es große Probleme, wenn die Funktion f lokale Extrema oder Sattelpunkte hat (Φ wird singulär):

f(x) x_{i}  x^{∗}  x x_{i+1}

Bemerkung 3.22: In der Steffensen-Iteration x_{i+1} = Φ(x_{i}) mit

Φ(x) = x − \frac{(f(x))^{2}}{f(x + f(x)) − f(x)} (= x − \frac{f(x)}{\frac{f(x+f(x))−f(x)}{f(x)}} )

wird die Ableitung f′(x) im Nenner des Newton-Verfahrens durch

\frac{f(x + f(x)) − f(x)}{f(x)} (≈ f′(x) für |f(x)| ≪ 1)

ersetzt. In unmittelbarer Nähe einer Nullstelle verhält sich das Steffensen-Verfahren damit genauso wie das Newton-Verfahren. Z.B., quadratische Konvergenz:

lim_{x→x^{∗}} Φ′(x) = 0 , lim_{x→x^{∗}} Φ′′(x) = f′′(x^{∗}) ( 1 + \frac{1}{f′(x^{∗})} ) .

Zusammenfassung: Das Newton-Verfahren für f(x) = 0 ist die Banach-Iteration mit Φ(x) = x − f(x)/f′(x).

+ konvergiert lokal immer (selbst bei Entartung),
+ quadratische Konvergenz (außer bei Entartung) mit nur 2

Funktionsauswertungen pro Schritt,

+ sehr realistische a priori Abschätzung möglich,
∓ f′ wird benötigt (durch Steffensen-Variante vermeidbar),
− globale Konvergenzprobleme.

3.4 Höhere Verfahren

Betrachte

Φ_{2}(x) = x − \frac{f(x)}{f′(x)}  (Newton-Verfahren)
Φ_{3}(x) = Φ_{2}(x) − \frac{(f(x))^{2}f′′(x)}{2 (f′(x))^{3}}
Φ_{4}(x) = Φ_{3}(x) + (f(x))^{3} (\frac{f′′′(x)}{6 (f′(x))^{4}} − \frac{(f′′(x))^{2}}{2 (f′(x))^{5}} )
⋮  ⋮

Die Iteration mit Φ_{2} konvergiert quadratisch, mit Φ_{3} kubisch, mit Φ_{4} in 4.ter Ordnung gegen einfache Nullstellen von f (z.B. Φ′_{3}(x^{∗}) = Φ′′_{3}(x^{∗}) = 0). Man kann leicht Verfahren beliebig hoher Ordnung angeben, die für die Praxis jedoch nicht sinnvoll sind. Begründung (Beispiel): Φ_{4} braucht 4 Funktionsauswertungen f, f′, f′′, f′′′ pro 13.11.97↓

Schritt. Vergleiche mit Newton-Doppelschritt

Φ̃_{4}(x) = Φ_{2}(Φ_{2}(x)) = x − \frac{f(x)}{f′(x)} − \frac{f(x − \frac{f(x)}{f′(x)})}{f′(x − \frac{f(x)}{f′(x)})} ,

der auch nur 4 Auswertungen braucht und ebenfalls ein Verfahren 4.ter Ordnung darstellt:

|Φ_{2}(Φ_{2}(x)) − x^{∗}| ≤ const |Φ_{2}(x) − x^{∗}|^{2} ≤ const^{3} |x − x^{∗}|^{4} .

Vergleich:

• Φ̃_{4} braucht nur f, f′, Φ_{4} braucht f, f′, f′′, f′′′,

• für Φ̃_{4} braucht nur Φ_{2} implementiert werden,

• die Auswertungsgenauigkeit von Φ̃_{4} = Φ_{2} ∘ Φ_{2} ist praktisch identisch mit

der von Φ_{2}:

ΔΦ_{2}(Φ_{2}(x)) = \underbrace{Φ′_{2}(Φ_{2}(x))}_{≪ 1 für x ≈ Lösung} ΔΦ_{2} + ΔΦ_{2}

mit ΔΦ_{2} = Auswertungsfehler eines Newton-Schrittes.

Damit ist Φ̃_{4} dem Φ_{4} weit überlegen!

3.5 Bisektion (Intervallhalbierung)

Die Nullstellenfunktion f sei stetig, es seien a < b bekannt mit f(a)f(b) < 0 (d.h., f hat Vorzeichenwechsel auf [a, b]). Betrachte Intervallmitte c = (a+b)/2, ermittle das Vorzeichen von f(c). Es existiert entweder auf [a, c] oder auf [c, b] ein Vorzeichenwechsel. Fahre mit der entsprechenden Intervallhälfte fort.

a  f(x)  b  x

In jedem Schritt wird die Nullstelle auf ein Intervall halber Länge festgelegt (Interpretation: Intervalllänge = erreichte Genauigkeit). Dies entspricht linearer Konvergenz mit Kontraktionskonstante 1/2.

+ globale Konvergenz: wenn Startintervall mit Vorzeichenwechsel

bekannt ist, dann wird eine Nullstelle mit Sicherheit gefunden,

+ es wird eine Einschließung (obere und untere Schranke) der Null-

stelle geliefert,

+ nur Stetigkeit von f nötig,
− nur lineare Konvergenz: mit 2^{−10} = \frac{1}{1024} ≈ 10^{−3} gilt die Faustregel,

daß durch je 10 Schritte etwa 3 Dezimalstellen absoluter Genauigkeit gewonnen werden.

3.6 Das Sekantenverfahren

Banach-Iterationen x_{i+1} = Φ(x_{i}) sind Einschrittverfahren. Betrachte nun Mehrschrittverfahren x_{i+1} = Φ(x_{i}, x_{i−1}, …), speziell:

Definition 3.23:

Das Sekantenverfahren zur Lösung von f(x) = 0 ist die Iteration

x_{i+1} = Φ(x_{i}, x_{i−1}) = \frac{x_{i−1}f(x_{i}) − x_{i}f(x_{i−1})}{f(x_{i}) − f(x_{i−1})} (= x_{i} − \frac{f(x_{i})}{\frac{f(x_{i})−f(x_{i−1})}{x_{i}−x_{i−1}}} ) .

Man braucht nun 2 Startwerte x_{0}, x_{1} mit f(x_{0}) ≠ f(x_{1}).

Satz 3.24:

Es sei x^{∗} einfache Nullstelle einer 2-fach stetig diff’baren Funktion f. Dann existiert eine Umgebung U(x^{∗}), so daß für die Sekanteniteration mit beliebigem x_{0} ≠ x_{1} ∈ U(x^{∗}) gilt:

a) entweder es existiert ein Index i_{0} mit f(x_{i_{0}}) = 0 (Abbruch: Nullstelle ist gefunden), oder f(x_{i−1}) ≠ f(x_{i}) ∀i ∈ ℕ (d.h., alle Schritte (x_{i−1}, x_{i}) ↦ x_{i+1} sind durchführbar),

b) die Iteration konvergiert mit der Konvergenzordnung p = \frac{1+\sqrt{5}}{2} = 1.618... (“goldener Schnitt”) gegen x^{∗}.

Beweis: a) Auf einer hinreichend kleinen Umgebung einer einfachen Nullstelle ist f monoton. Unter der Voraussetzung, daß (x_{i}) diese Umgebung nicht verläßt (ist mit b) gerechtfertigt): Induktionsannahme: es gelte x_{0} ≠ x_{1}, …, x_{i−2} ≠ x_{i−1} (und damit f(x_{0}) ≠ f(x_{1}), …, f(x_{i−2}) ≠ f(x_{i−1})), sodaß die Rekursion bis x_{i} wohldefiniert ist. Für f(x_{i−1}) ≠ 0 folgt

x_{i} = x_{i−1} − \frac{(x_{i−1} − x_{i−2})f(x_{i−1})}{f(x_{i−1}) − f(x_{i−2})} ≠ x_{i−1} ⇒ f(x_{i}) ≠ f(x_{i−1}) ,

womit x_{i+1} auch wohldefiniert ist.

b) Mit e_{i} := x_{i} − x^{∗} folgt

e_{i+1} = \frac{e_{i−1}f(x_{i}) − e_{i}f(x_{i−1})}{f(x_{i}) − f(x_{i−1})} = e_{i} e_{i−1} \frac{Zähler}{Nenner}

mit

Nenner = \frac{f(x_{i−1}) − f(x_{i})}{x_{i−1} − x_{i}} = f′(ξ_{i})

(Zwischenwert ξ_{i}) und

Zähler = \frac{\frac{f(x_{i−1})−f(x_{i})}{x_{i−1}−x_{i}} − \frac{f(x_{i})−f(x^{∗})}{x_{i}−x^{∗}}}{x_{i−1} − x^{∗}} .

Dies ist eine sogenannte “zweite dividierte Differenz”, für die in Satz 7.11.b) später bei der Polynominterpolation die Darstellung Zähler = f′′(η_{i})/2 mit einem Zwischenwert

η_{i} ∈ ( min(x_{i−1}, x_{i}, x^{∗}), max(x_{i−1}, x_{i}, x^{∗}) )

gezeigt werden wird. Damit gilt die Fehlervererbung

e_{i+1} = e_{i} e_{i−1} \frac{1}{2} \frac{f′′(η_{i})}{f′(ξ_{i})} .

Wähle ein C > \frac{1}{2} |\frac{f′′(x^{∗})}{f′(x^{∗})} |. Wegen Stetigkeit von f′, f′′ existiert eine offene Um-

gebung Ũ(x^{∗}) mit C ≥ \frac{1}{2} |\frac{f′′(η)}{f′(ξ)} | ∀η, ξ ∈ Ũ(x^{∗}). Sie enthält ein Intervall um x^{∗} mit Radius r. Setze

U(x^{∗}) = \{ x; |x − x^{∗}| ≤ min (r, \frac{1}{2C} ) \} ⊂ Ũ(x^{∗}) .

Für x_{i−1}, x_{i} ∈ U(x^{∗}) folgt x_{i+1} ∈ U(x^{∗}), da |e_{i+1}| ≤ |e_{i}| |e_{i−1}| C ≤ |e_{i}|/2. Hiermit folgt auch Konvergenz e_{i} → 0 für beliebige Startwerte x_{0} ≠ x_{1} ∈ U(x^{∗}).

Zur Konvergenzrate: definiere E_{0} := |e_{0}|, E_{1} := |e_{1}| und E_{i+1} := C E_{i}E_{i−1}, womit wegen |e_{i+1}| ≤ C|e_{i}| |e_{i−1}| induktiv |e_{i}| ≤ E_{i} für i = 0, 1, 2, … folgt. Nach Aufgabe 15 gilt lim_{i→∞}(E_{i+1}/E_{i}^{p}) = C^{p−1}, also E_{i+1} ≤ const E_{i}^{p}.

Q.E.D.

Bemerkung 3.25: Geometrische Konstruktion: x_{i+1} ist die Nullstelle der Sekante durch x_{i−1}, x_{i}.

f(x) x^{∗}  x_{i+1} x_{i}  x_{i−1} x

Strahlensatz: \frac{f(x_{i})}{x_{i} − x_{i+1}} = \frac{f(x_{i−1})}{x_{i−1} − x_{i+1}} ⇒ x_{i+1} = \frac{x_{i−1}f(x_{i}) − x_{i}f(x_{i−1})}{f(x_{i}) − f(x_{i−1})} .

Bemerkung 3.26: Zur Berechnung von x_{i} braucht man f(x_{i−1}) und f(x_{i−2}). Speichert man f(x_{i−1}), so braucht man für x_{i+1} nur noch eine Funktionsauswertung f(x_{i})! Vergleich:

• 1 Newton-Schritt: 2 Auswertungen f und f′,

• 1 Sekanten-Doppelschritt x_{i}→x_{i+1}→x_{i+2}: 2 Auswertungen f(x_{i}), f(x_{i+1}).

In diesem Vergleich ist das Sekantenverfahren schneller als das Newton-Verfahren:

|x_{i+2} − x^{∗}| ≤ C |x_{i+1} − x^{∗}|^{p} ≤ CC^{p} |x_{i} − x^{∗}|^{p^{2}} =^{(1+p=p^{2})} (C |x_{i} − x^{∗}|)^{2.618...} .

Bemerkung 3.27: Es gibt globale Konvergenzprobleme bei lokalen Extrema und Sattelpunkten, auch bei mehrfachen Nullstellen:

[figure: f(x); x_{i−1}; x_{i}; x_{i−1}; x^{∗}; x_{i}; x; x_{i+1}]

Bemerkung 3.28: Eine Variante des Sekanten-Verfahrens ist die regula falsi:

x_{i+1} = Φ(x_{i}) = x_{i} − \frac{(x_{i} − x_{0}) f(x_{i})}{f(x_{i}) − f(x_{0})}

mit fixiertem x_{0} und Startpunkt x_{1} ≠ x_{0}. Dies ist eine Banach-Iteration mit der asymptotischen Kontraktionskonstante

Φ′(x^{∗}) = 1 − \frac{f′(x^{∗})}{\frac{f(x_{0})−f(x^{∗})}{x_{0}−x^{∗}}} ,

d.h., höchstens lineare Konvergenz. Ist nur historisch interessant.

Zusammenfassung des Sekantenverfahrens:

+ sehr schnell,
+ braucht nur f, nicht f′,
+ realistische a priori Abschätzungen verfügbar (siehe

z.B. [F.Stummel u. K.Hainer, Praktische Mathematik]),

− Probleme bei entarteten Nullstellen möglich,
− globale Konvergenzprobleme.

3.7 Numerische Genauigkeit bei mehrfachen Nullstellen

Mehrfache Nullstellen reagieren empfindlich auf Rundungsfehler:

↓18.11.97

f(x) + Δf  f(x) x^{∗}  x^{∗} + Δx^{∗}  x

Behauptung 3.29:

Es sei Δf der Auswertungsfehler bei der numerischen Berechnung einer Funktion f, es sei x^{∗} eine q-fache Nullstelle:

f(x^{∗}) = f′(x^{∗}) = … = f^{(q−1)}(x^{∗}) = 0 , f^{(q)}(x^{∗}) ≠ 0 .

Dann läßt sich x^{∗} prinzipiell nur bis auf die absolute Genauigkeit

|Δx^{∗}| ≈ (\frac{q! |Δf|}{|f^{(q)}(x^{∗})|})1/q

bestimmen.

Begründung: Es sei x^{∗} die exakte Nullstelle von f(x), es sei x̃^{∗} die exakte Nullstelle der numerischen Funktion f̃(x) = f(x) − Δf. Taylor-Entwicklung um x^{∗} liefert

0 = f̃(x̃^{∗}) = f(x̃^{∗}) + (f̃(x̃^{∗}) − f(x̃^{∗})) =

\underbrace{f(x^{∗}) + ⋯ + \frac{f^{(q−1)}(x^{∗})}{(q − 1)!}(x̃^{∗} − x^{∗})^{q−1}}_{= 0} + \frac{f^{(q)}(ξ)}{q!}(x̃^{∗} − x^{∗})^{q} − (f(x̃^{∗}) − f̃(x̃^{∗}))

⟹ (x̃^{∗} − x^{∗})^{q} = \frac{q! (f(x̃^{∗}) − f̃(x̃^{∗}))}{f^{(q)}(ξ)} ≈ \frac{q! Δf}{f^{(q)}(x^{∗})}

mit einem Zwischenwert ξ ≈ x^{∗} ≈ x̃^{∗}. D.h., selbst mit einem (hypothetischen) Verfahren, das die Nullstelle x̃^{∗} von f̃ auf jede beliebige Genauigkeit bestimmen kann, wird x^{∗} mittels x̃^{∗} nur bis auf die angegebene Genauigkeit approximiert.

Merke: Wenn \frac{q! |Δf|}{|f^{(q)}(x^{∗})|} in der Größenordnung der Maschinengenauigkeit τ

liegt, so ist eine q-fache Nullstelle \underline{mit jedem Verfahren} nur bis auf τ^{1/q} bestimmbar. Z.B., eine dreifache Nullstelle ist mit 15stelliger Rechnung prinzipiell nur bis auf etwa 5 Nachkommastellen absoluter Genauigkeit zu berechnen!

3.8 Nullstellen von Polynomen

Hauptanwendung: bestimme Matrixeigenwerte, d.h., Nullstellen eines charakteristischen Polynoms. Aber: es gibt hierfür auch schnelle und stabile Methoden, die nicht das charakteristische Polynom benutzen, siehe Kapitel 6.

3.8.1 Das Horner-Schema

Aufgabe: werte p(x) = a_{0}x^{n} + ⋯ + a_{n−1}x + a_{n} für x = x_{0} aus.

Naiv: berechne  x_{0}^{2}, x_{0}^{3}, …, x_{0}^{n} (n − 1 Multiplikationen)
a_{n−1} x_{0}, …, a_{0} x_{0}^{n} (n Multiplikationen)
und addiere  (n Additionen)

Besser:

p(x) = (( … ( ( a_{0} x + a_{1} ) x + a_{2} ) x + ⋯) …) x + a_{n−1} ) x + a_{n} .
↑
b_{0} = a_{0}
b_{1}(x) = a_{0} x + a_{1}
b_{2}(x) = a_{0} x^{2} + a_{1} x + a_{2}
...
b_{n}(x) = a_{0} x^{n} + a_{1} x^{n−1} + ⋯ + a_{n−1} x + a_{n}

Also: b_{i}(x) = x b_{i−1}(x) + a_{i} mit b_{0} = a_{0}.

Horner-Schema 3.30:

Zu gegebenen a_{0}, …, a_{n} und x_{0} liefert die Rekursion

\begin{matrix}b_{0} := a_{0} ; \\ for i := 1 to n do b_{i} := b_{i−1}x_{0} + a_{i} ; \end{matrix}

die Polynomauswertung b_{n} = a_{0} x_{0}^{n} + ⋯ + a_{n−1} x_{0} + a_{n} = p(x_{0}) mit n Multiplikationen und n Additionen.

Bemerkung 3.31: Mit p(x) = a_{0} x^{n} + ⋯ + a_{n−1} x + a_{n} gilt für die b_{i} aus dem Horner-Schema:

\frac{p(x) − p(x_{0})}{x − x_{0}} = b_{0} x^{n−1} + b_{1}x^{n−2} + ⋯ + b_{n−2} x + b_{n−1}

(Beweis: Aufgabe 17). Also: das Horner-Schema erlaubt numerische Polynomdivision, die b_{i} sind die Koeffizienten des Faktorpolynoms.

Bemerkung 3.32: Nach Konstruktion ist b_{i} ein Polynom i.ten Grades in x_{0}:

b_{0} = a_{0} , b_{1} = a_{0} x_{0} + a_{1} , b_{2} = a_{0} x_{0}^{2} + a_{1}x_{0} + a_{2} , ….

Für c_{i} := db_{i+1}/dx_{0} folgt durch Differenzieren von b_{i+1}(x_{0}) = x_{0} b_{i}(x_{0}) + a_{i+1} die Rekursion

c_{i} = x_{0} c_{i−1} + b_{i} mit dem Start c_{0} = \frac{db_{1}}{dx_{0}} = b_{0} .

Damit wird die Ableitung p′(x_{0}) = db_{n}/dx_{0} = c_{n−1} numerisch berechenbar. Analog für d_{i} := dc_{i+1}/dx_{0} = d^{2}b_{i+2}/dx_{0}^{2}:

d_{i} = x_{0} d_{i−1} + 2 c_{i} mit dem Start d_{0} = \frac{dc_{1}}{dx_{0}} = 2 c_{0} .

40 KAPITEL 3. NICHTLINEARE GLEICHUNGEN (SKALAR) Höhere Ableitungen sind analog auswertbar: Erweitertes Horner-Schema für p(x) = a_{0}x^{n} + ⋯ + a_{n}:

b_{0} := a_{0} ; for i := 1 to n do  b_{i} := x_{0} b_{i−1} + a_{i} ;
c_{0} := b_{0} ; for i := 1 to n − 1 do c_{i} := x_{0} c_{i−1} + b_{i} ;
d_{0} := 2 c_{0} ; for i := 1 to n − 2 do d_{i} := x_{0} d_{i−1} + 2 c_{i} ;
e_{0} := 3 d_{0} ; for i := 1 to n − 3 do e_{i} := x_{0} e_{i−1} + 3 d_{i} ;
⋮ ⋮ ⋮

Liefert: b_{n} = p(x_{0}), c_{n−1} = p′(x_{0}), d_{n−2} = p′′(x_{0}), e_{n−3} = p′′′(x_{0}) etc.

3.8.2 Nullstellenabschätzung

Die Lage der Nullstellen eines Polynoms kann a priori aus den Koeffizienten abgeschätzt werden: Satz 3.33:

Für die Nullstellen z ∈ ℂ von p(x) = a_{n} x^{n} + ⋯ + a_{0} gilt

|z| ≤ max ( |\frac{a_{0}}{a_{n}} | , 1 + |\frac{a_{1}}{a_{n}} | , ⋯, 1 + |\frac{a_{n−1}}{a_{n}} | ) .

Achtung: andere Indizierung der a_{i} als in Sektion 3.8.1! Beweis: Es sei m das angegebene Maximum.

Behauptung: Für |z| > m gilt ∑_{k=0}^{j−1} |\frac{a_{k}}{a_{n}} | |z|^{k−j} < 1 für j = 1, …, n.

Beweis: Induktion nach j:

j = 1 : |\frac{a_{0}}{a_{n}} | \frac{1}{|z|} < 1 ⟺ |z| > |\frac{a_{0}}{a_{n}} | (ok).

j ↦ j + 1 : ∑_{k=0}^{j} |\frac{a_{k}}{a_{n}} | |z|^{k−j−1} = \frac{1}{|z|} (∑_{k=0}^{j−1} |\frac{a_{k}}{a_{n}} | |z|^{k−j} + |\frac{a_{j}}{a_{n}} |)

< \frac{1}{|z|} (1 + |\frac{a_{j}}{a_{n}} |) < \frac{1}{m} (1 + |\frac{a_{j}}{a_{n}} |) ≤^{(j<n)} 1 .

(Behauptung)

Hiermit folgt

|p(z)| = |∑_{k=0}^{n} a_{k} z^{k}| = |a_{n}| |z^{n}| |1 + ∑_{k=0}^{n−1} \frac{a_{k}}{a_{n}} z^{k−n}|

\begin{matrix}umgekehrte \\ ≥ \\ Dreiecksungl. \end{matrix} |a_{n}| |z^{n}| \overbrace{<1}^{(1 − ∑_{k=0}^{n−1} |\frac{a_{k}}{a_{n}} | |z|^{k−n})} > 0 .

Also: |z| > m ⇒ z ist nicht Nullstelle.

Q.E.D.

Bemerkung 3.34: Es existieren noch viele andere Abschätzungen (z.B. Satz 5.5.8 in [J. Stoer, Numerische Mathematik 1]).

3.8.3 Das Newton-Verfahren für Polynome

Mit

p(x) = a_{n} x^{n} + ⋯ + a_{0} = a_{n} x^{n} (1 + \frac{a_{n−1}}{a_{n} x} + ⋯ + \frac{a_{0}}{a_{n} x^{n}} ) ≈^{(|x|≫1)} a_{n} x^{n}

ist die Newton-Folge für Startwerte |x^{(0)}| ≫ 1 zunächst monoton:

x^{∗} x^{(3)} x^{(2)} x^{(1)}  x^{(0)} x

Satz 3.35: (Globale Konvergenz des Newton-Verfahrens für Polynome) Das reelle Polynom p(x) habe die reellen Nullstellen x_{1} ≥ … ≥ x_{N} und die komplexen Nullstellenpaare ξ_{1}, ξ̄_{1}, …, ξ_{M}, ξ̄_{M} (d.h., Polynomgrad(p) = N + 2 M). Falls x_{1} ≥ max {ℜe(ξ_{1}), …, ℜe(ξ_{M})} gilt ( ℜe = Realteil ), dann konvergiert die Newton-Folge x^{(i+1)} = x^{(i)} − p(x^{(i)})/p′(x^{(i)}) für jeden Startwert x^{(0)} > x_{1} monoton fallend gegen x_{1}.

Beweis: Aufgabe 18.

Bemerkung 3.36: Die Lage der Nullstellen kann mittels Satz 3.33 (Bemer-20.11.97↓

kung 3.34) abgeschätzt werden, sodaß Startwerte x^{(0)} > x_{1} leicht ermittelt werden können. Ist der Startwert jedoch zu weit von x_{1} entfernt, so beobachtet man zunächst, daß sich die Newton-Punkte nur langsam der Nullstelle x_{1} nähern, bis die (bei nicht-entartetem x_{1}) quadratische Konvergenz einsetzt: Für sehr großes x gilt p(x) = a_{n} x^{n} + ⋯ + a_{0} ≈ a_{n} x^{n}, sodaß mit

x^{(i+1)} = x^{(i)} − \frac{p(x^{(i)})}{p′(x^{(i)})} ≈ x^{(i)} − \frac{a_{n} (x^{(i)})^{n}}{n a_{n} (x^{(i)})^{n−1}} = (1 − \frac{1}{n}) x^{(i)}

die Punkte zunächst um den konstanten Faktor 1 − 1/n verkleinert werden, der für n ≫ 1 dicht bei 1 liegt. Bei hochgradigen Polynomen ist eine gute Abschätzung der größten Nullstelle wichtig!

Nach Auffinden der größten Nullstelle kann das Newton-Verfahren zur Suche nach den weiteren Nullstellen benutzt werden:

Bezeichnung 3.37:

Es sei x_{1} eine schon gefundene Nullstelle von p(x). Dann heißt p_{1}(x) =

\frac{p(x)}{x − x_{1}} Deflationspolynom. Es enthält die restlichen Nullstellen.

Über das Horner-Schema 3.30 sind nach Bemerkung 3.31 die Koeffizienten b_{i} von

p_{1}(x) = \frac{p(x)}{x − x_{1}} = \frac{p(x) − p(x_{1})}{x − x_{1}} = b_{0}x^{n−1} + ⋯ + b_{n−1}

berechenbar, so daß mittels p_{1} die weiteren Nullstellen ermittelt werden können. Aber (Problem!): die berechnete Nullstelle x_{1} ist mit einem Fehler behaftet. Dieser pflanzt sich auf p_{1} fort, so daß weitere Nullstellen immer ungenauer bestimmt werden.

Besser “formale Deflation”: Es seien x_{1}, …, x_{j} schon gefundene Nullstellen von p. Das Newton-Verfahren für das Deflationspolynom

p_{j}(x) = \frac{p(x)}{ω_{j}(x)} , ω_{j}(x) = (x − x_{1}) ⋯ (x − x_{j})

ist die Iteration

x → Φ_{j}(x) := x − \frac{p_{j}(x)}{p′_{j}(x)} = x − \frac{\frac{p(x)}{ω_{j}(x)}}{\frac{p′(x)}{ω_{j}(x)} − p(x)\frac{ω′_{j}(x)}{ω_{j}(x)^{2}}} = x − \frac{p(x)}{p′(x) − p(x)\frac{ω′_{j}(x)}{ω_{j}(x)}}

mit

\frac{ω′_{j}(x)}{ω_{j}(x)} = \frac{∑_{k=1}^{j}(x − x_{1}) ⋯ (x − x_{k}) [figure] ⋯ (x − x_{j})}{(x − x_{1}) ⋯ (x − x_{j})} = ∑_{k=1}^{j} \frac{1}{x − x_{k}} .

Also: die Newton-Iteration für p_{j}(x) = \frac{p(x)}{(x − x_{1}) ⋯ (x − x_{j})} ist die Iteration

x → Φ_{j}(x) = x − \frac{p(x)}{p′(x) − p(x) ∑_{k=1}^{j} \frac{1}{x − x_{k}}} .

Dies ist unabhängig davon, ob x_{1}, …, x_{j} Nullstellen von p sind. Wenn sie Nullstellen sind, dann ist p_{j} wieder ein Polynom und die Iteration mit Φ_{j} konvergiert für große Startwerte monoton fallend gegen die nächste Nullstelle von p.

Dies führt zum Newton-Maehly-Verfahren zur Bestimmung \underline{aller} reellen Nullstellen eines Polynoms:

Algorithmus 3.38: (“Newton-Maehly-Verfahren”)

Gegeben reelles Polynom p mit rein reellen Nullstellen x_{1} ≥ x_{2} ≥ . . ..

a) Finde mit Satz 3.33 einen Startpunkt x^{(0)} > x_{1}.

b) Finde x_{1} durch das Newton-Verfahren mit Start x^{(0)}.

b) Wenn x_{1} ≥ x_{2} ≥ ⋯ ≥ x_{j} schon gefundene Nullstellen sind, dann finde x_{j+1} durch Iteration mit

Φ_{j}(x) = x − \frac{p(x)}{p′(x) − p(x) ∑_{k=1}^{j} \frac{1}{x − x_{k}}}

mit Startwert x^{(0)} (die Konvergenz ist monoton fallend).

Bemerkung 3.39: Die Nullstellen können durchaus entartet sein und werden dann mehrfach angefahren. Sie werden aber nur in linearer Konvergenz und mit großen Fehlern berechnet.

Bemerkung 3.40: Außer bei Entartung ist dies Verfahren numerisch sehr stabil, da es sich um eine Banach-Iteration \underline{mit der Ausgangsfunktion p} handelt. Die explizite Deflation auf p_{j} wird vermieden. Der Zusatzterm mit x_{k} in Φ_{j} kommt nur für x ≈ x_{k} zum Tragen und sorgt dafür, daß die Newton-Iteration monoton fallend über x_{k} hinwegläuft und x_{j+1} ansteuert:

x_{j+2}  x_{j+1} x_{j}  x_{j−1}  x_{1} …  p_{j}(x)

Da die numerischen Nullstellen x_{i} = x_{i}^{(num)} allerdings mit Fehlern behaftet sind,

hat p_{j}(x) = \frac{p(x)}{(x − x_{1}^{(num)}) ⋯ (x − x_{j}^{(num)})} dicht beieinander Nullstellen x_{i}^{(exakt)}

und Pole x_{i}^{(num)}:

x_{j+2}  x_{j+1} x_{j}^{(exakt)} x_{j}^{(num)} x_{j−1}^{(exakt)} x_{j−1}^{(num)}  x_{1}^{(exakt)} x_{1}^{(num)} . . . . . .  p_{j}(x)

Bemerkung 3.41: Auch bei vorhandenen komplexen Wurzelpaaren werden \underline{in der Regel} alle reellen Wurzeln gefunden, allerdings nicht mehr notwendigerweise in der Reihenfolge x_{1} ≥ x_{2} ≥ ….

Bemerkung 3.42: Die komplexen Wurzelpaare reeller Polynome können ebenfalls mit reeller Arithmetik berechnet werden (Bairstow-Verfahren, siehe z.B. [Stoer, Numerische Mathematik 1] oder [Oevel, Einführung in die Numerische Mathematik]).

Lineare Gleichungssysteme

Aufgabe: berechne die Lösung x⃗ = A^{−1}b⃗ eines linearen Gleichungssystem Ax⃗ = b⃗ mit invertierbarer n × n-Matrix A.

4.1 Vorbemerkungen

a) Der Rechenaufwand ist i.a. \frac{n^{3}}{3} ... n^{3} Operationen für beliebiges A. Weniger, falls A spezielle Strukturen hat (“dünnbesetzt” ist).

b) Es gibt 2 universelle Verfahren • Gauß-Elimination = LR-Zerlegung,

• QR-Zerlegung, die für jedes A funktionieren. Diese sind \underline{direkt}, d.h., die Lösung ist nach O(n^{3}) Rechenschritten exakt bis auf Rundungsfehler berechnet. Für spezielle A gibt es schnellere \underline{iterative} Verfahren.

c) Man berechnet A^{−1} \underline{nicht} (!) explizit.

d) Der Rechenaufwand ist aus einer (Pseudo-)Implementierung abzuleiten,

↓25.11.97

z.B., Matrixmultiplikation C = (c_{ij}) = AB = (a_{ij})(b_{ij}) zweier n × n-Matrizen:

for i := 1 to n do for j := 1 to n do c_{ij} := ∑_{k=1}^{n} a_{ik} b_{kj} ; ⟹ \{ \begin{matrix}∑_{i=1}^{n} ∑_{j=1}^{n} ∑_{k=1}^{n} 1 = n^{3} Multiplikationen \\ ∑_{i=1}^{n} ∑_{j=1}^{n}(n − 1) = n^{3} − n^{2} Additionen \end{matrix}

Nützliche Formeln: ∑_{i=1}^{n} i = \frac{n(n + 1)}{2} , ∑_{i=1}^{n} i^{2} = \frac{n(n + 1)(2n + 1)}{6} , etc.

46 KAPITEL 4. LINEARE GLEICHUNGSSYSTEME

4.2 Blockzerlegungen

Man kann große Matrizen als kleinere Matrizen mit “Blockeinträgen” auffassen, die formal multipliziert werden können, z.B.:

( \begin{matrix}\begin{matrix}a_{11} & a_{12} \\ a_{21} & a_{22} \end{matrix} & \begin{matrix}a_{13} & a_{14} \\ a_{23} & a_{24} \end{matrix} \\ \begin{matrix}a_{31} & a_{32} \\ a_{41} & a_{42} \end{matrix} & \begin{matrix}a_{33} & a_{34} \\ a_{43} & a_{44} \end{matrix} \end{matrix} ) ( \begin{matrix}b_{11} & b_{12} \\ b_{21} & b_{22} \end{matrix} ; \begin{matrix}b_{31} & b_{32} \\ b_{41} & b_{42} \end{matrix} )

=: ( \begin{matrix}A_{11} & A_{12} \\ A_{21} & A_{22} \end{matrix} ) ( B_{1} ; B_{2} ) = ( A_{11}B_{1} + A_{12}B_{2} ; A_{21}B_{1} + A_{22}B_{2} ) .

Anderes Beispiel:

AB = A\underbrace{( b⃗_{1}, b⃗_{2}, …)}_{Spalten von B} = \underbrace{( Ab⃗_{1}, Ab⃗_{2}, …)}_{Spalten von AB} .

Also: Spalten des Produktes = A wirkend auf die Spalten von B.

4.3 Strassens schnelle Matrixmultiplikation

Die Multiplikation C = AB zweier n × n-Matrizen braucht weniger als O(n^{3}) Operationen! Standard:

C = ( \begin{matrix}A_{11} & A_{12} \\ A_{21} & A_{22} \end{matrix} ) ( \begin{matrix}B_{11} & B_{12} \\ B_{21} & B_{22} \end{matrix} ) = ( \begin{matrix}A_{11}B_{11} + A_{12}B_{21} & A_{11}B_{12} + A_{12}B_{22} \\ A_{21}B_{11} + A_{22}B_{21} & A_{21}B_{12} + A_{22}B_{22} \end{matrix} ) .

Strassens Beobachtung: man kommt mit 7 statt 8 Multiplikationen aus:

C = ( \begin{matrix}m_{1} + m_{2} − m_{3} + m_{4} & m_{3} + m_{5} \\ m_{2} + m_{6} & m_{1} + m_{5} − m_{6} + m_{7} \end{matrix} )

mit

m_{1} = (A_{11} + A_{22}) (B_{11} + B_{22}) , m_{5} = A_{11} (B_{12} − B_{22}) ,
m_{2} = A_{22} (B_{21} − B_{11}) ,  m_{6} = (A_{21} + A_{22}) B_{11} ,
m_{3} = (A_{11} + A_{12}) B_{22} ,  m_{7} = (A_{21} − A_{11}) (B_{11} + B_{12}) ,
m_{4} = (A_{12} − A_{22}) (B_{21} + B_{22}) .

Z.B.: m_{3} + m_{5} = (A_{11} + A_{12})B_{22} + A_{11}(B_{12} − B_{22}) = A_{11}B_{12} + A_{12}B_{22} etc.

Also:  statt (Standard) 8 Multiplikationen + 4 Additionen nun (Strassen) 7 Multiplikationen + 18 Additionen.

Sei n gerade, es seien A_{11}, …, B_{22} Matrixblöcke der halben Dimension \frac{n}{2} × \frac{n}{2}. Angenommen, m_{1}, …, m_{7} werden durch “naive” Matrixmultiplikation berechnet:

Standard:  \{ \begin{matrix}& n^{3} skalare Multiplikationen \\ + & (n^{3} − n^{2}) skalare Additionen \\ = & 2n^{3} − n^{2} Operationen. \end{matrix}

Strassen:  \{ \begin{matrix}& 7 (\frac{n}{2})^{3} skalare Multiplikationen \\ + & (7 ( (\frac{n}{2})^{3} − (\frac{n}{2})^{2} ) + 18 (\frac{n}{2})^{2}) skalare Additionen \\ = & \frac{7}{4} n^{3} + \frac{11}{4} n^{2} Operationen. \end{matrix}

Für n ≫ 1 gewinnt man etwa 12.5% an Rechenzeit (\frac{7}{4}n^{3} gegenüber 2n^{3}).

Satz 4.1: (Strassen 1969)

Die Multiplikation zweier 2^{m} × 2^{m}-Matrizen kann mit 7^{m} skalaren Multiplikationen und 6 (7^{m} − 4^{m}) skalaren Additionen berechnet werden. Mit n = 2^{m} und 7^{m} = 2^{m log_{2} 7} = n^{log_{2} 7} = n^{2.807...} ist dies für n ≫ 1 schneller als die Standardmultiplikation (O(n^{3}) Operationen).

Beweis: Zurückführen auf Blöcke halber Größe, diese werden wiederum halbiert usw. (Aufgabe 21).

Bemerkung 4.2: Für die Praxis ist dies nicht sehr relevant. Z.B., m = 10, n = 2^{m} = 1024:

Standard: 2n^{3} − n^{2} ≈ 2.146... × 10^{9} Operationen,
Strassen: 7^{m} + 6 (7^{m} − 4^{m}) ≈ 1.971... × 10^{9} Operationen,

d.h., nur ≈ 8.2% Gewinn bei viel höherem Implementierungsaufwand.

4.4 Dreieckssysteme

Löse Ax⃗ = b⃗ mit unterer Dreiecksmatrix A = (a_{ij}) = ( \begin{matrix}a_{11} & & 0 \\ ⋮ & ... \\ a_{n1} & … & a_{nn} \end{matrix} ):

a_{11} x_{1}  = b_{1}
a_{21} x_{1} + a_{22} x_{2}  = b_{2}
⋮  ⋮  ...  ⋮
a_{n1} x_{1} + a_{n2} x_{2} + ⋯ + a_{nn} x_{n} = b_{n}

Beachte: A invertierbar ⟺ alle a_{ii} ≠ 0. Lösung durch Rücksubstitution 4.3:

\begin{matrix}x_{1} := b_{1} / a_{11} ; \\ for i := 2 to n do x_{i} := ( b_{i} − ∑_{j=1}^{i−1} a_{ij} x_{j} ) / a_{ii} ; \end{matrix}

mit

1 + ∑_{i=2}^{n} i = \frac{n(n + 1)}{2} = \frac{n^{2}}{2} ( 1 + O (\frac{1}{n}) )

Multiplikationen/Divisionen (und ähnlich vielen Additionen).

Analog bei oberen Dreieckssystemen:

a_{11} x_{1} + ⋯ + a_{1,n−1} x_{n−1} + a_{1n} x_{n} = b_{1}
... ⋮ ⋮ ⋮
a_{n−1,n−1} x_{n−1} + a_{n−1,n} x_{n} = b_{n−1}
a_{nn} x_{n} = b_{n}
Lösung:  x_{n} := b_{n} / a_{nn} ; for i := n − 1 downto 1 do x_{i} := ( b_{i} − ∑_{j=i+1}^{n} a_{ij} x_{j} ) / a_{ii} ;

Bemerkung 4.4:

a) Bezeichnung: lineare Systeme mit Dreiecksmatrizen heißen gestaffelt.

b) Der Lösungsaufwand ist für gestaffelte Systeme Ax⃗ = b⃗ nur O(n^{2}) (statt O(n^{3}) bei vollbesetzten Matrizen).

c) Bei zusätzlichen Bandstrukturen, z.B.

A = p \{( ∗  0 ; ⋮ ... ; ∗ ... ... ; ... ... ... ; 0  ∗ … ∗ ; \overbrace{p} )

reduziert sich der Aufwand auf ≈ n p Multiplikationen (und ähnlich viele Additionen). Allgemein reduziert sich der Aufwand bei dünnbesetzten (“sparse”) Dreiecksmatrizen auf m Multiplikationen, wo m die Anzahl der nicht-trivialen Matrixkomponenten ist. Dies gilt auch bei komplizierteren Dünnbesetztheitsgeometrien (“sparsity pattern”), wo sich die nichttrivialen Matrixelemente nicht notwendigerweise zu wenigen Bändern um die Diagonale formieren sondern irgendwie in der Matrix verteilt sind. Hierzu müssen lediglich die Summen in der Rücksubstitution so implementiert werden, daß sie nur über die nicht-trivialen Matrixelemente laufen.

d) Die explizite Berechnung von A^{−1} braucht auch für Dreiecksmatrizen O(n^{3}) Operationen (Aufgabe 20.c).

4.5 Der Gauß-Algorithmus

ist ein Standardalgorithmus für Systeme ohne besondere Struktur. Idee: trans-

↓4.12.97

formiere Ax⃗ = b⃗ auf ein äquivalentes oberes Dreieckssystem Rx⃗ = c⃗, das dann durch Rücksubstitution schnell lösbar ist. Umformung mittels Elementaroperationen:

• vertausche Gleichungen,

• addiere Vielfaches einer Gleichung zu einer anderen.

Start: \begin{aligned}a_{11} x_{1} & + & a_{12} x_{2} & + & ⋯ & + & a_{1n} x_{n} & = & b_{1} \\ a_{21} x_{1} & + & a_{22} x_{2} & + & ⋯ & + & a_{2n} x_{n} & = & b_{2} \\ ⋮ & & ⋮ & & ... & & ⋮ & & ⋮ \\ a_{n1} x_{1} & + & a_{n2} x_{2} & + & ⋯ & + & a_{nn} x_{n} & = & b_{n} \end{aligned}

1.ter Eliminationsschritt: ziehe geeignete Vielfache der ersten Zeile von den anderen ab, um Nullen unter a_{11} zu erzeugen:

a_{11} x_{1} + a_{12} x_{2} + ⋯ + a_{1n} x_{n} = b_{1}
a_{21}/a_{11}  a′_{22} x_{2} + ⋯ + a′_{2n} x_{n} = b′_{2}
⋮  ⋮  ...  ⋮  ⋮
a_{n1}/a_{11} a′_{n2} x_{2} + ⋯ + a′_{nn} x_{n} = b′_{n}

mit

a′_{ik} = a_{ik} − \frac{a_{i1}}{a_{11}} a_{1k} , b′_{i} = b_{i} − \frac{a_{i1}}{a_{11}} b_{1} , i, k = 2, …, n .

Bezeichnung: a_{i1}/a_{11} = “Eliminationsfaktoren”.

2.ter Eliminationsschritt: erzeuge Nullen unter a′_{22}:

a_{11} x_{1} + a_{12} x_{2} + a_{13} x_{3} + ⋯ + a_{1n} x_{n} = b_{1}
a_{21}/a_{11}  a′_{22} x_{2} + a′_{23} x_{3} + ⋯ + a′_{2n} x_{n} = b′_{2}
⋮  a′_{32}/a′_{22}  a′′_{33} x_{3} + ⋯ + a′′_{3n} x_{n} = b′′_{3}
⋮  ⋮  ⋮  ...  ⋮  ⋮
a_{n1}/a_{11}  a′_{n2}/a′_{22} a′′_{n3} x_{3} + ⋯ + a′′_{nn} x_{n} = b′′_{n}

mit

a′′_{ik} = a′_{ik} − \frac{a′_{i2}}{a′_{22}} a′_{2k} , b′′_{i} = b′_{i} − \frac{a′_{i2}}{a′_{22}} b′_{2} , i, k = 3, …, n .

j.ter Eliminationsschritt: ziehe Vielfaches der j.ten Zeile von den restlichen Zeilen ab, um unter dem j.ten Diagonalelement Nullen zu erzeugen.

Einzig mögliches Problem: das j.te Diagonalelement verschwindet.

1. Fall: Darunter stehen nur Nullen. Es ist nichts mehr zu tun, gehe zum (j + 1).ten Schritt. Dieser Fall tritt genau dann irgendwann ein, wenn A nicht invertierbar ist.

2. Fall: Es gibt mindestens einen nichtverschwindenden Eintrag unter dem j.ten Diagonalelement. Wähle \underline{irgendeinen} dieser Einträge (das “Pivotelement”), bringe es in die j.te Zeile, indem die \underline{gesamte} Pivotzeile (inklusive der abzuspeichernden Eliminationsfaktoren!) mit der j.ten Zeile ausgetauscht wird. Dann erzeuge die gewünschten Nullen.

Implementierung:

Algorithmus 4.5: (Gauß-Elimination = LR-Zerlegung, siehe Satz 4.12) Erweitere A = (a_{ij}) zum n × (n + 1)-Schema:

( \begin{matrix}a_{11} & … & a_{1n} & a_{1,n+1} \\ ⋮ & ... & ⋮ & ⋮ \\ a_{n1} & … & a_{nn} & a_{n,n+1} \end{matrix} ) mit a_{i,n+1} = b_{i}, i = 1, …, n .

4.6. LR-FAKTORISIERUNG 51

for j := 1 to n − 1 do begin falls a_{jj} = a_{j+1,j} = … = a_{nj} = 0, so gehe zum (j + 1).ten Schritt ; p := Pivotindex(j)∈ {j, j + 1, …, n} ; Vertauschung der Zeilen j und p im n × (n + 1)-Schema ; for i := j + 1 to n do begin

a_{ij} := a_{ij}/a_{jj} ; (∗ Abspeichern der Eliminationsfaktoren ∗) for k := j + 1 to n + 1 do a_{ik} := a_{ik} − a_{ij} a_{jk} ;

end ; end ;

Resultat: zuletzt ist die zu Ax⃗ = b⃗ äquivalente gestaffelte Gleichung Rx⃗ = c⃗

( \begin{matrix}r_{11} & ⋯ & r_{1n} & c_{1} \\ & ... & ⋮ & ⋮ \\ ∗ & & r_{nn} & c_{n} \end{matrix} )

im Schema gespeichert und kann schnell durch Rücksubstitution gelöst werden.

Rechenaufwand zur Erzeugung des gestaffelten Systems:

∑_{j=1}^{n−1} ∑_{i=j+1}^{n} (1 + ∑_{k=j+1}^{n+1} 1) = \frac{n (n − 1) (2n + 5)}{6} = \frac{n^{3}}{3} (1 + O(\frac{1}{n}))

Multiplikationen (und ähnlich viele Additionen). Bemerkung 4.6: Die Umformung Ax⃗ = b⃗ ⟺ Rx⃗ = c⃗ funktioniert immer, selbst wenn A nicht invertierbar ist (wobei dann auch R nicht invertierbar ist).

4.6 LR-Faktorisierung

Bezeichnung 4.7:

Die Standardbasis des ℝ^{n} wird mit e⃗_{i} = (0, …, 0, 1, 0, …, 0)^{T} bezeichnet.

Bemerkung 4.8: Die Elementaroperationen des Gauß-Algorithmus lassen sich als Multiplikation mit Elementarmatrizen interpretieren: mit

P = ( I 1 0  1 I 1 1  0 I 1 ) \begin{matrix}← i \\ ← j \end{matrix} = I 1 − e⃗_{i} e_{i}^{T} − e⃗_{j} e_{j}^{T} + e⃗_{i} e_{j}^{T} + e⃗_{j} e_{i}^{T}

↑ ↑
i j

F = ( \begin{matrix}1 \\ . & . & . \\ & α & ... \\ & & & 1 \end{matrix} ) ← i = I 1 + α e⃗_{i} e_{j}^{T}

↑
j

gilt:  A → P A : Vertauschung der Zeilen i und j, A → AP : Vertauschung der Spalten i und j, A → F A : addiere das α-fache der j.ten Zeile zur i.ten Zeile.

Definition 4.9:

Eine Permutationsmatrix ist eine quadratische Matrix, die in jeder Zeile und jeder Spalte mit genau einer 1 und ansonsten mit 0 besetzt ist.

Lemma 4.10:

a) Produkte von Permutationsmatrizen sind wieder Permutationsmatrizen.

b) Permutationsmatrizen sind orthogonal: P P^{T} = P^{T} P = I 1.

c) Linksmultiplikation mit einer Permutationsmatrix entspricht einer Zeilenvertauschung, Rechtsmultiplikation einer Spaltenvertauschung.

Beweis: offensichtliche Übung.

Beispiel 4.11: Sei P = ( \begin{matrix}0 & 1 & 0 \\ 0 & 0 & 1 \\ 1 & 0 & 0 \end{matrix} ) , A = ( \begin{matrix} & z_{1}^{T} \\ & z_{2}^{T} \\ & z_{3}^{T} \end{matrix} ) = (s⃗_{1}, s⃗_{2}, s⃗_{3}) (Zerlegung

von A nach Zeilen bzw. Spalten). Es gilt P A = ( \begin{matrix} & z_{2}^{T} \\ & z_{3}^{T} \\ & z_{1}^{T} \end{matrix} ) , AP = (s⃗_{3}, s⃗_{1}, s⃗_{2}) .

Satz 4.12: (LR-Zerlegung)

Das System Ax⃗ = b⃗ wird im Gauß-Algorithmus 4.5 auf die Endform

( \begin{matrix}r_{11} & … & … & r_{1n} & c_{1} \\ l_{21} & ... & ... & ⋮ & ⋮ \\ ⋮ & ... & ... & ⋮ & ⋮ \\ l_{n1} & … & l_{n,n−1} & r_{nn} & c_{n} \end{matrix} )

gebracht (der untere Dreiecksanteil (l_{ij}) entsteht aus den abgespeicherten Eliminationsfaktoren). Es seien P_{1}, …, P_{n−1} (eventuell mit P_{j} = I 1) die bei der Pivotierung durchgeführten Zeilenvertauschungen. Mit

L = ( \begin{matrix}1 & & & 0 \\ l_{11} & ... \\ ⋮ & ... & ... \\ l_{n1} & … & l_{n,n−1} & 1 \end{matrix} ) , R = ( \begin{matrix}r_{11} & … & … & r_{1n} \\ & ... & ... & ⋮ \\ & & ... & ⋮ \\ 0 & & & r_{nn} \end{matrix} )

und P = P_{n−1} ⋯ P_{1} gilt: P A = LR (“LR-Faktorisierung”).

Beweis: Zu Beginn des j.ten Schrittes liegt das Zwischenschema

↓9.12.97

( \begin{matrix}r_{11} & … & … & r_{1,j−1} & r_{1j} & … & r_{1n} \\ l_{21} & ... & ... & ⋮ & ⋮ & ... & ⋮ \\ ⋮ & ... & ... & ⋮ & ⋮ & ... & ⋮ \\ l_{j−1,j} & … & l_{j−1,j−2} & r_{j−1,j−1} & r_{j−1,j} & … & r_{j−1,n} \\ l_{j1}^{(j)} & … & … & l_{j,j−1}^{(j)} & a_{jj}^{(j)} & … & a_{jn}^{(j)} \\ ⋮ & ... & ... & ⋮ & ⋮ & ... & ⋮ \\ l_{n1}^{(j)} & … & … & l_{n,j−1}^{(j)} & a_{nj}^{(j)} & … & a_{nn}^{(j)} \end{matrix} ) = L^{(j)} + R^{(j)}

mit

L^{(j)} = ( \begin{matrix}0 & & 0 \\ l_{21} & ... & & 0 \\ ⋮ & ... & 0 \\ l_{j1}^{(j)} & ... & l_{j,j−1}^{(j)} \\ ⋮ & ... & ⋮ & 0 \\ l_{n1}^{(j)} & … & l_{n,j−1}^{(j)} \end{matrix} )

und

R^{(j)} = ( \begin{matrix}r_{11} & … & … & … & … & r_{1n} \\ & ... & ... & ... & ... & ⋮ \\ 0 & & r_{j−1,j−1} & … & … & r_{j−1,n} \\ & & & a_{jj}^{(j)} & … & a_{jn}^{(j)} \\ & 0 & & ⋮ & ... & ⋮ \\ & & & a_{nj}^{(j)} & … & a_{nn}^{(j)} \end{matrix} )

vor. Die nächste Zeilenvertauschung P_{j} liefert L̃^{(j)} = P_{j}L^{(j)} und

R̃^{(j)} = P_{j}R^{(j)} = ( \begin{matrix}r_{11} & … & … & … & … & r_{1n} \\ & ... & ... & ... & ... & ⋮ \\ 0 & & r_{j−1,j−1} & … & … & r_{j−1,n} \\ & & & r_{jj} & … & r_{jn} \\ & & & ã_{j+1,j}^{(j)} & … & ã_{j+1,n}^{(j)} \\ & 0 & & ⋮ & ... & ⋮ \\ & & & ã_{nj}^{(j)} & … & ã_{nn}^{(j)} \end{matrix} ) .

Die neuen Eliminationsfaktoren l⃗_{j} = ( 0 ; ⋮ ; 0 ; ã_{j+1,j}^{(j)}/r_{jj} ; ⋮ ; ã_{n,j}^{(j)}/r_{jj} ) werden als j.te Spalte

an L̃^{(j)} angefügt:

L^{(j+1)} = L̃^{(j)} + l⃗_{j} e_{j}^{T} .

Vielfache der j.ten Zeile e_{j}^{T} R̃^{(j)} = (0, …, 0, r_{jj}, …, r_{jn}) von R̃^{(j)} werden von den unteren Zeilen von R̃^{(j)} abgezogen:

R^{(j+1)} = R̃^{(j)} − l⃗_{j} e_{j}^{T} R̃^{(j)} .

Beachte hierzu

( 0 ; ⋮ ; 0 ; l_{j+1} ; ⋮ ; l_{n} ) (0, …, 0, r_{jj}, …, r_{jn}) = ( \begin{matrix}0 & & 0 \\ & l_{j+1}r_{jj} & … & l_{j+1}r_{jn} \\ 0 & ⋮ & ... & ⋮ \\ & l_{n}r_{jj} & … & l_{n}r_{jn} \end{matrix} ) .

Ergebnis: der Gauß-Algorithmus wird beschrieben durch

L^{(j+1)} = P_{j}L^{(j)} + l⃗_{j}e_{j}^{T} , R^{(j+1)} = P_{j}R^{(j)} − l⃗_{j}e_{j}^{T} P_{j}R^{(j)}

mit L^{(1)} = 0 , R^{(1)} = A .

Behauptung: In jedem Schritt gilt ( I 1 + L^{(j)})R^{(j)} = P_{j−1} ⋯ P_{1} A.

(Mit L = I 1 + L^{(n)}, R = R^{(n)}, P = P_{n−1} ⋯ P_{1} ist der Satz damit bewiesen).

Beweis: Induktion nach j:

j = 1: ( I 1 + L^{(1)})R^{(1)} = A gilt offensichtlich.

Schritt j → j + 1:

( I 1 + L^{(j+1)}) R^{(j+1)}
= ( I 1 + P_{j}L^{(j)} + l⃗_{j}e_{j}^{T}) ( I 1 − l⃗_{j}e_{j}^{T}) P_{j}R^{(j)}
= ( I 1 − l⃗_{j}e_{j}^{T} [figure] + P_{j}L^{(j)} − P_{j}L^{(j)}l⃗_{j}e_{j}^{T} + l⃗_{j}e_{j}^{T} [figure] − l⃗_{j}e_{j}^{T} l⃗_{j}e_{j}^{T}) P_{j}R^{(j)}
= ( I 1 + P_{j}L^{(j)})P_{j}R^{(j)}  (beachte L^{(j)}l⃗_{j} = 0 , e_{j}^{T} l⃗_{j} = 0)
= P_{j}( I 1 + L^{(j)}P_{j}) R^{(j)} =^{(∗)} P_{j}( I 1 + L^{(j)}) R^{(j)} = P_{j} (P_{j−1} ⋯ P_{1} A) .

Für (∗) beachte L^{(j)}P_{j} = L^{(j)}, da Rechtsmultiplikation mit P_{j} die Spalten j, …, n von L^{(j)} vertauscht, die alle gleich (nämlich 0) sind.

Q.E.D.

Bemerkung 4.13: L = ( \begin{matrix}1 \\ ∗ & ... \\ ∗ & ∗ & 1 \end{matrix} ) ist immer invertierbar. Damit ist

R = L^{−1}P A genau dann invertierbar, wenn A invertierbar ist.

Bemerkung 4.14: Zu jeder quadratischen Matrix existiert damit eine Zeilenvertauschung P, so daß P A in der angegebenen Form LR faktorisiert werden kann. Bei invertierbarem A und fixiertem P sind die LR-Faktoren eindeutig:

LR = L̃R̃ ⟹ \underbrace{L̃^{−1}L}_{untere Dreiecksmatrix} = \underbrace{R̃R^{−1}}_{obere Dreiecksmatrix} = Diagonalmatrix D .

Mit L = L̃D folgt D = I 1, da die Diagonalen von L und L̃ mit 1 besetzt sind.

Bemerkung 4.15: Es gibt Matrizen, für die keine Faktorisierung A = LR existiert, man braucht i.a. P. Faktorisierbarkeit ohne Zeilenvertauschungen ist z.B. für diagonaldominante Matrizen (Aufgabe 23) oder positiv definite symmetrische Matrizen (Bemerkung 4.32) garantiert.

Bemerkung 4.16: P ist die Gesamtheit aller im Gauß-Algorithmus durchgeführten Zeilenvertauschungen. Man speichert P nicht als Matrix, sondern als “Buchhaltungsvektor” p⃗. Dazu initialisiert man die Spalte p⃗ = (1, 2, …, n)^{T} und wendet die Zeilenvertauschungen auch auf p⃗ an. Zuletzt hat man p⃗ = (p_{1}, …, , p_{n})^{T}. Interpretation: die ursprüngliche Zeile p_{i} ist in die i.te Zeile gewandert. Hiermit ergibt sich für beliebiges b⃗ dann c⃗ = P b⃗ durch

for i := 1 to n do c_{i} := b_{p_{i}} ;

Bemerkung 4.17: Mit det(L) = 1 und leicht berechenbarem

det(R) = Produkt der Diagonalelemente

kann det(A) aus det(P) det(A) = det(R) berechnet werden. Mit det(P) = det(P_{n−1}) ⋯ det(P_{1}) und

det(P_{j}) = \{ \begin{matrix}1 & , falls P_{j} = I 1 \\ −1 & , falls P_{j} = Austausch zweier Zeilen \end{matrix}

braucht nur die Anzahl der nichttrivialen Zeilenvertauschungen im Gauß-Algorithmus mitgezählt zu werden.

Bemerkung 4.18: Die Faktorisierungsdaten P, L, R sind genauso gut wie eine explizite Inverse A^{−1}. Die Lösung von

Ax⃗ = b⃗ ⟹ P Ax⃗ = P b⃗ , d.h., L \underbrace{R x⃗}_{y⃗} = P b⃗

ist durch 2 Rücksubstitutionen

bestimme y⃗ aus Ly⃗ = P b⃗,
dann bestimme x⃗ aus Rx⃗ = y⃗

schnell zu berechnen. Der Aufwand (etwa n^{2} Multiplikationen) entspricht dem der Matrix-Vektor-Multiplikation A^{−1}b⃗ bei explizit vorliegendem A^{−1}.

Merke: Der Gauß-Algorithmus liefert mit ≈ n^{3}/3 Multiplikationen die Zerlegung P A = LR einer n × n-Matrix. Liegen P, L, R vor, dann ist Ax⃗ = b⃗ durch doppelte Rücksubstitution mit etwa n^{2} Multiplikationen schnell zu lösen.

4.7 Bandmatrizen

Definition 4.19:

Eine quadratische Matrix der Form

\underbrace{q}

p \{( \begin{matrix}∗ & ∗ & … & ∗ \\ ∗ & ... & ... & ... & ... \\ ⋮ & ... & ... & ... & ... & ∗ \\ ∗ & ... & ... & ... & ... & ⋮ \\ & ... & ... & ... & ... & ∗ \\ & & ∗ & … & ∗ & ∗ \end{matrix} ) \} q

\overbrace{p}

heißt Bandmatrix mit p unteren (exklusive Diagonale) und q oberen (inklusive Diagonale) Bändern.

Satz 4.20:

Falls für eine Bandmatrix A mit p unteren und q oberen Bändern eine \underline{LR-Zerlegung A = LR ohne Zeilenvertauschungen} existiert, dann hat

\overbrace{p}^{L = p \{( \begin{matrix}1 \\ ∗ & ... \\ ⋮ & ... & ... \\ ∗ & ... & ... & ... \\ & ... & ... & ... & ... \\ & & ∗ & … & ∗ & 1 \end{matrix} )}

bzw.

\underbrace{q}_{R = ( \begin{matrix}∗ & ∗ & … & ∗ \\ & ... & ... & ... & ... \\ & & ... & ... & ... & ∗ \\ & & & ... & ... & ⋮ \\ & & & & ... & ∗ \\ & & & & & ∗ \end{matrix} ) \} q}

p untere bzw. q obere Bänder. Der Gauß-Algorithmus 4.5 liefert die Zerlegung mit weniger als np q Multiplikationen.

Beweis: Gauß-Algorithmus ohne Zeilenvertauschungen für

( \begin{matrix}a_{11} & … & a_{1q} & & & & & & b_{1} \\ a_{21} & … & … & a_{2,q+1} & & & & & b_{2} \\ ⋮ & ... & ... & ... & ... & & & & ⋮ \\ a_{p+1,1} & … & … & … & … & a_{p+1,q+p} & & & b_{p+1} \\ & ... & ... & ... & ... & ... & ... & & ⋮ \\ & & ... & ... & ... & ... & ... & ... & ⋮ \end{matrix} )

1.ter Schritt: Eliminationen sind nur in den p Zeilen 2, …, p + 1 nötig mit je q Multiplikationen pro Zeile. weitere Schritte: analog.

Der Rechenaufwand und die Form von L und R sind hiermit klar.

Q.E.D.

Beispiel 4.21: Sei A = ( \begin{matrix}d_{1} & a_{1} & & 0 \\ c_{1} & ... & ... \\ & ... & ... & a_{n−1} \\ 0 & & c_{n−1} & d_{n} \end{matrix} ). Angenommen, die Faktorisierung A = LR existiert. Ansatz:

A  =  L  R

( \begin{matrix}d_{1} & a_{1} \\ c_{1} & d_{2} & a_{2} \\ & ... & ... & ... \end{matrix} ) = ( \begin{matrix}1 \\ l_{1} & 1 \\ & l_{2} & 1 \\ & & ... & ... \end{matrix} ) ( \begin{matrix}r_{1} & a_{1} \\ & r_{2} & a_{2} \\ & & ... & ... \end{matrix} )

= ( \begin{matrix}r_{1} & a_{1} \\ l_{1}r_{1} & l_{1}a_{1} + r_{2} & a_{2} \\ & l_{2}r_{2} & l_{2}a_{2} + r_{3} & a_{3} \\ & & ... & ... & ... \\ & & & l_{n−1}r_{n−1} & l_{n−1}a_{n−1} + r_{n} \end{matrix} ) .

Vergleich mit A liefert:

d_{1} = r_{1} , d_{i} = l_{i−1}a_{i−1} + r_{i} (i = 2, …, n) , c_{i} = l_{i}r_{i} (i = 1, …, n − 1) .

Ergebnis: Die LR-Daten sind durch die Rekursion

r_{1} := d_{1} ; for i = 2 to n do begin l_{i−1} := c_{i−1}/r_{i−1} ; r_{i} := d_{i} − l_{i−1} a_{i−1} ; end;

mit O(n) Operationen bestimmt. Es können sich Probleme durch r_{i} = 0 ergeben (wenn die Zerlegung A = LR ohne Zeilenvertauschungen nicht existiert).

4.8 Pivotierung

Betrachte den Gauß-Algorithmus 4.5 zu Beginn des j.ten Schrittes:

↓11.12.97

( \begin{matrix}a_{11} & … & … & … & … & … & a_{1,n+1} \\ & ... & ... & ... & ... & ... & ⋮ \\ & & a_{j−1,j−1} & … & … & … & a_{j−1,n+1} \\ & & & a_{jj} & … & a_{jn} & a_{j,n+1} \\ & & & ⋮ & ... & ⋮ & ⋮ \\ & & & a_{nj} & … & a_{nn} & a_{n,n+1} \end{matrix} )

Suche ein Pivotelement aus {a_{jj}, …, a_{nj}}, um es auf die Diagonale zu bringen. Kriterium: minimiere den Einfluß von Rundungsfehlern. Mit a_{pj} als Pivotelement entstehen nach Elimination die neuen Zahlen

a′_{ik} = a_{ik} − \frac{a_{ij}}{a_{pj}} a_{pk} , i = j, …, n , i ≠ p , k = j + 1, …, n + 1

im rechten unteren Block. Differentielle Fehleranalyse von

l := a_{ij}/a_{pj} , t := l a_{pk} , a′_{ik} := a_{ik} − t

liefert

\frac{Δa′_{ik}}{a′_{ik}} = \frac{Δa_{ik}}{a_{ik}} + τ_{a′_{ik}} + \frac{1}{\frac{a_{pj}a_{ik}}{a_{pk}a_{ij}} − 1} (\frac{Δa_{ik}}{a_{ik}} − \frac{Δa_{ij}}{a_{ij}} + \frac{Δa_{pj}}{a_{pj}} − \frac{Δa_{pk}}{a_{pk}} − τ_{l} − τ_{t})

mit

|τ_{a′_{ik}}|, |τ_{l}|, |τ_{t}| = Darstellungsfehler von a′_{ik}, l und t

≤ τ = Maschinengenauigkeit.

Ergebnis: Wähle p so, daß die Konditionszahlen

\frac{1}{\frac{a_{pj}a_{ik}}{a_{pk}a_{ij}} − 1} , i = j, …, n , i ≠ p , k = j + 1, …, n + 1

möglichst klein werden. D.h., bei gegebenem j suche p ∈ {j, j + 1, …, n} so, daß der kleinste Nenner

K(j, q) = min_{k=j+1...n+1} min_{{i=j...n \atop i≠q}} |\frac{a_{qj}a_{ik}}{a_{qk}a_{ij}} − 1 | , q = j, …, n

maximal wird: K(j, p) = max(K(j, j), …, K(j, n)).

Problem hierbei: für gegebenes j braucht man O((n − j)^{3}) Operationen, um K(j, j), …, K(j, n) zu berechnen (und dann in der Suche nach p zu vergleichen). Mit j = 1, …, n − 1 ergibt dies O(n^{4}) Operationen!

Heuristische Maximierung der K(j, p): Es gilt

K(j, p) =  min_{k} min_{i} |\frac{a_{pj}}{a_{pk}} | |\frac{a_{ik}}{a_{ij}} − \frac{a_{pk}}{a_{pj}} |

≥ \underbrace{( min_{k=j+1...n+1} |\frac{a_{pj}}{a_{pk}} |)}  \underbrace{( min_{k=j+1...n+1} min_{{i=j...n \atop i≠p}} |\frac{a_{ik}}{a_{ij}} − \frac{a_{pk}}{a_{pj}} |)}

maximiere  ignoriere p-Abhängigkeit

≥ \overbrace{(\frac{|a_{pj}|}{max_{k=j+1...n+1} |a_{pk}|})} ( min_{q=j...n} min_{k=j+1...n+1} min_{{i=j...n \atop i≠q}} |\frac{a_{ik}}{a_{ij}} − \frac{a_{qk}}{a_{qj}} |) .

Definition 4.22:

Bei “Spaltenpivotierung” wird der Pivotindex p ∈ {j, …, n} im j.ten Schritt der Gauß-Elimination 4.5 so bestimmt, daß

K̃(j, q) = \frac{|a_{qj}|}{max_{k=j+1...n+1} |a_{qk}|}

für q = p maximal wird: K̃(j, p) = max_{q=j..n} K̃(j, q).

( \begin{matrix}∗ & ∗ & ∗ & ∗ & ∗ \\ & ∗ & ∗ & ∗ & ∗ \\ & & a_{jj} & … & a_{j,n+1} \\ & & ⋮ & ... & ⋮ \\ & & a_{nj} & … & a_{n,n+1} \end{matrix} ) → K̃(j, j) = |a_{jj}|/ max(|a_{j,j+1}|, ..., |a_{j,n+1}|) ; ⋮ ; → K̃(j, n) = |a_{nj}|/ max(|a_{n,j+1}|, ..., |a_{n,n+1}|)

Berechne K̃(j, j), …, K̃(j, n) und finde das Maximum.

Bemerkung 4.23: Die Berechnung von K̃(j, j), …, K̃(j, n) mit j = 1, …, n−1 braucht insgesamt etwa n^{2}/2 Multiplikationen und O(n^{3}) Vergleichsoperationen.

Bemerkung 4.24: Bei Totalpivotierung wird im Gauß-Algorithmus

( \begin{matrix}a_{11} & … & … & … & … & … & a_{1,n+1} \\ & ... & ... & ... & ... & ... & ⋮ \\ & & a_{j−1,j−1} & … & … & … & a_{j−1,n+1} \\ & & & a_{jj} & … & a_{jn} & a_{j,n+1} \\ & & & ⋮ & a_{pq} & ⋮ & ⋮ \\ & & & a_{nj} & … & a_{nn} & a_{n,n+1} \end{matrix} )

ein Pivotelement a_{pq} im gesamten unteren Block gesucht und durch Zeilen- und Spaltenvertauschung auf die Diagonale gebracht (eine Spaltenvertauschung entspricht einer Umnumerierung der Unbekannten x_{1}, …, x_{n} im Gleichungssystem). Es ist (heuristisch) so zu bestimmen, daß

K̃(j, p, q) = \frac{|a_{pq}|}{max_{{k=j...n+1 \atop k≠q}} |a_{pk}|} , p, q ∈ \{j, …, n\}

maximiert wird. Mit j = 1, …, n − 1 braucht dies O(n^{3}) Multiplikationen und O(n^{4}) Vergleichsoperationen und ist daher für die Praxis i.a. uninteressant.

Bemerkung 4.25: Statt aufwendiger Pivotierungsstrategien ist die Nachiteration effektiver und schneller. Sei x⃗_{num} eine numerische Lösung von Ax⃗ = b⃗. Die Rundungsfehler lassen sich durch folgenden Schritt erheblich reduzieren:

mit gegebenem  x⃗_{num}
berechne das “Residuum”  r⃗ = Ax⃗_{num} − b⃗ ,
löse  Ay⃗ = r⃗
und korrigiere  x⃗_{besser} = x⃗_{num} − y⃗

Grob gesprochen gilt: liefert der Gleichungslöser die ersten q Dezimalstellen der Lösung, so werden beim Schritt x⃗_{num} → x⃗_{besser} \underline{weitere} q Dezimalstellen relativer Genauigkeit hinzugewonnen. Nach mehreren Nachiterationsschritten sind die Rundungsfehler des Gleichungslösers \underline{praktisch eliminiert}! Die Grenzgenauigkeit ist durch den relativen Fehler der Berechnung von Ax⃗_{num} in r⃗ bestimmt (Details: siehe Kapitel 4.13). Bei vorliegender LR-Faktorisierung kostet jede Nachiteration nur O(n^{2}) Operationen!

Merke: Pivotierung dient zur Verbesserung der numerischen Stabilität der Gauß-Elimination. Spaltenpivotierung braucht einen ähnlichen Aufwand wie die eigentliche Elimination, Totalpivotierung erhöht den Rechenaufwand dramatisch (von O(n^{3}) auf O(n^{4})). In der Praxis kombiniert man Spaltenpivotierung mit der effektiven und schnellen Nachiteration.

4.9 Cholesky-Faktorisierung

ist eine spezielle Form der LR-Zerlegung für symmetrische positiv definite Ma-16.12.97↓

trizen.

Definition 4.26:

Eine symmetrische reelle n × n-Matrix A heißt (symmetrisch) positiv definit (s.p.d.), wenn mit dem üblichen euklidischen Skalarprodukt ⟨ , ⟩ gilt:

⟨x⃗, Ax⃗ ⟩ > 0 ∀x⃗ ∈ ℝ^{n} \ {0} .

Satz 4.27: (Cholesky-Zerlegung)

Jede s.p.d. Matrix A ist in der Form A = LL^{T} mit reellem invertierbarem

Dreiecksfaktor L = ( \begin{matrix}∗ & & 0 \\ ⋮ & ... \\ ∗ & … & ∗ \end{matrix} ) zerlegbar.

Beweis: Induktion nach der Dimension i. i = 1: für 0 < A ∈ ℝ,gilt trivialerweise A = LL^{T} mit L = L^{T} = \sqrt{A} ≠ 0.

Schritt i − 1 → i: zerlege A = ( \begin{matrix}a & a⃗ \\ a^{T} & a_{ii} \end{matrix} ) mit a^{T} = (a_{i1}, …, a_{i,i−1}).

Der linke obere (i−1)×(i−1)-Block a ist nach Aufgabe 26) s.p.d. und hat nach Induktionsvoraussetzung eine Cholesky-Zerlegung a = l l^{T} mit invertierbarem

l = ( \begin{matrix}l_{11} & & 0 \\ ⋮ & ... \\ l_{i−1,1} & … & l_{i−1,i−1} \end{matrix} ) .

Im Ansatz L = ( \begin{matrix}l & 0 \\ l⃗^{T} & l_{ii} \end{matrix} ) mit l⃗^{T} = (l_{i1}, …, l_{i,i−1}) ist nur die unterste Zeile

zu bestimmen. Mit

A = LL^{T} = ( \begin{matrix}l & 0 \\ l⃗^{T} & l_{ii} \end{matrix} ) ( \begin{matrix}l^{T} & l⃗ \\ 0 & l_{ii} \end{matrix} ) = ( \begin{matrix}l l^{T} & l l⃗ \\ (l l⃗)^{T} & l⃗^{T} l⃗ + l_{ii}^{2} \end{matrix} )

gilt:

l⃗ ist aus der Gleichung a⃗ = l l⃗ eindeutig bestimmt, (#)

l_{ii} ist aus der Gleichung a_{ii} = l⃗^{T} l⃗ + l_{ii}^{2} bestimmt. (##)

Nach Aufgabe 26 gilt

a_{ii} > ⟨a⃗, a^{−1}a⃗ ⟩ = ⟨l l⃗, (l l^{T})^{−1}l l⃗⟩ = ⟨l⃗, l⃗⟩ = l⃗^{T} l⃗ ⟹ l_{ii}^{2} = a_{ii} − l⃗^{T} l⃗ > 0 ,

womit l_{ii} reell ist. Wegen l_{ii} ≠ 0 verschwindet kein Diagonalelement, womit L invertierbar ist.

Q.E.D.

Der Cholesky-Faktor L = (l_{ij}) wird durch den folgenden Algorithmus geliefert:

Algorithmus 4.28: (Cholesky-Zerlegung)

for i := 1 to n do begin

for j := 1 to i − 1 do l_{ij} := ( a_{ij} − ∑_{k=1}^{j−1} l_{ik} l_{jk} ) / l_{jj} ;  (∗1∗)

l_{ii} := \sqrt{a_{ii} − ∑_{k=1}^{i−1} l_{ik}^{2}} ;  (∗2∗)
for j := i + 1 to n do l_{ij} := 0 ;  (∗3∗)

end;

Erklärung: In Zeile (∗1∗) wird das Gleichungssystem (#), d.h.,

( a_{i1} ; ⋮ ; a_{i,i−1} ) = ( \begin{matrix}l_{11} & & 0 \\ ⋮ & ... \\ l_{i−1,1} & … & l_{i−1,i−1} \end{matrix} ) ( l_{i1} ; ⋮ ; l_{i,i−1} )

durch Rücksubstitution gelöst. Zeile (∗2∗) bestimmt l_{ii} aus (##):

a_{ii} = l_{i1}^{2} + ⋯ + l_{i,i−1}^{2} + l_{ii}^{2} .

Bemerkung 4.29: Es wird nur auf den unteren Block a_{ij} mit j ≤ i zugegriffen. Man kann A = (a_{ij}) mit L überschreiben:

for j := 1 to i − 1 do a_{ij} := ( a_{ij} − ∑_{k=1}^{j−1} a_{ik} a_{jk} ) / a_{jj} ; (∗1∗) (usw.)

Das explizite Setzen (∗3∗) des oberen Dreiecksanteils wird in der Praxis natürlich vermieden.

Bemerkung 4.30: Der Rechenaufwand ist mit etwa n^{3}/6 Multiplikationen (und n Wurzeln) etwa halb so groß wie bei der Gauß-Elimination/LR-Zerlegung. Der Grund ist die Symmetrie der Matrix.

Bemerkung 4.31: Die Zerlegung A = LL^{T} = L̃L̃^{T} ist bis auf Vorzeichen eindeutig:

\underbrace{L̃^{−1}L̃^{T}}_{untere Dreiecksmatrix} = \underbrace{L̃^{T} (L^{T})^{−1}}_{obere Dreiecksmatrix} = Diagonalmatrix D .

Mit L = L̃D folgt LL^{T} = L̃L̃^{T} = LD^{2}L^{T}, also D^{2} = I 1:

L = L̃ ( \begin{matrix}±1 & & & & 0 \\ & . & . & . \\ 0 & & & & ±1 \end{matrix} ) .

Der Algorithmus 4.28 bestimmt L so, daß die Diagonalelemente l_{ii} positiv sind.

Bemerkung 4.32: Die Cholesky-Zerlegung ist eine Variante der LR-Zerlegung. Mit D = Diagonale von L gilt

A = LL^{T} = \underbrace{(LD^{−1})}_{( \begin{matrix}1 & & 0 \\ ∗ & ... \\ ∗ & ∗ & 1 \end{matrix} )} \underbrace{(DL^{T})}_{( \begin{matrix}∗ & … & ∗ \\ & ... & ⋮ \\ 0 & & ∗ \end{matrix} )} = LR − Zerlegung .

Hiermit ist gezeigt, daß s.p.d. Matrizen eine LR-Zerlegung A = LR ohne Zeilenvertauschungen besitzen. Bei vorliegender Cholesky-Zerlegung ist jedes Gleichungssystem Ax⃗ = LL^{T} x⃗ = b⃗ durch 2 Rücksubstitutionen

bestimme y⃗ aus Ly⃗ = b⃗,
dann bestimme x⃗ aus L^{T} x⃗ = y⃗

schnell gelöst.

Bemerkung 4.33: Ist A eine s.p.d. Bandmatrix, so hat der Cholesky-Faktor L genauso viele untere Bänder wie A (siehe Satz 4.20 und Bemerkung 4.32). Der Rechenaufwand reduziert sich hierdurch erheblich.

Bemerkung 4.34: Die LR-Zerlegung kann ohne Pivotierung unter numerischer Instabilität leiden (vergleiche Aufgabe 25). Die Cholesky-Zerlegung ist stabil (Bemerkung 4.67).

Bemerkung 4.35: A ist genau dann s.p.d., wenn A = B^{T} B mit irgendeiner m × n-Matrix B mit kern(B) = {0}:

A = B^{T} B ⟹ ⟨x⃗, B^{T} Bx⃗ ⟩ = ⟨Bx⃗, Bx⃗ ⟩ > 0 ∀x⃗ ≠ 0 .

Bemerkung 4.36: Typische Anwendung in der Approximationstheorie: “löse” ein überbestimmtes Gleichungssystem Bx⃗ = c⃗ mit einer m×n-Matrix B, m ≥ n (d.h., mehr Gleichungen als Unbekannte). Eine Näherungslösung, die den Fehler ⟨Bx⃗ − c⃗, Bx⃗ − c⃗ ⟩ minimiert, ist durch

\underbrace{B^{T} B}_{A} x⃗ = \underbrace{B^{T} c⃗}_{b⃗}

bestimmt, wobei A = B^{T} B s.p.d. ist, falls kern(B) = {0} gilt.

4.10 Invertierung von Matrizen

Ziel: explizite Invertierung von A. Löse dazu

Ax⃗_{i} = e⃗_{i} , i = 1, …, n  (#)

mit der Standardbasis 4.7 des ℝ^{n}. Dann gilt

A(x⃗_{1}, …, x⃗_{n}) = (Ax⃗_{1}, …, Ax⃗_{n}) = (e⃗_{1}, …, e⃗_{n}) = I 1 ,

d.h., x⃗_{i} ist die i.te Spalte der gesuchten Inversen A^{−1}. Jeder Gleichungslöser kann damit benutzt werden, um die Inverse spaltenweise zu bestimmen. Aufwand beim Gauß-Algorithmus:

• Bestimme eine LR-Zerlegung P A = LR mit ≈ n^{3}/3 Multiplikationen.

• Löse die n Gleichungen Ax⃗_{i} = e⃗_{i} durch Rücksubstitution aus LRx⃗_{i} = P e⃗_{i} mit jeweils ≈ n^{2} Multiplikationen: insgesamt ≈ n^{3} Multiplikationen.

Damit ist die Inverse A^{−1} = (x⃗_{1}, …, x⃗_{n}) mit insgesamt ≈ 4n^{3}/3 Multiplikationen (4-facher Aufwand einer LR-Zerlegung) bestimmt.

Bemerkung 4.37: Bei Matrizen mit wenigen Bändern können LR-Daten in der Laufzeit O(n) berechnet werden (siehe etwa Beispiel 4.21). Zur Bestimmung der n^{2} Komponenten von A^{−1} (i.a. vollbesetzt) braucht man mindestens O(n^{2}) Operationen.

4.11 QR-Faktorisierung

Idee: finde eine Zerlegung A = QR mit orthogonalem Q (d.h., Q^{−1} = Q^{T}) und oberer Dreiecksmatrix R. Damit ist dann Ax⃗ = QRx⃗ = b⃗ äquivalent zu Rx⃗ = Q^{T} b⃗ und mit O(n^{2}) Operationen lösbar.

4.11. QR-FAKTORISIERUNG 67

Satz 4.38: (QR-Faktorisierung)

Für jede relle quadratische Matrix A existiert eine Zerlegung A = QR mit orthogonalem Q und einer oberen Dreiecksmatrix R. Für invertierbares A sind die Faktoren bis auf Vorzeichen eindeutig:

QR = Q̃R̃ ⟹ Q̃ = QD , R̃ = DR mit D = diag(±1, ±1, …) .

Beweis: Zur Existenz: algorithmische Konstruktion 4.44 von Q und R folgt. Zur Eindeutigkeit: mit A ist auch R invertierbar, also

QR = Q̃R̃ ⟺ \underbrace{RR̃^{−1}}_{obere Dreiecks- matrix} = \underbrace{Q^{−1}Q̃}_{orthogonal} =: D .

Orthogonale obere Dreiecksmatrizen sind diagonal:

\underbrace{D^{−1}}_{obere Dreiecks- matrix} (orthogonal) = \underbrace{D^{T}}_{untere Dreiecks- matrix} .

Es folgt D^{−1} = D^{T} = Diagonalmatrix D mit D^{2} = I 1.

Q.E.D.

Definition 4.39:

Die einem v⃗ ∈ ℝ^{n} zugeordnete Householder-Matrix ist

H = \{ \begin{matrix}I 1 − \frac{2}{v^{T} v⃗} v⃗ v^{T} & , falls v⃗ ≠ 0 , \\ I 1 & , falls v⃗ = 0 . \end{matrix}

Bemerkung 4.40: Für Householder-Matrizen gilt:

a) Symmetrie: H = H^{T} ,

b) H^{2} = I 1 − 4 \frac{1}{v^{T} v⃗} v⃗ v^{T} + 4 \frac{1}{v^{T} v⃗} v⃗ v^{T} v⃗ v^{T} \frac{1}{v^{T} v⃗} = I 1 ,

c) Orthogonalität: H^{2} = HH^{T} = I 1 ,

d) die geometrische Interpretation: x⃗ → Hx⃗ ist die Spiegelung an der Ebene durch den Nullpunkt mit dem Normaleneinheitsvektor n⃗ = v⃗/\sqrt{v^{T} v⃗}:

[figure: n⃗; x⃗; Hx⃗; d⃗]

Der Spiegelpunkt ist Hx⃗ = x⃗ − 2 d⃗ , d⃗ = n⃗ ⟨n⃗, x⃗⟩ = v⃗ \begin{matrix}v⃗ & T & x⃗ \\ v⃗ & T & v⃗ \end{matrix} .

Definition 4.41:

Zu j ∈ {1, …, n} und a⃗ = (a_{1}, …, a_{n})^{T} ∈ ℝ^{n} definiere die von a⃗ er- 18.12.97↓

zeugte Householder-Matrix H(j) ; a⃗:

t_{j} := sign(a_{j}) \sqrt{a_{j}^{2} + a_{j+1}^{2} + ⋯ + a_{n}^{2}} ,

v⃗_{j} := (0, …, 0, t_{j} + a_{j}, a_{j+1}, …, a_{n})^{T} ,

H(j) ; a⃗ := \{ \begin{matrix}I 1 − \frac{2}{v_{j}^{T} v⃗_{j}} v⃗_{j} v_{j}^{T} & , falls v⃗_{j} ≠ 0 , \\ I 1 & , falls v⃗_{j} = 0 . \end{matrix}

Vereinbarung: sign(0) = 1.

Lemma 4.42:

Für H = H(j) ; a⃗ gilt: Ha⃗ = (a_{1}, …, a_{j−1}, −t_{j}, 0, …, 0)^{T} und Hb⃗ = b⃗ für

alle Vektoren der Form b⃗ = (b_{1}, …, b_{j−1}, 0, …, 0)^{T}.

Beweis: Mit t_{j}^{2} = a_{j}^{2} + ⋯ + a_{n}^{2} folgt

\frac{2v_{j}^{T} a⃗}{v_{j}^{T} v⃗_{j}} = \frac{2 ( (t_{j} + a_{j}) a_{j} + a_{j+1}^{2} + ⋯ + a_{n}^{2} )}{(t_{j} + a_{j})^{2} + a_{j+1}^{2} + ⋯ + a_{n}^{2}} = \frac{2 (t_{j}a_{j} + t_{j}^{2})}{t_{j}^{2} + 2 t_{j} a_{j} + t_{j}^{2}} = 1

und

Ha⃗ = a⃗ − v⃗_{j} \frac{2v_{j}^{T} a⃗}{v_{j}^{T} v⃗_{j}} = a⃗ − v⃗_{j} = ( a_{1} ; ⋮ ; a_{j−1} ; a_{j} ; a_{j+1} ; ⋮ ; a_{n} ) − ( 0 ; ⋮ ; 0 ; t_{j} + a_{j} ; a_{j+1} ; ⋮ ; a_{n} ) = ( a_{1} ; ⋮ ; a_{j−1} ; −t_{j} ; 0 ; ⋮ ; 0 ) .

Für a⃗ = (a_{1}, …, a_{j−1}, 0, …, 0)^{T} (der einzige Fall mit H = I 1) gilt die Aussage ebenfalls (beachte t_{j} = 0). Für b⃗ = (b_{1}, …, b_{j−1}, 0, …, 0)^{T} gilt v_{j}^{T} b⃗ = 0, also Hb⃗ = b⃗.

Q.E.D.

Bemerkung 4.43: Lemma 4.42 gibt die später benötigten Eigenschaften. Es wurde nur t_{j}^{2} = a_{j}^{2}+⋯+a_{n}^{2} benutzt, womit das Vorzeichen von t_{j} beliebig wählbar ist. Das Vorzeichen in Definition 4.41 dient zur Vermeidung von Auslöschung in v⃗_{j}. Für a_{j} = 0 setze entweder sign(0) = 1 oder sign(0) = −1 (die oft übliche Vereinbarung sign(0) = 0 führt hier zu falschen Ergebnissen).

Konstruktion 4.44:

QR-Zerlegung durch Householder-Transformationen:

Start: A = (a⃗_{1}, …, a⃗_{n}) (Zerlegung nach Spalten).

Schritt 1: Sei H^{(1)} = H(1) ; a⃗_{1} die von a⃗_{1} erzeugte Householder-Matrix:

H^{(1)}A = ( ( −t_{1} ; 0 ; ⋮ ; 0 ) , H^{(1)}a⃗_{2}, …, H^{(1)}a⃗_{n}) .

Schritt 2: Sei H^{(2)} die von H^{(1)}a⃗_{2} erzeugte Householder-Matrix:

H^{(2)}H^{(1)}A = ( ( −t_{1} ; 0 ; ⋮ ; ⋮ ; 0 ) , ( ∗ ; −t_{2} ; 0 ; ⋮ ; 0 ) , H^{(2)}H^{(1)}a⃗_{3}, …, H^{(2)}H^{(1)}a⃗_{n}) .

Schritt j: Sei H^{(j)} die von der j.ten Spalte H^{(j−1)} ⋯ H^{(1)}a⃗_{j} des Schemas erzeugte Householder-Matrix. Durch Multiplikation mit H^{(j)} werden nach Lemma 4.42 in der j.ten Spalte die Elemente unter der Diagonalen eliminiert, währen die ersten j − 1 Spalten nicht verändert werden:

H^{(j)} ⋯ H^{(1)}A =

( ( −t_{1} ; 0 ; ⋮ ; ⋮ ; ⋮ ; 0 ) , …, ( ∗ ; ⋮ ; −t_{j} ; 0 ; ⋮ ; 0 ) , H^{(j)} ⋯ H^{(1)}a⃗_{j+1}, …, H^{(j)} ⋯ H^{(1)}a⃗_{n}).

Ergebnis: Nach n − 1 Schritten ist obere Dreiecksform erreicht:

R = \underbrace{H^{(n−1)} ⋯ H^{(1)}}_{orthogonal} A = ( \begin{matrix}−t_{1} & r_{12} & … & … \\ & −t_{2} & r_{23} & ... \\ & & ... & ... \end{matrix} ) .

Der Q-Faktor ergibt sich durch Q^{T} = H^{(n−1)} ⋯ H^{(1)} bzw. Q = H^{(1)} ⋯ H^{(n−1)}. Dieses Produkt läßt sich durch Ausführung an der Einheitsmatrix speichern.

Transformiere Ax⃗ = b⃗ auf Rx⃗ = Q^{T} b⃗, berechne Q^{T}:
Start:  A  b⃗  I 1
Householder-  H^{(1)} A  H^{(1)} b⃗  H^{(1)} I 1
Transformationen: H^{(2)}H^{(1)} A  H^{(2)}H^{(1)} b⃗  H^{(2)}H^{(1)} I 1
⋮  ⋮  ⋮
Ende:  H^{(n−1)} ⋯ H^{(1)} A H^{(n−1)} ⋯ H^{(1)} b⃗ H^{(n−1)} ⋯ H^{(1)} I 1
R  Q^{T} b⃗  Q^{T}

Damit sind die Daten des zu Ax⃗ = b⃗ äquivalenten oberen Dreieckssystems Rx⃗ = Q^{T} b⃗ berechnet, R und Q^{T} (falls benötigt), liegen explizit vor ^{1}.

Bemerkung 4.45: Die Matrix-Vektor-Multiplikation

H^{(j)}s⃗ = s⃗ − 2 v⃗_{j} \frac{⟨v⃗_{j}, s⃗⟩}{⟨v⃗_{j}, v⃗_{j}⟩}

auf die Spalten s⃗ des Schemas braucht nur ≈ 3 (n − j) Multiplikationen, so daß jede einzelne H-Transformation des Gesamtschemas mit O(n^{2}) Operationen ausführbar ist.

1Man verzichtet jedoch i.a. auf die explizite Berechnung von Q^{T}. Das Speichern der Daten v⃗_{j} der H^{(j)} im frei werdenden unteren Teil des Schemas ist praktisch umsonst. Mit diesen Daten lassen sich Multiplikationen mit Q^{T} schnell durchführen (siehe Bemerkung 4.47).

Algorithmus 4.46: (QR-Zerlegung)

Erklärung der in Tafel 4.1 angegebenen Implementierung: Zunächst wird A um b⃗ zum n×(n+1)-Gesamtschema [A | b⃗] erweitert (Schritt (∗1∗)). Der Householder-Konstruktion folgend wird die der j.ten Spalte des Schemas entsprechende Householder-Matrix H^{(j)} konstruiert. Mit dem in (∗2∗) berechneten Wert t_{j} ist der H^{(j)} = I 1 − 2 v⃗_{j} v_{j}^{T} /⟨v⃗_{j}, v⃗_{j} ⟩ definierende Vektor v⃗_{j} durch

v⃗_{j} = (0, …, 0, t_{j} + a_{jj}, a_{j+1,j}, …, a_{nj})^{T}

gegeben. Der Fall t_{j} = 0 entspricht a_{jj} = … = a_{nj} = 0, in dem mit H^{(j)} = I 1 das Schema unverändert bleibt (Zeile (∗3∗)). Dieser Fall tritt dann und nur dann ein, wenn die Matrix nicht invertierbar ist^{2}. Die Transformation

H^{(j)}s⃗ = s⃗ − e v⃗_{j} , e = d ⟨v⃗_{j}, s⃗ ⟩ , d = \frac{2}{⟨v⃗_{j}, v⃗_{j} ⟩}  (#)

ist für alle Spalten s⃗ des Schemas zu berechnen. Der gemeinsame Faktor d ergibt sich durch

\begin{aligned}d = \frac{2}{⟨v⃗_{j}, v⃗_{j} ⟩} & = & \frac{2}{(t_{j} + a_{jj})^{2} + a_{j+1,j}^{2} + ⋯ + a_{nj}^{2}} \\ & = & \frac{2}{2a_{jj}t_{j} + t_{j}^{2} + a_{jj}^{2} + ⋯ + a_{nj}^{2}} & = & \frac{1}{(t_{j} + a_{jj}) t_{j}} \end{aligned}

und die Skalarprodukte mit s⃗ = (s_{1}, …, s_{n})^{T} mittels

⟨v⃗_{j}, s⃗ ⟩ = (t_{j} + a_{jj}) s_{j} + a_{j+1,j}s_{j+1} + ⋯ + a_{nj}s_{n}.

Daher ist es sinnvoll, den Wert t_{j} + a_{jj} als a_{jj} zu speichern (Zeile (∗4∗)), womit die j.te Spalte die Daten des Vektors

(0, …, 0, a_{jj}, …, a_{nj})^{T} = v⃗_{j}

enthält. Der Faktor d ergibt sich damit in der Form (∗5∗). Man beachte, daß t_{j} dasselbe Vorzeichen wie das ursprüngliche a_{jj} hat, womit t_{j} (t_{j} + a_{jj}) ≠ 0 für t_{j} ≠ 0 gilt. Die ersten j − 1 Spalten des Schemas werden von der Householder-Matrix invariant gelassen, so daß nur die restlichen Spalten k = j, …, n + 1 des Gesamtschemas transformiert zu werden brauchen. Mit der Schleife (∗6∗) werden die Spalten k = j +1, …, n+1 mittels (∗7∗) und (∗8∗) gemäß (#) transformiert.

2Dies ist klar, da die gerade bearbeitete Spalte in den später folgenden Transformationen nicht mehr verändert wird und der Wert −t_{j} somit das j.te Diagonalelement der zuletzt erzeugten oberen Dreiecksmatrix R ist. Die Invertierbarkeit von R (also das Nichtverschwinden der Diagonalelemente) ist aber äquivalent zur Invertierbarkeit von A.

(∗ Erweiterung: ∗)

for i := 1 to n do a_{i,n+1} := b_{i} ;  (∗1∗)

(∗ Elimination: ∗)

for j := 1 to n − 1 do begin

t_{j} := sign(a_{jj}) \sqrt{∑_{i=j}^{n} a_{ij}^{2}} ; (∗ sign(0)=1 !! ∗) (∗2∗)
Falls t_{j} = 0 , so gehe zum (j + 1).ten Schritt ; (∗3∗)
a_{jj} := t_{j} + a_{jj} ;  (∗4∗)
d := 1/(t_{j} a_{jj}) ;  (∗5∗)
for k := j + 1 to n + 1 do begin  (∗6∗)
e := d ( ∑_{i=j}^{n} a_{ij}a_{ik} ) ;  (∗7∗)
for i := j to n do a_{ik} := a_{ik} − e a_{ij} ;  (∗8∗)

end ;

end ;

Tafel 4.1: Transformation von Ax⃗ = b⃗ auf Rx⃗ = Q^{T} b⃗.

Zuletzt müßte noch die j.te Spalte transformiert werden, wobei nach Lemma 4.42 nur das Diagonalelement auf den neuen Wert −t_{j} abzuändern wäre. Da dieses Datum aber im Vektor t⃗ = (t_{1}, t_{2}, …) gespeichert ist, wird hierauf verzichtet.

Nach Ablauf des Schrittes j = n − 1 liegen neben den Werten t_{1}, …, t_{n−1} im Gesamtschema die neuen Daten

( \begin{matrix}a_{11} & … & a_{1n} & a_{1,n+1} \\ ⋮ & ... & ⋮ & ⋮ \\ ⋮ & ... & ⋮ & ⋮ \\ a_{n1} & … & a_{nn} & a_{n,n+1} \end{matrix} ) = ( \begin{matrix}v_{11} & r_{12} & … & r_{1n} & c_{1} \\ ⋮ & ... & ... & ⋮ & ⋮ \\ ⋮ & ... & v_{n−1,n−1} & r_{n−1,n} & ⋮ \\ v_{n1} & … & v_{n,n−1} & r_{nn} & c_{n} \end{matrix} )

vor. Die transformierte rechte Seite c⃗ = Q^{T} b⃗ ist in der (n + 1).ten Spalte gespeichert, der R-Faktor ergibt sich zu

R = ( \begin{matrix}−t_{1} & r_{12} & … & r_{1n} \\ & ... & ... & ⋮ \\ & & −t_{n−1} & r_{n−1,n} \\ & & & r_{nn} \end{matrix} ) .

Die Daten v⃗_{j} = (0, …, 0, v_{jj}, …, v_{nj})^{T}, j = 1, …, n − 1, der Householder-Matrizen H^{(j)} sind im unteren Teil des Schemas gespeichert, aus denen sich Q^{T} bzw. Q bei Bedarf leicht konstruieren lassen (siehe Bemerkung 4.47).

Bemerkung 4.47: Man wird i.a. darauf verzichten, Q^{T} bzw. Q \underline{explizit} zu berechnen. Mit den Daten der Vektoren v⃗_{j} = (0, …, 0, a_{jj}, …, a_{nj})^{T} im unteren Dreiecksanteil des Schemas kann nämlich eine Matrix-Vektor-Multiplikation mit Q^{T} bzw. Q schnell durchgeführt werden. Die Multiplikation x⃗ → Q^{T} x⃗ = H^{(n−1)} ⋯ H^{(1)}x⃗ eines Vektors x⃗ = (x_{i}) ist in Analogie zu den Schritten (∗3∗)– (∗8∗) nach

(∗ Berechne x⃗ := Q^{T} x⃗ mittels der Daten t_{j}, v⃗_{j} : ∗)

for j := 1 to n − 1 do begin

Falls t_{j} = 0 , so gehe zum (j + 1).ten Schritt ;

e := \frac{1}{t_{j} a_{jj}} ( ∑_{i=j}^{n} a_{ij} x_{i} ) ;

for i := j to n do x_{i} := x_{i} − e a_{ij} ;

end ;

im transformierten Vektor x⃗ gespeichert. Mit ≈ n^{2} elementaren Multiplikationen läßt sich Q^{T} x⃗ so praktisch genauso schnell berechnen wie durch die Matrix-Vektor-Multiplikation Q^{T} x⃗ bei explizit vorliegendem Q^{T}. Bei Bandstrukturen ist dies Verfahren sogar erheblich günstiger, da der untere Dreiecksteil von Q^{T} voll besetzt ist, während die untere Dreiecksmatrix der Daten (v⃗_{1}, v⃗_{2}, …) die Bandstruktur von A erbt.

Mit Qx⃗ = H^{(1)} … H^{(n−1)}x⃗ ergibt sich eine Multiplikation mit Q aus den Daten t_{j}, v⃗_{j}, indem man einfach die j-Schleife rückwärts durchläuft:

(∗ Berechne x⃗ := Qx⃗ mittels der Daten t_{j}, v⃗_{j} : ∗)

for j := n − 1 downto 1 do begin

Falls t_{j} = 0 , so gehe zum (j + 1).ten Schritt ;

e := \frac{1}{t_{j} a_{jj}} ( ∑_{i=j}^{n} a_{ij}b_{i} ) ;

for i := j to n do x_{i} := x_{i} − e a_{ij} ;

end ;

Wendet man diese Transformationen auf die Standardbasis e⃗_{1}, …, e⃗_{n} des ℝ^{n} an, so ergeben sich Q^{T} bzw. Q mit einem Aufwand von jeweils ≈ n^{3} elementaren Multiplikationen aus den Daten t_{j}, v⃗_{j}.

Bemerkung 4.48: Die Transformation Ax⃗ = b⃗ ⇒ Rx⃗ = Q^{T} b⃗ kostet ≈ 2 n^{3}/3 Multiplikationen (entspricht dem LR-Aufwand mit Spaltenpivotierung 4.22), wobei die Q^{T} bzw. Q definierenden Daten v⃗_{j} ohne Zusatzkosten geliefert werden. Die explizite Berechnung von Q^{T} bzw. Q (falls benötigt) kostet \underline{zusätzlich} ≈ n^{3} Multiplikationen.

Bemerkung 4.49: Der Aufwand reduziert sich bei Bandmatrizen. Für eine Matrix mit p unteren und q oberen Bändern hat der Q-Faktor p untere und der R-Faktor p + q obere Bänder:

\underbrace{q}_{p \{ ( \begin{matrix}∗ & ∗ & … & ∗ \\ ∗ & ... & ... & ... & ... \\ ⋮ & ... & ... & ... & ... & ∗ \\ ∗ & ... & ... & ... & ... & ⋮ \\ & ... & ... & ... & ... & ∗ \\ & & ∗ & … & ∗ & ∗ \end{matrix} )} = QR =

\underbrace{p + q}_{p \{ ( \begin{matrix}∗ & … & … & … & … & ∗ \\ ∗ & ... & ... & ... & ... & ⋮ \\ ⋮ & ... & ... & ... & ... & ⋮ \\ ∗ & ... & ... & ... & ... & ⋮ \\ & ... & ... & ... & ... & ⋮ \\ & & ∗ & … & ∗ & ∗ \end{matrix} ) ( \begin{matrix}∗ & ∗ & … & ∗ \\ & ... & ... & ... & ... \\ & & ... & ... & ... & ∗ \\ & & & ... & ... & ⋮ \\ & & & & ... & ∗ \\ & & & & & ∗ \end{matrix} ) .}

4.11. QR-FAKTORISIERUNG 75 Dies kann man durch Induktion nach der Schleifenvariable j der Householder-Konstruktion 4.44 beweisen. Die Zwischenschemata H^{(j−1)} ⋯ H^{(1)}A zur Berechnung von R sind von der Form

1  j − 1 j  j + p j + p + 1  p + q  j + p + q − 1  n
↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓
∗ … ∗  ∗ . . . . . . ∗  ∗ . . . . . . ∗  ← 1
... ... ... ... ... ... ... ... ... ... ...
∗  ∗ . . . . . . ∗  ∗ . . . . . . . . . . . . ∗  ← j − 1
∗ . . . . . . ∗  ∗ . . . . . . . . . . . . ∗ 0  ← j
⋮ ... ...  ⋮  ⋮ ... ... ... ... ⋮  ⋮
⋮ ... ...  ⋮  ⋮ ... ... ... ... ⋮ 0
∗ . . . . . . ∗  ∗ . . . . . . . . . . . . ∗ ∗  ← j + p
∗ … ∗  ∗ . . . . . . . . . . . . . . . ∗ ∗  ← j + p + 1
... ... ... ... ... ... ... ... ... ... ...
∗  ... ... ... ... ... ... ... ... ... ∗ ← n − q + 1
∗ ... ... ... ... ... ... ... ... ⋮
... ... ... ... ... ... ... ... ⋮
∗ . . . . . . . . . ∗ ∗ … ∗ ← n

Damit besitzt die nächste Householder-Matrix H^{(j)} die Gestalt

H^{(j)} = ( I 1 ; ∗ … ∗ ; ⋮ ... ⋮ ; ∗ … ∗ ; I 1 ) \begin{matrix}← j \\ ← j + p \end{matrix}

woraus der Induktionsschritt j − 1 → j zum Beweis der Form von H^{(j−1)} ⋯ H^{(1)}A folgt. Für die Zwischenschemata zur Berechnung von Q^{T} gilt:

H^{(j−1)} ⋯ H^{(1)} = \begin{aligned}1 & & p + 1 & & j − 1 & j & & & j + p \\ ↓ & & ↓ & & ↓ & ↓ & & & ↓ \\ ∗ & … & ∗ & & & & & & & & & & & & ← 1 \\ ⋮ & ... & ... & ... \\ ⋮ & ... & ... & ... & ∗ \\ ⋮ & ... & ... & ... & ... & ∗ \\ ⋮ & ... & ... & ... & ... & ... & ... \\ ∗ & … & … & … & ∗ & ∗ & … & ∗ & 0 & & & & & & ← j − 1 \\ ∗ & … & … & … & ∗ & ∗ & … & ∗ & 0 & & & & & & ← j \\ ⋮ & ... & ... & ... & ⋮ & ⋮ & ... & ⋮ & ⋮ \\ ∗ & … & … & … & ∗ & ∗ & … & ∗ & 0 & & & & & & ← j + p − 1 \\ 0 & … & … & … & 0 & 0 & … & 0 & 1 & & & & & & ← j + p \\ & & & & & & & & & 1 & & & & & ← j + p + 1 \\ & & & & & & & & & & . & . & . \\ & & & & & & & & & & & & & 1 & ← n \end{aligned}

Bei Matrizen mit wenigen Bändern reduziert sich die Laufzeit der Transformation Ax⃗ = b⃗ ⇒ Rx⃗ = Q^{T} b⃗ bei geeigneter Implementierung auf O(n).

Bemerkung 4.50: Die QR-Zerlegung mittels Householder-Transformationen ist numerisch sehr stabil (siehe Bemerkung 4.67).

Zusammenfassung: Durch Multiplikation mit orthogonalem Q^{T} kann jede quadratische Matrix A auf obere Dreiecksform R transformiert werden. Der Aufwand zur Umformung Ax⃗ = b⃗ ⇒ Rx⃗ = Q^{T} b⃗ entspricht dem einer LR-Zerlegung mit Spaltenpivotierung.

4.12 Normen und Fehlerkontrolle

Erinnerung an die Analysis:

6.1.98↓

Definition 4.51:

Eine Abbildung || . || : Vektorraum → [0, ∞) mit

a) ||x|| = 0 ⟺ x = 0 ,

b) ||λx|| = |λ| ||x|| , λ skalar,

c) ||x + y|| ≤ ||x|| + ||y|| (Dreiecksungleichung)

heißt Norm.

Beispiel 4.52: Die Standardnormen für x⃗ = (x_{1}, …, x_{n})^{T} ∈ ℝ^{n} bzw. ℂ^{n} sind

||x⃗||_{1} = |x_{1}| + |x_{2}| + ⋯ + |x_{n}|  (Summennorm)
||x⃗||_{2} = \sqrt{|x_{1}|^{2} + |x_{2}|^{2} + ⋯ + |x_{n}|^{2}} (euklidische Norm)
||x⃗||_{p} = p\sqrt{|x_{1}|^{p} + |x_{2}|^{p} + ⋯ + |x_{n}|^{p}}  (p-Norm)
||x⃗||_{∞} = max{ |x_{1}|, |x_{2}|, …, |x_{n}| }  (Maximumsnorm) .

Satz 4.53:

Auf endlich dimensionalen Vektorräumen V sind alle Normen äquivalent: zu || . || und ||| . ||| existieren Konstanten c und C, so daß

||x|| ≤ c |||x||| , |||x||| ≤ C ||x|| ∀ x ∈ V .

Beweis: siehe Analysis.

Definition 4.54:

Die einer Vektornorm || . || auf dem ℝ^{n} bzw. ℂ^{n} zugeordnete Matrixnorm (Operatornorm) ist

||A|| = max_{x⃗≠0} \frac{||Ax⃗||}{||x⃗||} = max_{x⃗≠0} ||A\frac{x⃗}{||x⃗||}|| =^{(y⃗=x⃗/||x⃗||)} max_{||y⃗||=1} ||Ay⃗|| .

Dies ist in der Tat eine Norm. Das Maximum existiert, da {y⃗; ||y⃗|| = 1} kompakt und ||A . || stetig ist.

Bemerkung 4.55: Für Operatornormen gilt

a) Verträglichkeit:  ||Ax⃗|| ≤ ||A|| ||x⃗|| ,
b) Submultiplikativität: ||AB|| ≤ ||A|| ||B||

(||AB|| = max_{x⃗≠0} \frac{||ABx⃗||}{||x⃗||} ≤^{a)} ||A|| max_{x⃗≠0} \frac{||Bx⃗||}{||x⃗||} = ||A|| ||B||) .

Im folgenden \underline{werden nur noch Operatornormen betrachtet}.

Satz 4.56: (Identifizierung einiger Matrixnormen)

Die || . ||_{1}, || . ||_{2} und || . ||_{∞} auf dem ℝ^{n} bzw. ℂ^{n} zugeordneten Matrixnormen für A = (a_{ij}) sind

||A||_{1} = max_{x⃗≠0} \frac{||Ax⃗||_{1}}{||x⃗||_{1}} = max_{j=1...n} ∑_{i=1}^{n} |a_{ij}| (Spaltensummennorm)

||A||_{2} = max_{x⃗≠0} \frac{||Ax⃗||_{2}}{||x⃗||_{2}} = \sqrt{größter Eigenwert von A^{T} A}

(Spektralnorm)

||A||_{∞} = max_{x⃗≠0} \frac{||Ax⃗||_{∞}}{||x⃗||_{∞}} = max_{i=1...n} ∑_{j=1}^{n} |a_{ij}| (Zeilensummennorm) .

Anmerkung: es gilt ||A^{T} ||_{1} = ||A||_{∞}, ||A||_{2} = ||A^{T} ||_{2}.

Beweis: siehe Analysis (Aufgabe 29.a) für ||A||_{1}, Satz 6.3.a) für ||A||_{2}, beachte ||Ax⃗||_{2}^{2}/||x⃗||_{2}^{2} = ⟨Ax⃗, Ax⃗⟩/⟨x⃗, x⃗⟩ = ⟨x⃗, A^{T} Ax⃗⟩/⟨x⃗, x⃗⟩ = Rayleigh-Quotient von A^{T} A).

Definition 4.57:

ρ(A) = max { |λ| ; λ ∈ ℂ ist Eigenwert von A } .

heißt Spektralradius von A.

Satz 4.58:

a) Für jede Operatornorm gilt ||A|| ≥ ρ(A) .

b) Für eine \underline{diagonalisierbare} n × n-Matrix A existiert eine Vektornorm || . ||_{A} auf dem ℂ^{n} mit

||A||_{A} := max_{x⃗≠0} \frac{||Ax⃗||_{A}}{||x⃗||_{A}} = ρ(A) .

c) Für eine \underline{beliebige} n × n-Matrix A existiert für jedes ϵ > 0 eine Vektornorm || . ||_{A,ϵ} auf dem ℂ^{n} mit

ρ(A) ≤ ||A||_{A,ϵ} := max_{x⃗≠0} \frac{||Ax⃗||_{A,ϵ}}{||x⃗||_{A,ϵ}} ≤ ρ(A) + ϵ .

Beweis: a) Mit Ax⃗ = λx⃗ folgt ||A|| ≥ \frac{||Ax⃗||}{||x⃗||} = |λ| .

b) Sei x⃗_{1}, …, x⃗_{n} mit Ax⃗_{i} = λ_{i}x⃗_{i} eine Eigenvektorbasis. Zerlege x⃗ = ∑ x_{i}x⃗_{i} und definiere ||x⃗||_{A} := max_{i} |x_{i}|. Es folgt

max_{x⃗≠0} \frac{||Ax⃗||_{A}}{||x⃗||_{A}} = max_{x⃗≠0} \frac{max_{i} |λ_{i}| |x_{i}|}{max_{i} |x_{i}|} ≤ ρ(A)

und mit a) auch ||A||_{A} ≥ ρ(A).

c) wird analog zu b) per Jordan-Normalform bewiesen (siehe z.B. Satz 6.8.2 in [StB90]).

Q.E.D.

Merke: Der Spektralradius ist die größte untere Schranke aller Operatornormen.

Bemerkung 4.59: Für symmetrische Matrizen ist

||A||_{2} = \sqrt{ρ(A^{T} A)} = \sqrt{ρ(A^{2})} = ρ(A)

die beste (kleinste) aller Operatornormen.

Hilfssatz 4.60:

Gilt in einer Operatornorm || I 1 − A|| < 1, dann ist A invertierbar und

\frac{1}{||A||} ≤ ||A^{−1}|| ≤ \frac{1}{1 − || I 1 − A||} .

Beweis: Für singuläres A ist λ = 0 Eigenwert. Damit hat I 1 −A den Eigenwert μ = 1 im Widerspruch zu |μ| ≤ || I 1 − A|| < 1. Mit

1 = || I 1|| = ||A^{−1}A|| ≤ ||A^{−1}|| ||A||

und

||A^{−1}|| = ||A^{−1}( I 1 − A) + I 1|| ≤ ||A^{−1}|| || I 1 − A|| + || I 1||
⟹ (1 − || I 1 − A||) ||A^{−1}|| ≤ 1

folgt die Behauptung.

Q.E.D.

Definition 4.61:

Einer invertierbaren Matrix wird die Konditionszahl

cond(A) = ||A|| ||A^{−1}||

zugeordnet. Schreibweise: cond_{p}(A) bei Verwendung von p-Normen.

Satz 4.62:

Mit den Eigenwerten λ_{i} von A gilt

cond(A) = \frac{max_{||x⃗||=1} ||Ax⃗||}{min_{||x⃗||=1} ||Ax⃗||} ≥ \frac{max_{i} |λ_{i}|}{min_{i} |λ_{i}|} ≥ 1 .

Für symmetrisches A gilt cond_{2}(A) = max_{i} |λ_{i}|/ min_{i} |λ_{i}| .

Beweis: Es gilt ||A|| = max_{||x⃗||=1} ||Ax⃗|| ≥ max_{i} |λ_{i}| und

||A^{−1}|| = max_{x⃗≠0} \frac{||A^{−1}x⃗||}{||x⃗||} =^{(x⃗=Ay⃗)} max_{y⃗≠0} \frac{||y⃗||}{||Ay⃗||} = \frac{1}{min_{y⃗≠0} \frac{||Ay⃗||}{||y⃗||}}

=^{(x⃗=y⃗/||y⃗||)} \frac{1}{min_{||x⃗||=1} ||Ax⃗||} ≥ \frac{1}{min_{i} |λ_{i}|} .

Für symmetrisches A gilt cond_{2}(A) =^{(4.59)}ρ(A) ρ(A^{−1}) = (max_{i} |λ_{i}|)(max_{i} |λ_{i}^{−1}|).

Q.E.D.

Definition 4.63:

Einem Gleichungssystem Ax⃗ = b⃗ und einem beliebigen Vektor x⃗ wird 8.1.98↓

das Residuum r⃗(x⃗) = Ax⃗ − b⃗ zugeordnet (intuitiv: man setzt x⃗ in die Gleichung ein).

Das Residuum ist ein \underline{leicht berechenbares} Maß, wie gut x⃗ die Lösung A^{−1}b⃗ der Gleichung approximiert: Satz 4.64: (a posteriori Fehlerkontrolle über das Residuum)

Für jedes x⃗ gilt

\frac{||r⃗(x⃗)||}{||A||} ≤

absoluter Fehler

\overbrace{||x⃗ − A^{−1}b⃗||} ≤ ||A^{−1}|| ||r⃗(x⃗)|| ,

\frac{1}{cond(A)} \frac{||r⃗(x⃗)||}{||b⃗||} ≤ \underbrace{\frac{||x⃗ − A^{−1}b⃗||}{||A^{−1}b⃗||}}

relativer Fehler

≤ cond(A) \frac{||r⃗(x⃗)||}{||b⃗||} .

Beweis: Mit

\begin{aligned}r⃗ = A(x⃗ − A^{−1}b⃗) & ⇒ & ||r⃗|| ≤ ||A|| ||x⃗ − A^{−1}b⃗|| \\ x⃗ − A^{−1}b⃗ = A^{−1}r⃗ & ⇒ & ||x⃗ − A^{−1}b⃗|| ≤ ||A^{−1}|| ||r⃗|| \end{aligned}

folgt die Abschätzung des absoluten Fehlers. Mit ||A^{−1}b⃗|| ≤ ||A^{−1}|| ||b⃗|| und ||b⃗|| = ||AA^{−1}b⃗|| ≤ ||A|| ||A^{−1}b⃗|| folgt

\frac{1}{||A^{−1}|| ||b⃗||} ≤ \frac{1}{||A^{−1}b⃗||} ≤ \frac{||A||}{||b⃗||} .

Multiplikation mit den Abschätzungen des absoluten Fehlers liefert die Abschätzungen des relativen Fehlers.

Q.E.D.

Der folgende Satz liefert eine Abschätzung, wie stark sich die Lösung x⃗ = A^{−1}b⃗ eines Gleichungssystems ändert, wenn die Daten A, b⃗ verändert werden (z.B. durch Rundungsfehler ΔA, Δb⃗). Er beschreibt die prinzipielle mathematische Konditionierung der Abbildung (A, b⃗) → A^{−1}b⃗ (unabhängig vom benutzten numerischen Gleichungslöser):

Satz 4.65: (Einfluß der Daten auf die Lösung, “exakte Rechnung, gestörte Daten”)

Es seien x⃗ bzw. x⃗ + Δx⃗ die exakten Lösungen von

Ax⃗ = b⃗  bzw.  (A + ΔA) (x⃗ + Δx⃗) = b⃗ + Δb⃗ .

Für ||A^{−1}|| ||ΔA|| < 1 gilt

\frac{||Δx⃗||}{||x⃗||} ≤ \frac{cond(A)}{1 − cond(A) \frac{||ΔA||}{||A||}} ( \frac{||ΔA||}{||A||} + \frac{||Δb⃗||}{||b⃗||} ) .

Beweis: Δx⃗ löst die Gleichung

(A + ΔA) Δx⃗ = Δb⃗ − ΔA x⃗ .

Hierbei ist A + ΔA = A ( I 1 + A^{−1}ΔA) invertierbar, wenn A invertierbar ist und (Hilfssatz 4.60) ||A^{−1}ΔA|| < 1 gilt. Mit ||A^{−1}ΔA|| ≤ ||A^{−1}|| ||ΔA|| < 1 folgt

Δx⃗ = (A + ΔA)^{−1} (Δb⃗ − ΔA x⃗) = ( I 1 + A^{−1} ΔA)^{−1} A^{−1} (Δb⃗ − ΔA x⃗)

⇒ ||Δx⃗|| ≤^{(4.60)} \frac{||A^{−1}||}{1 − ||A^{−1}ΔA||} (||Δb⃗|| + ||ΔA|| ||x⃗||)

⇒ \frac{||Δx⃗||}{||x⃗||} ≤ \frac{||A^{−1}||||A||}{1 − ||A^{−1}|| ||ΔA||} (\frac{||Δb⃗||}{||A|| ||x⃗||} + \frac{||ΔA||}{||A||}) .

Aus ||b⃗|| = ||Ax⃗|| ≤ ||A|| ||x⃗|| folgt

\frac{||Δx⃗||}{||x⃗||} ≤ \frac{cond(A)}{1 − ||A^{−1}|| ||ΔA||} ( \frac{||Δb⃗||}{||b⃗||} + \frac{||ΔA||}{||A||} ) .

Q.E.D.

Merke: cond(A) ist der Verstärkungsfaktor von Daten-(Eingabe-)fehlern. Ein Gleichungssystem mit cond(A) ≫ 1 ist schlecht konditioniert (hängt empfindlich von den Daten ab).

Beispiel 4.66: Die n × n Hilbert-Matrizen A = (a_{ij}) = (\frac{1}{i + j − 1}) sind extrem schlecht konditioniert:

\begin{matrix}n & ||A||_{2} & ||A^{−1}||_{2} & cond_{2}(A) \\ 5 & 1.56... & 3.04... × 10^{5} & 4.76... × 10^{5} \\ 10 & 1.75... & 9.14... × 10^{12} & 1.60... × 10^{13} \\ 20 & 1.90... & 1.28... × 10^{28} & 2.45... × 10^{28} \\ 100 & 2.18... & 1.73... × 10^{150} & 3.77... × 10^{150} \\ 200 & 2.27... & 1.57... × 10^{303} & 3.57... × 10^{303} \end{matrix}

Ein solches System mit 20 Unbekannten kann numerisch kaum noch gelöst werden!

Bemerkung 4.67: Die bisherigen Gleichungslöser beruhen auf Transformationen

Ax⃗ = b⃗ ⇒ A′x⃗ = b⃗′ ⇒ A′′x⃗ = b⃗′′ ⇒ … ⇒ Rx⃗ = c⃗ ,

wobei die Daten R,c⃗ des resultierenden gestaffelten Gleichungssystems mit Rundungsfehlern behaftet sind. Ein solcher Algorithmus ist numerisch nicht stabil, wenn die Konditionszahlen

cond(A) , cond(A′) , …, cond(R)

ansteigen können.

Dies ist z.B. beim \underline{Gauß-Algorithmus ohne Pivotierung} der Fall (Aufgabe 31.a).

Bei der \underline{QR-Zerlegung} A = QR ist das erzeugte gestaffelte System genauso konditioniert wie das Ausgangssystem (Aufgabe 31.c):

cond_{2}(R) = cond_{2}(Q^{T} A) = cond_{2}(A) .

Bei der \underline{Cholesky-Zerlegung} A = LL^{T} gilt (Aufgabe 31.b)

cond_{2}(L) = cond_{2}(L^{T}) = \sqrt{cond_{2}(A)} ≤ cond_{2}(A) ,

so daß die resultierenden gestaffelten Systeme sogar besser konditioniert sind.

4.13 Nachiteration

Betrachte die Nachiteration aus Bemerkung 4.25 zur Verbesserung einer Approximation x⃗_{num} von A^{−1}b⃗:

mit gegebenem  x⃗_{num}
berechne das Residuum r⃗ = Ax⃗_{num} − b⃗ ,
löse  Ay⃗ = r⃗
und korrigiere  x⃗_{besser} = x⃗_{num} − y⃗ .

Ohne weitere Rundungsfehler wäre x⃗_{besser} exakt:

x⃗_{besser} = x⃗_{num} − A^{−1}(Ax⃗_{num} − b⃗) = A^{−1}b⃗ ,

womit der verbleibende Fehler nur von den Rundungsfehlern in der Berechnung vom r⃗ und y⃗ erzeugt wird.

Diese Beobachtung liefert sofort eine (etwas pauschale) Erklärung, warum x⃗_{besser} eine bessere Approximation der Lösung als x⃗_{num} liefert: Der Gleichungslöser sei in der Lage, unabhängig von der Größe der rechten Seite die erste Dezimalstelle der Lösung (relative Genauigkeit!) exakt zu liefern. Die Mantissen/Exponenten-Darstellungen der i.ten Vektorkomponenten seien

\begin{aligned}(A^{−1}b⃗)_{i} & = & 0. & a_{1} & a_{2} & a_{3} & a_{4} & ... × 10^{p_{i}} \\ (x⃗_{num})_{i} & = & 0. & a_{1} & b_{2} & b_{3} & b_{4} & ... × 10^{p_{i}} \\ (y⃗)_{i} & = & 0. & 0 & c_{2} & c_{3} & c_{4} & ... × 10^{p_{i}} \\ (y⃗_{num})_{i} & = & 0. & 0 & c_{2} & d_{3} & d_{4} & ... × 10^{p_{i}} \end{aligned}

wobei y⃗_{num} die numerische Lösung von Ay⃗ = r⃗ sei, deren erste Mantissenziffern mit denen in y⃗ = A^{−1}r⃗ übereinstimmen (die Rundungsfehler in r⃗ seien vernachlässigt). Wegen A^{−1}b⃗ = x⃗_{num} − y⃗ gilt a_{2} = b_{2} − c_{2}, also

\begin{aligned}(x⃗_{besser})_{i} & = & (x⃗_{num} − y_{num})_{i} & = & 0. a_{1} (b_{2} − c_{2}) (b_{3} − d_{3}) ... × 10^{p_{i}} \\ & & & = & 0. a_{1} a_{2} (b_{3} − d_{3}) ... × 10^{p_{i}} . \end{aligned}

Durch den Nachiterationsschritt wurde damit eine weitere Dezimalstelle Genauigkeit hinzugewonnen.

Allgemein gilt: liefert der Gleichungslöser die ersten q Dezimalstellen der Lösung, so werden beim Schritt x⃗_{num} → x⃗_{besser} \underline{weitere} q Dezimalstellen relativer Genauigkeit hinzugewonnen. Nach mehreren Nachiterationsschritten sind die Rundungsfehler des Gleichungslösers \underline{praktisch eliminiert}! Die Grenzgenauigkeit ist damit nur durch den (bisher ignorierten) relativen Fehler der Berechnung von Ax⃗_{num} in r⃗ bestimmt.

Diese grobe Betrachtung soll nun genauer geprüft werden. Die fehlerbehaftete Nachiteration ist 84 KAPITEL 4. LINEARE GLEICHUNGSSYSTEME

zu  x⃗_{num}
berechne  r⃗_{num} = Ax⃗_{num} − b⃗ + Δr⃗ ,
berechne  y⃗_{num} = A^{−1}r⃗_{num} + Δy⃗
und korrigiere x⃗_{besser} = x⃗_{num} − y⃗_{num} ,

also

x⃗_{besser} = x_{num} − A^{−1}(Ax⃗_{num} − b⃗ + Δr⃗) − Δy⃗ = A^{−1}b⃗ − A^{−1}Δr⃗ − Δy⃗ , d.h.,

||x⃗_{besser} − A^{−1}b⃗|| ≤ ||A^{−1}|| ||Δr⃗|| + ||Δy⃗|| .  (#)

Realistische Annahmen:

a) Unter Vernachlässigung von Darstellungsfehlern sei die \underline{absolute} Genauig-

keit der Residuenberechnung

||Δr⃗|| = ||Δ(Ax⃗_{num})|| ≤ τ_{res} ||Ax⃗_{num}|| ≤ τ_{res} ||A|| ||x⃗_{num}|| , wobei

τ_{res} ≥ \frac{||Δ(Ax⃗_{num})||}{||Ax⃗_{num}||}

der \underline{relative} Fehler der Matrix-Vektor-Multiplikation sei.

b) Der verwendete Gleichungslöser liefert die Lösung von Ay⃗ = r⃗ bis auf eine

\underline{relative} Genauigkeit τ_{A}:

\frac{||Δy⃗||}{||A^{−1}r⃗||} ≤ τ_{A} (unabhängig von r⃗) .

c) Zu erwarten ist 1 ≫ τ_{A} ≫ τ_{res} ≫ τ = Maschinengenauigkeit. Mit

\begin{aligned}||Δy⃗|| ≤ τ_{A} ||A^{−1}r⃗_{num}|| & = & τ_{A} ||A^{−1}(Ax⃗_{num} − b⃗ + Δr⃗)|| \\ & ≤ & τ_{A} ||x⃗_{num} − A^{−1}b⃗|| + τ_{A} ||A^{−1}|| ||Δr⃗|| \end{aligned}

und

||A^{−1}|| ||Δr⃗|| ≤ τ_{res} cond(A) ||x⃗_{num}||

liefert (#)

\frac{||x⃗_{besser} − A^{−1}b⃗||}{||A^{−1}b⃗||} ≤ τ_{A} \frac{||x⃗_{num} − A^{−1}b⃗||}{||A^{−1}b⃗||} + τ_{res} (1 + τ_{A}) cond(A) \frac{||x⃗_{num}||}{||A^{−1}b⃗||} .

Interpretation: bis auf den durch τ_{res} gegebenen Fehler wurde die Anzahl korrekter Dezimalstellen durch x⃗_{num} → x⃗_{besser} um log_{10}(1/τ_{A}) Stellen erhöht. Also: die führenden Stellen, die der verwendete Gleichungslöser exakt liefern kann, werden im Nachiterationsschritt als \underline{zusätzliche} Stellen gewonnen. Wurde x⃗_{num} selbst durch den Gleichungslöser bestimmt, so gilt

\frac{||x⃗_{num} − A^{−1}b⃗||}{||A^{−1}b⃗||} ≤ τ_{A} , \frac{||x⃗_{num}||}{||A^{−1}b⃗||} ≤ 1 + τ_{A}

und es folgt

\frac{||x⃗_{besser} − A^{−1}b⃗||}{||A^{−1}b⃗||} ≤ τ_{A}^{2} + τ_{res} (1 + τ_{A})^{2} cond(A) .

Nach mehreren Nachiterationen ist der Fehler τ_{A} des Gleichungslösers praktisch verschwunden, bei τ_{A} ≪ 1 ist die \underline{erreichbare Grenzgenauigkeit τ_{res} cond(A).} Selbst ein ungenauer Gleichungslöser, der nur die erste Dezimalstelle exakt liefert (d.h., τ_{A} ≈ 1/10), kann durch Nachiteration eingesetzt werden, um die Lösung bis auf die Grenzgenauigkeit zu bestimmen.

Zur Implementierung der Nachiteration:

Stellt der verwendete Compiler mehrere Genauigkeiten

“einfach” (SINGLEPRECISION) und “erhöht” (DOUBLEPRECISION)

zur Verfügung, so sollte der wesentliche Rechenaufwand der Gleichungslösung, also die Berechnung von Zerlegungsdaten der Matrix, in einfacher Genauigkeit durchgeführt werden, da die Rechenoperationen schneller sind als bei erhöhter Genauigkeit. In der Residuenberechnung der Nachiteration sollte erhöhte Genauigkeit verwendet werden.

Benutze zur Lösung von Ax⃗ = b⃗ die Variablen

A_{D} = A , b⃗_{D} = b⃗ , x⃗_{D} , r⃗_{D} (DOUBLEPRECISION)

und

A_{S} = A , b⃗_{S} = b⃗ , y⃗_{S} , r⃗_{S} (SINGLEPRECISION) .

Start: löse zunächst A_{S}y⃗_{S} = b⃗_{S}, wobei eine Zerlegung (z.B. P A_{S} = L_{S}R_{S} in einfacher Genauigkeit) erzeugt wird. Man erhält so eine erste Approximation x⃗_{D} := y⃗_{S} der Lösung. Nachiteration: berechne das Residuum r⃗_{D} := A_{D}x⃗_{D}−b⃗_{D} in erhöhter Genauigkeit und speichere es in einfacher Genauigkeit ab: r⃗_{S} := r⃗_{D}. Hierbei gehen in der Mantisse von r⃗ einige Stellen verloren, die im Exponenten gespeicherte \underline{Größe} und die ersten Mantissenziffern bleiben aber erhalten. Berechne unter Verwendung der vorhandenen Zerlegungsdaten in einfacher Genauigkeit die Korrektur y⃗_{S} aus A_{S}y⃗_{S} = r⃗_{S} und verbessere x⃗_{D}:

x⃗_{D} := x⃗_{D} − y⃗_{S} .

Da y⃗_{S} klein ist im Vergleich zu x⃗_{D}, machen sich die Ungenauigkeiten in y⃗_{S} nur in den hinteren Mantissenstellen von x⃗_{D} bemerkbar. Führe die Nachiteration so lange durch, bis ||r⃗_{D} || nicht mehr kleiner wird.

Ergebnis: bei nicht zu schlecht konditionierten Marizen wird sich mit den Maschinengenauigkeiten τ_{S} (einfache Genauigkeit) und τ_{D} (erhöhte Genauigkeit) in der Regel die Situation

τ_{D} ≪ τ_{res} ≪ τ_{S} ≪ τ_{A} ≪ 1

einstellen, so daß sich trotz schneller Gleichungslösung in einfacher Genauigkeit für die Lösung x⃗_{D} eine Grenzgenauigkeit cond(A) τ_{res} erreichen läßt, die unterhalb τ_{S} liegen kann.

4.14 Iterative Verfahren

Der Banachsche Fixpunktsatz 3.3 gilt auf dem ℝ^{n} bzw. ℂ^{n}, wenn man Beträge 13.1.97↓

durch (beliebige) Normen ersetzt:

Satz 4.68: (Banachscher Fixpunktsatz (BFS))

Sei Ω eine abgeschlossene Teilmenge eines vollständigen normierten Raumes. Für Φ : Ω → Ω existiere k ∈ [0, 1) mit ||Φ(x) − Φ(y)|| ≤ k ||x − y|| ∀x, y ∈ Ω. Dann konvergiert x^{(i+1)} = Φ(x^{(i)}) für jedes x^{(0)} ∈ Ω gegen den eindeutigen Fixpunkt x^{∗} = Φ(x^{∗}) ∈ Ω, es gilt

||x^{(i)} − x^{∗}|| ≤ \frac{k}{1 − k} ||x^{(i)} − x^{(i−1)}|| ≤ \frac{k^{i}}{1 − k} ||x^{(1)} − x^{(0)}|| .

Beweis: wortwörtlich wie in Satz 3.3, wenn man | . | durch || . || ersetzt.

Eine \underline{affin-lineare} Abbildung Φ⃗(x⃗) = Bx⃗ + c⃗ auf dem ℝ^{n} ist genau dann eine Kontraktion bzgl. || . ||, wenn ||B|| < 1 gilt:

||Φ⃗(x⃗) − Φ⃗(y⃗)|| = ||B(x⃗ − y⃗)|| ≤ ||B|| ||x⃗ − y⃗|| .

Es besteht die Freiheit, irgendeine Norm zu wählen (Konvergenz in einer Norm bedeutet Konvergenz in allen Normen, da auf dem ℝ^{n} alle Normen äquivalent sind). Damit entscheidet der Spektralradius ρ(B) über die Konvergenz einer Banach-Iteration:

Satz 4.69:

Eine Iteration der Form x^{(i+1)} = Bx^{(i)} + c⃗ auf dem ℝ^{n} mit ρ(B) < 1 konvergiert für alle Startvektoren x^{(0)} ∈ ℝ^{n}. Der Grenzwert ist unabhängig vom Startvektor.

Beweis: Betrachte eine Vektornorm aus Satz 4.58.c) mit 0 < ϵ < 1 − ρ(B), so daß

k := ||B||_{B,ϵ} ≤ ρ(B) + ϵ < 1

gilt. Wende den BFS mit Ω = ℝ^{n} an.

Q.E.D.

Bemerkung 4.70: Für ρ(B) > 1 wird die Folge i.a. divergieren. Sei Be⃗ = λe⃗ mit |λ| > 1. Angenommen, es existiert ein Grenzwert x^{∗} = Bx^{∗} + c⃗ für einen Startvektor. Der neue Startvektor x^{(0)} = x^{∗} + e⃗ führt auf die divergierende Folge x^{(i)} = x^{∗} + λ^{i−1} e⃗.

Damit ergibt sich die folgende Strategie zur Lösung von Ax⃗ = b⃗:

finde ein äquivalentes Fixpunktproblem x⃗ = Φ⃗(x⃗) = Bx⃗ + c⃗ mit möglichst kleinem ||B|| (genauer: mit möglichst kleinem ρ(B)).

Ansatz: betrachte additive Zerlegungen

A = W + R = “wesentlicher Teil” + (kleiner) “Rest” .

Dann gilt

Ax⃗ = b⃗ ⟺ W x⃗ = −Rx⃗ + b⃗ ⟺ x⃗ = \underbrace{−W^{−1}R x⃗ + W^{−1}b⃗}_{Φ⃗(x⃗)} =: B x⃗ + c⃗ .

Hierbei sollte

• W schnell invertierbar (typisch: W = Dreiecksmatrix)

• und R im Sinne von ||W^{−1}R|| < 1 hinreichend klein sein.

Satz 4.71:

Sei A = W + R mit invertierbarem W und k := ||W^{−1}R|| < 1. Dann konvergiert die durch

W x^{(i+1)} = −R x^{(i)} + b⃗

definierte Folge für jedes x^{(0)} gegen A^{−1}b⃗. Für x^{(0)} = 0 und b⃗ ≠ 0 gilt

\frac{||x^{(i)} − A^{−1}b⃗||}{||A^{−1}b⃗||} ≤ k^{i} (Kontrolle des \underline{relativen} Fehlers).

Beweis: Mit Hilfssatz 4.60 ist A = W ( I 1 + W^{−1}R) automatisch invertierbar. Die Banach-Iteration

x^{(i+1)} = Φ⃗(x^{(i)}) = −W^{−1}R x^{(i)} + W^{−1}b⃗

konvergiert mit der Kontraktionskonstanten k < 1 gegen einen Fixpunkt x^{∗} = −W^{−1}R x^{∗} + W^{−1}b⃗, also (W + R) x^{∗} = b⃗, d.h., x^{∗} = A^{−1}b⃗. Mit

x^{(i)} − x^{∗} = (−W^{−1}R) (x^{(i−1)} − x^{∗}) = … = (−W^{−1}R)^{i} (x^{(0)} − x^{∗})

folgt ||x^{(i)} − x^{∗}|| ≤ ||(W^{−1}R)^{i}|| ||x^{(0)} − x^{∗}|| ≤^{(4.55.b)} ||W^{−1}R||^{i} ||x^{(0)} − x^{∗}|| .

Q.E.D.

Beispiel 4.72: Für

\begin{aligned}2  x_{1} & + & 0.001 x_{2} & + & 0.002 x_{3} & = & b_{1} \\ 0.002 x_{1} & + & 3  x_{2} & + & 0.001 x_{3} & = & b_{2} \\ 0.001 x_{1} & + & 0.002 x_{2} & + & 4  x_{3} & = & b_{3} \end{aligned}

bietet sich eine Fixpunktformulierung W x⃗ = b⃗ − R x⃗ mit “kleinem Rest” R an:

\begin{aligned}2 x_{1} & = & b_{1} & − & 0.001 x_{2} & − & 0.002 x_{3} \\ 3 x_{2} & = & b_{2} & − & 0.002 x_{1} & − & 0.001 x_{3} \\ 4 x_{3} & = & b_{3} & − & 0.001 x_{1} & − & 0.002 x_{2} . \end{aligned}

Definition 4.73:

Eine n × n-Matrix A = (a_{ij}) mit |a_{ii}| > ∑_{{j=1 \atop j≠i}}^{n} |a_{ij}| , i = 1, …, n, heißt

(stark) diagonaldominant.

Bemerkung 4.74: Zerlege A = (a_{ij}) = l + D + r in die Diagonale

D = diag(a_{11}, …, a_{nn})

und die streng unteren bzw. oberen Dreiecksanteile l bzw. r:

l = ( \begin{matrix}0 & & & 0 \\ a_{21} & ... \\ ⋮ & ... & ... \\ a_{n1} & … & a_{n,n−1} & 0 \end{matrix} ) , r = ( \begin{matrix}0 & a_{12} & … & a_{1n} \\ & ... & ... & ⋮ \\ & & ... & a_{n−1,n} \\ 0 & & & 0 \end{matrix} ) .

Mit

D^{−1}(l + r) = ( \begin{matrix}0 & \frac{a_{12}}{a_{11}} & … & \frac{a_{1n}}{a_{11}} \\ \frac{a_{21}}{a_{22}} & ... & ... & ⋮ \\ ⋮ & ... & ... & \frac{a_{n−1,n}}{a_{n−1,n−1}} \\ \frac{a_{n1}}{a_{nn}} & … & \frac{a_{n,n−1}}{a_{nn}} & 0 \end{matrix} )

gilt

A ist diagonaldominant ⇔ ||D^{−1}(l + r)||_{∞} = max_{i=1..n} \frac{1}{|a_{ii}|} ∑_{{j=1 \atop j≠i}}^{n} |a_{ij}| < 1 .

Satz 4.75: (Gesamt- und Einzelschrittverfahren)

Die \underline{diagonaldominante} Matrix A = l+D+r sei gemäß 4.74 zerlegt. Dabei sind A, D und D + l invertierbar, und es gilt

||(D + l)^{−1}r||_{∞} ≤ ||D^{−1}(l + r)||_{∞} < 1 .

Nach Satz 4.71 mit W = D, R = l + r bzw. W = D + l, R = r konvergieren die durch

D x^{(i+1)} = − (l + r) x^{(i)} + b⃗ (Jacobi- oder Gesamtschrittverfahren)

bzw.

(D + l) x^{(i+1)} = − r x^{(i)} + b⃗ (Gauß-Seidel- oder Einzelschrittverfahren) ,

gegebenen Banach-Iterationen mit den Kontraktionskonstanten

k_{Einzel} = ||(D + l)^{−1}r||_{∞} ≤ k_{Gesamt} = ||D^{−1}(l + r)||_{∞} < 1

gegen A^{−1}b⃗.

Beweis: Da kein Diagonalelement verschwindet, sind D und D+l invertierbar, A^{−1} existiert nach Aufgabe 23. Nach 4.74 gilt k := ||D^{−1}(l + r)||_{∞} < 1, womit nur noch ||(D + l)^{−1}r||_{∞} ≤ k zu zeigen ist. Nehme dazu ein beliebiges x⃗ mit ||x⃗||_{∞} = max_{i} |x_{i}| = 1 und setze y⃗ = y⃗(x⃗) = (D + l)^{−1}r x⃗, also Dy⃗ = −ly⃗ + r x⃗. Rücksubstitution liefert

\begin{aligned}y_{1} & = & \frac{1}{a_{11}} ∑_{j=2}^{n} a_{1j} x_{j} , \\ y_{i} & = & \frac{1}{a_{ii}} ( − ∑_{j=1}^{i−1} a_{ij} y_{j} + ∑_{j=i+1}^{n} a_{ij} x_{j} ) , i = 2, …, n . \end{aligned}

Induktiv folgt |y_{1}|, …, |y_{i}| ≤ k:

\underline{i = 1} :  |y_{1}| ≤ \frac{1}{|a_{11}|} ∑_{j=2}^{n} |a_{1j}| = 1. Zeilensumme von D^{−1}(l + r) ≤ k ,

\underline{i − 1 → i} : |y_{i}| ≤ \frac{1}{|a_{ii}|} ( ∑_{j=1}^{i−1} |a_{ij}| k + ∑_{j=i+1}^{n} |a_{ij}| )

≤^{(k<1)} \frac{1}{|a_{ii}|} ∑_{{j=1 \atop j≠i}}^{n} |a_{ij}| = j. Zeilensumme von D^{−1}(l + r) ≤ k .

Es folgt ||y⃗||_{∞} = max_{i} |y_{i}| ≤ k und damit

||(D + l)^{−1}r||_{∞} = max_{||x⃗||_{∞}=1} ||(D + l)^{−1}r x⃗||_{∞} = max_{||x⃗||_{∞}=1} ||y⃗(x⃗)||_{∞} ≤ k .

Q.E.D.

Bemerkung 4.76: Der Aufwand des Schrittes x^{(i)} = (x_{1}^{(i)}, …, x_{n}^{(i)})^{T} → x^{(i+1)} = (x_{1}^{(i+1)}, …, x_{n}^{(i+1)})^{T} (Matrix-Vektor-Multiplikation und Rücksubsti-15.1.98↓

tution) ist in beiden Verfahren gleich, nämlich n^{2} Multiplikationen bei vollbesetzten Matrizen:

for k := 1 to n do (∗ Gesamtschritt: D x^{(i+1)} = b⃗ − l x^{(i)} − r x^{(i)} ∗)

x_{k}^{(i+1)} := \frac{1}{a_{kk}} ( b_{k} − ∑_{j=1}^{i−1} a_{kj} x_{j}^{(i)} − ∑_{j=i+1}^{n} a_{kj} x_{j}^{(i)} ) ;

bzw.

for k := 1 to n do (∗ Einzelschritt: D x^{(i+1)} = b⃗ − l x^{(i+1)} − r x^{(i)} ∗)

x_{k}^{(i+1)} := \frac{1}{a_{kk}} ( b_{k} − ∑_{j=1}^{i−1} a_{kj} x_{j}^{(i+1)} − ∑_{j=i+1}^{n} a_{kj} x_{j}^{(i)} ) ;

Also:

Gesamtaufwand (Multiplikatonen) = n^{2} × Anzahl der benötigten Schritte.

Falls die Kontraktionskonstanten nicht zu dicht bei 1 liegen, reichen weniger als n Schritte, um die Lösung auf eine gewünschte Genauigkeit zu bestimmen. Hiermit können iterative Verfahren (abhängig von der Kontraktionskonstanten) \underline{schneller als direkte Verfahren} sein, wobei das Einzelschrittverfahren schneller als das Gesamtschrittverfahren ist (letzteres ist dafür leichter parallelisierbar).

Bei \underline{dünnbesetzten} Matrizen ist zusätzlich auch jeder Iterationsschritt schnell durchführbar: die Multiplikation bzw. Rücksubstitution mit den dünnbesetzten Dreiecksanteilen braucht nur die nichttrivialen Einträge zu berücksichtigen. \underline{Hierbei ist egal, wie diese in der Matrix verteilt sind}. Die direkten Verfahren (LR-, Cholesky-, QR-Zerlegung) sind nur dann schnell, wenn die nichttrivialen Matrixkomponenten sich zu \underline{wenigen Bändern um die Diagonale herum} formieren.

Bemerkung 4.77: Die Konvergenz der Verfahren ist auch dann garantiert, wenn die (starke) Diagonaldominanz |a_{ii}| > ∑_{j≠i} |a_{ij}| durch “schwache” Diago-

naldominanz |a_{ii}| ≥ ∑_{j≠i} |a_{ij}| (plus Zusatzbedingungen) ersetzt wird. Zu Details

siehe z.B. [Scw93].

Bemerkung 4.78: Als Banach-Iterationen sind die Verfahren selbstkorrigierend. Die prinzipiell erreichbare Genauigkeit ist i.a. besser als die der direkten Verfahren (LR- bzw. QR-Zerlegung), eine Nachiteration erübrigt sich in der Regel.

Bemerkung 4.79: Leider sind in der Praxis schwach diagonaldominante Matrizen typisch, für die das Einzelschrittverfahren (D + l) x^{(i+1)} = −r x^{(i)} + b⃗ zu dicht bei 1 liegenden Kontraktionskonstanten führt. Man muß das Verfahren daher beschleunigen, um zu praktikablen Laufzeiten zu gelangen. Mit der Zerlegung

A = \underbrace{l + \frac{1}{ω} D}_{W} + \underbrace{(1 − \frac{1}{ω} )D + r}_{R}

führt man z.B.

(\frac{1}{ω} D + l) x^{(i+1)} = ((\frac{1}{ω} − 1) D − r) x^{(i)} + b⃗

durch (SOR-Verfahren). Hierbei wird der Relaxationsparameter ω ∈ (0, 2) so gewählt, daß der Spektralradius der Iterationsmatrix

ρ ((\frac{1}{ω} D + l)^{−1} ((1 − \frac{1}{ω} )D + r))

minimal wird (ω = 1 ist das Einzelschrittverfahren). Für gewisse Klassen von Matrizen (Stichwort: “konsistente Ordnung”) kann der optimale Parameter ω, für den der obige Spektralradius minimal wird, analytisch bestimmt und formelmäßig angegeben werden. Zur Theorie siehe z.B. [Scw93] oder [Oev96]. Hiermit können große dünnbesetzte (schwach) diagonaldominante Systeme (typisch bei der Numerik von Differentialgleichungen) effizient gelöst werden.

Bemerkung 4.80: Weitere (noch schnellere) iterative Verfahren für große dünnbesetzte (s.p.d.) Systeme sind:

ADI  siehe z.B. [StB90, Kapitel 8.6],
cg  (Verfahren konjugierter Gradienten), siehe z.B. [Scw93],
multigrid (Mehrgitter-Verfahren), siehe z.B. [StB90, Kapitel 8.9].

Siehe auch: W. Hackbusch, Iterative Lösung großer schwachbesetzter Gleichungssysteme, Teubner 1991.

Nichtlineare Gleichungssysteme

Aufgabe: löse ein nichtlineares Gleichungssystem f⃗(x⃗) = 0 (mit f⃗ : ℝ^{n} → ℝ^{n}) in n Unbekannten. Die grundsätzliche Strategie ist wieder die Umformung in ein Fixpunktproblem

f⃗(x⃗) = 0 ⟺ x⃗ = Φ⃗(x⃗)

und Anwendung des BFS 4.68.

Bezeichnung 5.1:

Für Φ⃗(x⃗) = ( Φ_{1}(x_{1}, …, x_{n}) ; ⋮ ; Φ_{n}(x_{1}, …, x_{n}) ) sei Φ⃗′(x⃗) = ( \begin{matrix}\frac{∂Φ_{1}}{∂x_{1}} & … & \frac{∂Φ_{1}}{∂x_{n}} \\ ⋮ & ... & ⋮ \\ \frac{∂Φ_{n}}{∂x_{1}} & … & \frac{∂Φ_{n}}{∂x_{n}} \end{matrix} )

die Ableitungsmatrix.

Lemma 5.2:

Für stetig diff’bares Φ⃗ : ℝ^{n} → ℝ^{n} gilt

||Φ⃗(x⃗) − Φ⃗(y⃗)|| ≤ ||Φ⃗′(ξ⃗)|| ||x⃗ − y⃗||

mit einem Zwischenpunkt ξ⃗ = x⃗ + ϵ_{0} (y⃗ − x⃗), ϵ_{0} ∈ (0, 1), auf dem Geradenstück zwischen x⃗ und y⃗.

Beweis: Mit Ψ⃗(ϵ) := Φ⃗(x⃗ + ϵ(y⃗ − x⃗)) gilt

\begin{matrix}||Φ⃗(y⃗) − Φ⃗(x⃗)|| = ||Ψ⃗(1) − Ψ⃗(0)|| = | ; |∫_{0}^{1} \frac{d}{dϵ}Ψ⃗(ϵ) dϵ| ; | \\ = | ; |∫_{0}^{1} Φ⃗′(x⃗ + ϵ(y⃗ − x⃗)) (y⃗ − x⃗) dϵ| ; | ≤ ∫_{0}^{1}||Φ⃗′(x⃗ + ϵ(y⃗ − x⃗))|| dϵ ||y⃗ − x⃗|| , \end{matrix}

wobei nach dem Mittelwertsatz der Integralrechnung ein ϵ_{0} ∈ (0, 1) mit

∫_{0}^{1} ||Φ⃗′(x⃗ + ϵ(y⃗ − x⃗))|| dϵ = ||Φ⃗′(x⃗ + ϵ_{0}(y⃗ − x⃗))||

existiert.

Q.E.D.

Damit sind Kontraktionskonstanten als Maxima von Ableitungsnormen berechenbar.

Satz 5.3: (Zur Berechnung von Kontraktionskonstanten)

Für konvexes A ⊂ ℝ^{n} gilt mit k := sup_{ξ⃗∈A} ||Φ⃗′(ξ)|| :

||Φ⃗(x⃗) − Φ⃗(y⃗)|| ≤ k ||x⃗ − y⃗|| ∀ x⃗, y⃗ ∈ A .

Beweis: Der Zwischenpunkt ξ⃗ in Lemma 5.2 liegt für x⃗, y⃗ ∈ A wieder in A. Q.E.D.

Analog zu Satz 3.5 ist der BFS lokal anwendbar, wenn in irgendeiner Operatornorm ||Φ⃗′(x^{∗})|| < 1 gilt. Die Existenz einer geeigneten Norm ist nach Satz 4.58.c) garantiert, wenn ρ(Φ⃗′(x^{∗})) < 1 gilt.

Satz 5.4:

Sei Φ⃗ : ℝ^{n} → ℝ^{n} stetig diff’bar mit Fixpunkt x^{∗} = Φ⃗(x^{∗}).

a) Wenn ρ(Φ⃗′(x^{∗})) < 1 gilt, dann existieren eine abgeschlossene Umgebung Ω von x^{∗} und eine Norm auf dem ℝ^{n}, bezüglich der Φ⃗ eine Kontraktion mit Φ⃗(Ω) ⊂ Ω ist.

b) Gilt Φ⃗′(x^{∗}) = 0 für zweifach stetig diff’bares Φ⃗, dann gibt es eine Umgebung von x^{∗}, auf der

||Φ⃗(x⃗) − Φ⃗(x^{∗})|| ≤ c ||x⃗ − x^{∗}||^{2}

mit einer geeigneten Konstanten c gilt (“quadratische Konvergenz”).

Beweis: a) analog zum Beweis von Satz 3.5 mit einer Norm gemäß Satz 4.58, für die ||Φ⃗′(x^{∗})|| < 1 gilt.

b) Sei Φ_{i} die i.te Komponente von Φ⃗. Taylor-Entwicklung liefert

Φ_{i}(x⃗) = Φ_{i}(x^{∗}) + ∑_{j} \frac{∂Φ_{i}}{∂x_{j}} (x^{∗}) (x_{j} − x_{j}^{∗}) + \frac{1}{2} ∑_{j,k} \frac{∂^{2}Φ_{i}}{∂x_{j}∂x_{k}} (ξ⃗_{i}) (x_{j} − x_{j}^{∗})(x_{k} − x_{k}^{∗})

mit Zwischenpunkten ξ⃗_{i} auf dem Geradenstück zwischen x⃗ und x^{∗}. Es folgt

|Φ_{i}(x⃗) − Φ_{i}(x^{∗})| ≤ \frac{1}{2} ∑_{j,k} |\frac{∂^{2}Φ_{i}}{∂x_{j}∂x_{k}} (ξ⃗_{i})| ( max_{j} |x_{j} − x_{j}^{∗}|)^{2} .

Die zweiten partiellen Ableitungen sind auf einer Umgebung von x^{∗} beschränkt, so daß

||Φ⃗(x⃗) − Φ⃗(x^{∗})||_{∞} ≤ c ||x⃗ − x^{∗}||_{∞}^{2}

mit geeignetem c gilt. Jede beliebige Norm ist äquivalent zu || . ||_{∞}.

Q.E.D.

Das vektorwertige Analogon des skalaren Newton-Verfahrens 3.15 ist

Satz 5.5: (Das Newton-Verfahren)

Es sei x^{∗} Nullstelle der dreifach stetig diff’baren Funktion f⃗ : ℝ^{n} → ℝ^{n} mit invertierbarem f⃗′(x^{∗}). Dann existiert eine Umgebung U(x^{∗}), so daß das Newton-Verfahren x^{(i+1)} = Φ⃗(x^{(i)}) mit

Φ⃗(x⃗) = x⃗ − (f⃗′(x⃗))^{−1}f⃗(x⃗)

für alle Startwerte aus U(x^{∗}) quadratisch gegen x^{∗} konvergiert.

Beweis: Mit Satz 5.4 ist nur Φ⃗′(x^{∗}) = 0 zu zeigen. Aus

f⃗′(x⃗) Φ⃗(x⃗) = f⃗′(x⃗) x⃗ − f⃗(x⃗) , d.h., ∑_{j=1}^{n} \frac{∂f_{i}}{∂x_{j}} Φ_{j} = ∑_{j=1}^{n} \frac{∂f_{i}}{∂x_{j}} x_{j} − f_{i}

folgt

∑_{j=1}^{n} \frac{∂^{2}f_{i}}{∂x_{j}∂x_{k}} Φ_{j} + ∑_{j=1}^{n} \frac{∂f_{i}}{∂x_{j}} \frac{∂Φ_{j}}{∂x_{k}} = ∑_{j=1}^{n} \frac{∂^{2}f_{i}}{∂x_{j}∂x_{k}} x_{j} ,

d.h.,

∑_{j=1}^{n} \frac{∂f_{i}}{∂x_{j}} \frac{∂Φ_{j}}{∂x_{k}} = ∑_{j=1}^{n} \frac{∂^{2}f_{i}}{∂x_{j}∂x_{k}} (x_{j} − Φ_{j}) .

Mit x^{∗} = Φ⃗(x^{∗}) ergibt sich hieraus f⃗′(x^{∗}) Φ⃗′(x^{∗}) = 0 und damit Φ⃗′(x^{∗}) = 0. Q.E.D.

Bemerkung 5.6: Für nicht invertierbares f⃗′(x^{∗}) konvergiert die Newton-Folge i.a. nicht (Gegenbeispiele sind leicht konstruierbar).

Bemerkung 5.7: Der wesentliche Aufwand ist die Auswertung und Invertierung von f⃗′(x⃗). Für große Systeme bietet es sich an, mit einer festen Matrix C ≈ (f⃗′(x^{∗}))^{−1} zu arbeiten:

Φ⃗(x⃗) = x⃗ − Cf⃗(x⃗) .

Dies liefert zwar nur lineare Konvergenz mit der (lokalen) Kontraktionskonstanten ||Φ⃗′(x^{∗})|| = || I 1 −Cf⃗′(x^{∗})||, dafür ist jeder einzelne Schritt wesentlich schneller durchführbar.

Bemerkung 5.8: Da mit Satz 5.5 nur lokale Konvergenz garantiert ist, braucht 20.1.98↓

man gute Startwerte. Dies ist in höheren Dimensionen ein großes Problem! Eine mögliche Strategie zur “Globalisierung” ist das schrittweitengesteuerte Newton-Verfahren:

x^{(i+1)} := x^{(i)} − t^{(i)} (f⃗′(x^{(i)}))^{−1} f⃗(x^{(i)}) .

Hierbei wird t^{(i)} = 1, \frac{1}{2}, \frac{1}{4}, … ausprobiert, bis (für f⃗(x^{(i)}) ≠ 0) zum ersten Mal

||f⃗(x^{(i+1)})||_{2} < ||f⃗(x^{(i)})||_{2}

gilt. Dieses x^{(i+1)} wird akzeptiert.

Erklärung:

1) Mit F (x⃗) = ⟨f⃗(x⃗), f⃗(x⃗)⟩ und x⃗(t) := x^{(i)} − t (f⃗′(x^{(i)}))^{−1}f⃗(x^{(i)}) gilt

\frac{d}{dt}F (x⃗(t)) = − 2 ⟨f⃗(x⃗(t)) , f⃗′(x⃗(t)) (f⃗′(x^{(i)}))^{−1}f⃗(x^{(i)}) ⟩ .

Damit ist F (x⃗(t)) für stetig diff’bares f⃗ in einer Umgebung von t = 0 streng monoton fallend, falls x^{(i)} nicht schon Nullstelle ist:

\frac{d}{dt}F (x⃗(t))|_{t=0} = − 2 ⟨f⃗(x^{(i)}), f⃗(x^{(i)})⟩ ≤ 0 .

Die Suche nach t^{(i)} ∈ \{1, \frac{1}{2}, \frac{1}{4}, … \} führt damit garantiert nach endlich vielen Versuchen zum Erfolg!

2) Der Aufwand der Suche nach der Schrittweite t^{(i)} ist akzeptabel: der Hauptaufwand des Schrittes x^{(i)} → x^{(i+1)} ist die Berechnung der “Suchrichtung” (f⃗′(x^{(i)}))^{−1} f⃗(x^{(i)}). Für jeden Versuch t^{(i)} = 1, 1/2, … fällt dann nur die Auswertung von ||f⃗(x^{(i+1)})||_{2} zum Vergleich mit ||f⃗(x^{(i)})||_{2} an.

3) Nach Konstruktion gilt U^{(0)} ⊃_{≠} U^{(1)} ⊃_{≠} U^{(2)} ⊃_{≠} … mit

U^{(i)} = { x⃗ ∈ ℝ^{n} ; ||f⃗(x⃗)||_{2} ≤ ||f⃗(x^{(i)})||_{2} } .

Mit x^{(i)} ∈ U^{(i)} vollzieht sich die Iteration damit auf immer kleineren Gebieten, die sämtliche Nullstellen von f⃗ enthalten:

[figure: x; x^{(0)}; U^{(0)}]

Falls U^{(0)} beschränkt –und damit kompakt– ist, so hat die Newton-Folge einen Häufungspunkt x^{∗}, für den man (unter technischen Zusatzvoraussetzungen, siehe z.B. [Sto93, Satz 5.4.2.5]) f⃗′(x^{∗})^{T} f⃗(x^{∗}) = 0 zeigen kann. Die Bedingung

“x^{(0)} hinreichend nahe an einer Nullstelle”

beim üblichen Newton-Verfahren wird damit durch die wesentlich schwächere Bedingung

“U^{(0)} beschränkt (und damit kompakt)”

ersetzt.

4) In der Nähe einer Nullstelle werden wegen

lim_{x⃗→x^{∗}} \frac{||f⃗( x⃗ − (f⃗′(x⃗))^{−1}f⃗(x⃗) )||_{2}}{||f⃗(x⃗)||_{2}} = 0

die Schrittweiten t^{(i)} = 1 gefunden. Damit erhält man in der Endphase das normale Newton-Verfahren mit quadratischer Konvergenz.

Bemerkung 5.9: Eine Anwendung des Newton-Verfahrens auf dem ℝ^{2} ist das Bairstow-Verfahren zur Suche nach (eventuell komplexen) Nullstellen\underline{paaren} von Polynomen (siehe z.B. [Scw93] oder [Oev96]).

Bemerkung 5.10: Weiteres zu nichtlinearen Systemen:

J.M. Orthega und W.C. Rheinboldt: Iterative solution of nonlinear equations in several variables, Academic Press, New York 1970.

Viele Strategien versuchen, die (globalen) Minima von F (x⃗) = ⟨f⃗(x⃗), f⃗(x⃗)⟩ zu suchen: nichtlineare Optimierung.

98 KAPITEL 5. NICHTLINEARE GLEICHUNGSSYSTEME

Eigenwertprobleme

Zu einer n × n-Matrix A sind Eigenwerte λ ∈ ℂ und Eigenvektoren x⃗ ∈ ℂ^{n}, x⃗ ≠ 0, mit Ax⃗ = λx⃗ gesucht.

Zusammenfassung der wichtigsten Fakten aus der Linearen Algebra: Die Eigenwerte sind die Nullstellen des charakteristischen Polynoms

p(λ) = det(A − λ I 1) = (−1)^{n} (λ − λ_{1})^{a_{1}} ⋯ (λ − λ_{k})^{a_{k}} .

Die algebraische Vielfachheit von λ_{i} ist a_{i}. Der Eigenraum zu λ_{i} ist

E_{λ_{i}} = { x⃗ ∈ ℂ^{n} ; Ax⃗ = λ_{i}x⃗ } .

Die geometrische Vielfachheit von λ_{i} ist dim E_{λ_{i}}. Es gilt stets

a_{i} ≥ dim E_{λ_{i}} ≥ 1 .

Wenn für alle Eigenwerte a_{i} = dim E_{λ_{i}} gilt, dann existiert eine Basis x⃗_{1}, …, x⃗_{n} des ℂ^{n} aus Eigenvektoren. Mit T = (x⃗_{1}, …, x⃗_{n}) gilt

A = T diag(λ_{1}, …, λ_{n}) T^{−1} (Diagonalisierung).

Jedes symmetrische reelle A ist diagonalisierbar, es existiert eine Basis des ℝ^{n} aus orthonormalen Eigenvektoren (d.h., T ist orthogonal), die Eigenwerte und -vektoren sind reell. Wichtige Tatsache: die Eigenwerte sind stetige Funktionen der Matrixkomponenten! Einfache Eigenwerte hängen sogar analytisch von den Matrixdaten ab.

6.1 Allgemeine Abschätzungen

Satz 6.1: (Gerschgorin-Kriterium)

a) Alle Eigenwerte der n × n-Matrix A = (a_{ij}) liegen in der Vereinigung der Kreisscheiben

K_{i} = \{ z ∈ ℂ ; |z − a_{ii}| ≤ ∑_{{j=1 \atop j≠i}}^{n} |a_{ij}| \} , i = 1, …, n .

b) Es sei {i_{1}, …, i_{k}} ∪ {i_{k+1}, …, i_{n}} =: I_{1} ∪ I_{2} = {1, …, n}. Sind ∪ K_{i}_{i∈I_{1}}

und ∪ K_{i}_{i∈I_{2}} disjunkt, dann liegen in ∪ K_{i}_{i∈I_{1}} genau k und in ∪ K_{i}_{i∈I_{2}} genau

n − k Eigenwerte (mit ihrer algebraischen Vielfachheit gezählt).

[figure: ℂ; \overbrace{2 Eigenwerte}; \overbrace{1 Eigenwert}; \overbrace{3 Eigenwerte}]

Beweis: a) Sei x⃗ = (x_{1}, …, x_{n})^{T} Eigenvektor, sei |x_{k}| = max_{j} |x_{j}|. Aus λx_{k} = ∑_{j} a_{kj}x_{j} folgt

|λ − a_{kk}| |x_{k}| = | ∑_{{j=1 \atop j≠k}}^{n} a_{kj} x_{j}| ≤ ( ∑_{{j=1 \atop j≠k}}^{n} |a_{kj}|) |x_{k}| , d.h., λ ∈ K_{k} .

b) Sei D die Diagonale von A und N = A − D, sei A(ϵ) = D + ϵ N mit den Eigenwerten λ(ϵ) . Für ϵ = 0 bestehen die Kreise K_{i}(ϵ) aus den durch die Diagonalelemente gegebenen Punkten, die beim stetigen Vergrößern von ϵ = 0 auf ϵ = 1 zu den Gerschgorin-Kreisen K_{i} = K_{i}(1) von A anwachsen (die Radien sind proportional zu ϵ). Die Eigenwerte hängen stetig von ϵ ab und können nach a) nicht zwischen ∪ K_{i}(ϵ)_{i∈I_{1}} und ∪ K_{i}(ϵ)_{i∈I_{2}} wechseln.

Q.E.D.

Ein anderer Weg zu Eigenwertabschätzungen basiert auf “Testvektoren”.

Definition 6.2:

Der Rayleigh-Quotient von x⃗ ≠ 0 bezüglich der Matrix A ist 22.1.98↓

r_{A}(x⃗) = \frac{⟨x⃗, Ax⃗ ⟩}{⟨x⃗, x⃗ ⟩} .

Für komplexes A oder komplexes x⃗ ist hierbei das komplexe Skalarprodukt ⟨x⃗, y⃗ ⟩ = ∑_{i} x̄_{i} y_{i} gemeint, das für reelle Daten zum üblichen Euklidischen Skalarprodukt auf dem ℝ^{n} wird.

Satz 6.3:

Sei A reell und symmetrisch, x⃗ ∈ ℝ^{n} \ {0} beliebig.

a) Mit dem kleinsten bzw. größten Eigenwert λ_{min} bzw. λ_{max} von A gilt

λ_{min} ≤ r_{A}(x⃗) ≤ λ_{max} .

Die Extremwerte werden dabei offensichtlich für die entsprechenden Eigenvektoren angenommen.

b) Eigenwertabschätzung durch den Rayleigh-Quotienten eines Testvektors: es existiert ein Eigenwert λ von A mit

|λ−r_{A}(x⃗)|^{2} ≤ \underbrace{r_{A^{2}}(x⃗) − (r_{A}(x⃗))^{2}}_{Vorsicht: Auslöschung!} = \underbrace{\frac{||(A − r_{A}(x⃗) I 1) x⃗||_{2}^{2} .}{⟨x⃗, x⃗⟩}}_{numerisch stabile Darstellung}

Beweis: a) Sei x⃗_{1}, …, x⃗_{n} eine Orthonormalbasis von Eigenvektoren: Ax⃗_{i} = λ_{i}x⃗_{i}. Mit x⃗ = ∑_{i} x_{i} x⃗_{i} folgt

r_{A}(x⃗) = \frac{⟨∑_{i} x_{i} x⃗_{i}, ∑_{i} λ_{i} x_{i} x⃗_{i}⟩}{⟨∑_{i} x_{i} x⃗_{i}, ∑_{i} x_{i} x⃗_{i}⟩} = \frac{∑_{i} λ_{i} x_{i}^{2}}{∑_{i} x_{i}^{2}} \{ \begin{matrix}≤ λ_{max} , \\ ≥ λ_{min} . \end{matrix}

b) Sei μ nicht Eigenwert von A:

1 = \frac{||(A − μ I 1)^{−1}(A − μ I 1) x⃗||_{2}^{2}}{||x⃗||_{2}^{2}} ≤ ||(A − μ I 1)^{−1}||_{2}^{2} \frac{||(A − μ I 1) x⃗||_{2}^{2}}{||x⃗||_{2}^{2}} .

Mit

\frac{||(A − μ I 1) x⃗||_{2}^{2}}{⟨x⃗, x⃗⟩} ≥ \frac{1}{||(A − μ I 1)^{−1}||_{2}^{2}} = \frac{1}{ρ((A − μ I 1)^{−1})^{2}}

= \frac{1}{max_{i=1...n} |λ_{i} − μ|^{−2}} = min_{i=1...n} |λ_{i} − μ|^{2}

folgt (nun für beliebiges μ):

\frac{⟨(A − μ I 1) x⃗, (A − μ I 1) x⃗ ⟩}{⟨x⃗, x⃗ ⟩} = \frac{||(A − μ I 1) x⃗||_{2}^{2}}{⟨x⃗, x⃗⟩} ≥ min_{i=1...n} |λ_{i} − μ|^{2} .

Mit

\frac{⟨(A − μ I 1) x⃗, (A − μ I 1) x⃗ ⟩}{⟨x⃗, x⃗ ⟩} = \underbrace{\frac{⟨Ax⃗, Ax⃗ ⟩}{⟨x⃗, x⃗ ⟩}}_{r_{A^{2}}(x⃗)} −( \underbrace{\frac{⟨x⃗, Ax⃗ ⟩}{⟨x⃗, x⃗ ⟩}}_{r_{A}(x⃗)} )^{2} + (μ − \frac{⟨x⃗, Ax⃗ ⟩}{⟨x⃗, x⃗ ⟩})^{2}

wird die Abschätzung für μ = r_{A}(x⃗) optimal.

Q.E.D.

Bemerkung 6.4: Wenn x⃗ ein Eigenvektor ist, dann liefert r_{A}(x⃗) den entsprechenden Eigenwert. Der Rayleigh-Quotient ist ein Hilfsmittel, aus einer Approximation eines Eigenvektors eine Approximation des Eigenwerts abzuleiten.

Bemerkung 6.5: Wann ist x⃗ ∈ ℝ^{n} (bzw. ℂ^{n}) Approximation eines Eigenvektors? Es sei E der Eigenraum zum Eigenwert λ und F der von den restlichen Eigen- (bzw. Haupt-)vektoren aufgespannte Raum, so daß ℝ^{n} = E ⊕ F (bzw. ℂ^{n} = E ⊕ F). Zerlege x⃗ = x⃗_{E} + x⃗_{F} mit x⃗_{E} ∈ E, x⃗_{F} ∈ F. Dann bedeute:

x⃗ ist approximativer Eigenvektor zum Eigenwert λ

⟺ x⃗ ≈ x⃗_{E} ⟺ ||x⃗_{F} || ≪ ||x⃗_{E}|| .

Für \underline{symmetrische} Matrizen ist F das orthogonale Komplement von E: ⟨x⃗_{E}, x⃗_{F} ⟩ = 0. Der Winkel ϕ zwischen x⃗ und seiner orthogonalen Projektion x⃗_{E} auf den Eigenraum E, definiert durch

cos^{2}(ϕ) = \frac{⟨x⃗_{E}, x⃗_{E}⟩}{⟨x⃗, x⃗⟩} bzw. sin^{2}(ϕ) = \frac{⟨x⃗_{F} , x⃗_{F} ⟩}{⟨x⃗, x⃗⟩} ,

ist ein Maß für den “Abstand von x⃗ zum Eigenraum E”. Für \underline{symmetrisches} A mit den Eigenwerten λ_{i} gilt

( min_{λ_{i}≠λ} |λ − λ_{i}|) sin^{2}(ϕ) ≤ |λ − r_{A}(x⃗)| ≤ ( max_{λ_{i}} |λ − λ_{i}|) sin^{2}(ϕ) . (#)

Damit hängt die Approximation eines Eigenwertes durch den Rayleigh-Quotienten \underline{quadratisch} vom durch den Winkel ϕ gemessenen “Abstand des Testvektors x⃗ zum Eigenraum” ab.

Beweis von (#):

λ − r_{A}(x⃗) = λ − \frac{⟨x⃗_{E} + x⃗_{F} , A(x⃗_{E} + x⃗_{F})⟩}{⟨x⃗, x⃗ ⟩}
= λ − \frac{⟨x⃗_{E}, Ax⃗_{E}⟩}{⟨x⃗, x⃗ ⟩} − 2 \frac{⟨x⃗_{F} , Ax⃗_{E}⟩}{⟨x⃗, x⃗ ⟩} − \frac{⟨x⃗_{F} , Ax⃗_{F} ⟩}{⟨x⃗, x⃗ ⟩}
= λ ( 1 − \frac{⟨x⃗_{E}, x⃗_{E}⟩}{⟨x⃗, x⃗ ⟩} ) − \frac{⟨x⃗_{F} , x⃗_{F} ⟩}{⟨x⃗, x⃗ ⟩} \frac{⟨x⃗_{F} , Ax⃗_{F} ⟩}{⟨x⃗_{F} , x⃗_{F} ⟩}
= sin^{2}(ϕ) ( λ − \frac{⟨x⃗_{F} , Ax⃗_{F} ⟩}{⟨x⃗_{F} , x⃗_{F} ⟩} ) .

Der auf F eingeschränkte Rayleigh-Quotient nimmt in Analogie zu Satz 6.3.a) als Extremwerte einen der von λ verschiedenen Eigenwerte von A an:

min_{λ_{i}≠λ} λ_{i} ≤ \frac{⟨x⃗_{F} , Ax⃗_{F} ⟩}{⟨x⃗_{F} , x⃗_{F} ⟩} ≤ max_{λ_{i}≠λ} λ_{i} .

Q.E.D.

Merke: Bei symmetrischen Matrizen können auch mäßige Eigenvektorapproximationen durch den Rayleigh-Quotienten gute Eigenwertapproximationen liefern.

Satz 6.6: (Abhängigkeit der Eigenwerte von den Matrixdaten)

Sei A = T diag(λ_{1}, …, λ_{n}) T^{−1} eine diagonalisierbare n × n-Matrix mit Eigenwerten λ_{1}, …, λ_{n} und diagonalisierender Transformationsmatrix T. Für einen beliebigen Eigenwert λ̃ einer beliebigen anderen Matrix Ã gilt bezüglich der p-Normen

min_{i=1..n} |λ_{i} − λ̃| ≤ cond_{p}(T) ||A − Ã||_{p} .

Beweis: Sei Λ = diag(λ_{1}, …, λ_{n}), λ̃ sei nicht Eigenwert von A. Es folgt

||(A − λ̃ I 1)^{−1}||_{p} = ||T (Λ − λ̃ I 1)^{−1}T^{−1}||_{p} ≤ cond_{p}(T) ||(Λ − λ̃ I 1)^{−1}||_{p} .

Die p-Norm einer Diagonalmatrix ist der maximale Betrag der Diagonalelemente:

||(Λ − λ̃ I 1)^{−1}||_{p} = max_{i=1..n} \frac{1}{|λ_{i} − λ̃|} = \frac{1}{min_{i=1..n} |λ_{i} − λ̃|} .

Es folgt

min_{i=1..n} |λ_{i} − λ̃| ≤ \frac{cond_{p}(T)}{||(A − λ̃ I 1)^{−1}||_{p}} .  (#)

Mit einem Eigenvektor y⃗ von Ã zu λ̃ gilt

Ãy⃗ = λ̃y⃗ ⟹ (A − Ã)y⃗ = (A − λ̃ I 1)y⃗ ⟹ (A − λ̃ I 1)^{−1}(A − Ã) y⃗ = y⃗

und damit

1 ≤ ||(A − λ̃ I 1)^{−1}(A − Ã)||_{p} ≤ ||(A − λ̃ I 1)^{−1}||_{p} ||A − Ã||_{p} .

Mit ||(A − λ̃ I 1)^{−1}||_{p}^{−1} ≤ ||A − Ã||_{p} und (#) folgt die Behauptung.

Q.E.D.

Bemerkung 6.7: Für diagonalisierbare Matrizen ist die Störung der Eigenwerte linear in der Störung der Matrixdaten. Das Eigenwertproblem ist gutmütig, solange nicht Eigenräume “fast parallel” sind (d.h., solange cond_{p}(T) nicht zu groß ist, vergleiche Aufgabe 30).

Bemerkung 6.8: Symmetrische Matrizen können mit orthogonalem T diagonalisiert werden. Mit

cond_{2}(T) =^{(4.62)} \frac{max_{||x⃗||_{2}=1} ||T x⃗||_{2}}{min_{||x⃗||_{2}=1} ||T x⃗||_{2}} = \frac{max_{||x⃗||_{2}=1} ||x⃗||_{2}}{min_{||x⃗||_{2}=1} ||x⃗||_{2}} = 1

folgt min_{i=1..n} |λ_{i} − λ̃| ≤ ||A − Ã||_{2} für symmetrisches A und beliebiges Ã.

Merke: Das Eigenwertproblem symmetrischer Matrizen ist \underline{stets} (auch bei Entartung) gutmütig!

Satz 6.9: (Vergleichssatz für die Eigenwerte symmetrischer Matrizen)

Für symmetrische reelle n × n-Matrizen A und Ã mit den Eigenwerten

λ_{1} ≤ … ≤ λ_{n} von A bzw. λ̃_{1} ≤ … ≤ λ̃_{n} von Ã

gilt |λ_{i} − λ̃_{i}| ≤ ρ(A − Ã) ≤ ||A − Ã|| (für jede Operatornorm).

Beweis: Es seien x⃗_{1}, …, x⃗_{n} bzw. y⃗_{1}, …, y⃗_{n} orthonormale Eigenvektorbasen des ℝ^{n} von A bzw. Ã. Es sei E_{i..n} der von x⃗_{i}, …, x⃗_{n} aufgespannte Teilraum des ℝ^{n}. In Analogie zu Satz 6.3.a) gilt für den auf E_{i..n} eingeschränkten Rayleigh-Quotienten

min_{{x⃗∈E_{i..n} \atop x⃗≠0}} \frac{⟨x⃗, Ax⃗⟩}{⟨x⃗, x⃗⟩} = min_{(x_{i},...,x_{n})≠0} \frac{∑_{k=i}^{n} λ_{k}x_{k}^{2}}{∑_{k=i}^{n} x_{k}^{2}} = λ_{i} ,

wobei ein beliebiges x⃗ ∈ E_{i..n} \ {0} nach der Basis x⃗_{i}, …, x⃗_{n} zerlegt wurde:

x⃗ = ∑_{k=i}^{n} x_{k}x⃗_{k}. Es sei F_{1..i} der von y⃗_{1}, …, y⃗_{i} aufgespannte Teilraum des ℝ^{n}.

Ein beliebiges x⃗ ∈ (E_{i..n} ∩ F_{1..i}) \ {0} wird nach der Basis y⃗_{1}, …, y⃗_{i} von F_{1..i}

zerlegt^{1}: x⃗ = ∑_{k=1}^{i} y_{k}y⃗_{k}. Es folgt

1Die Koeffizienten y_{k} sind dabei durch die Bedingung x⃗ ∈ E_{i..n} eingeschränkt. Da E_{i..n} das orthogonale Komplement des von x⃗_{1}, …, x⃗_{i−1} aufgespannten Teilraums ist, haben die y_{k} das Gleichungssystem ∑_{k=1}^{i} y_{k} ⟨x⃗_{j}, y⃗_{k}⟩ = 0 mit j = 1, …, i − 1 zu lösen. Es gibt sicherlich nichttriviale Lösungen dieser i − 1 homogenen linearen Gleichungen für die i Unbestimmten y_{1}, …, y_{i}, so daß der Teilraum E_{i..n} ∩ F_{1..i} nicht nur den Nullvektor enthält. Damit existiert ein nichttrivialer Vektor x⃗ ∈ E_{i..n} ∩ F_{1..i}.

min_{{x⃗∈E_{i..n} \atop x⃗≠0}} \frac{⟨x⃗, Ãx⃗⟩}{⟨x⃗, x⃗⟩} ≤ min_{{x⃗∈E_{i..n}∩F_{1..i} \atop x⃗≠0}} \frac{⟨x⃗, Ãx⃗⟩}{⟨x⃗, x⃗⟩} ≤ max_{(y_{1},...,y_{i})≠0} \frac{∑_{k=1}^{i} λ̃_{k}y_{k}^{2}}{∑_{k=1}^{i} y_{k}^{2}} = λ̃_{i}

und damit

λ̃_{i} ≥ min_{{x⃗∈E_{i..n} \atop x⃗≠0}} \frac{⟨x⃗, Ax⃗⟩ − ⟨x⃗, (A − Ã)x⃗⟩}{⟨x⃗, x⃗⟩}

≥ min_{{x⃗∈E_{i..n} \atop x⃗≠0}} \frac{⟨x⃗, Ax⃗⟩}{⟨x⃗, x⃗⟩} − max_{{x⃗∈E_{i..n} \atop x⃗≠0}} \frac{⟨x⃗, (A − Ã)x⃗⟩}{⟨x⃗, x⃗⟩}

≥ λ_{i} − max_{{x⃗∈ℝ^{n} \atop x⃗≠0}} \frac{⟨x⃗, (A − Ã)x⃗⟩}{⟨x⃗, x⃗⟩} ≥ λ_{i} − ρ(A − Ã) ,

also ρ(A−Ã) ≥ λ_{i} −λ̃_{i}. Mit vertauschten Rollen von A und Ã ergibt sich analog ρ(Ã − A) ≥ λ̃_{i} − λ_{i} und damit insgesamt ρ(A − Ã) = ρ(Ã − A) ≥ |λ_{i} − λ̃_{i}|.

Q.E.D.

Bemerkung 6.10: Wählt man Ã als Diagonale von A, und schätzt man den Spektralradius durch die Zeilensummennorm ab, so ergibt sich

|λ_{i} − d_{i}| ≤ ||A − Ã||_{∞} = max_{k=1..n} ∑_{{j=1 \atop j≠k}} |a_{kj}| =: r

= Maximum der Gerschgorin-Radien,

wobei d_{1} ≤ d_{2} ≤ … eine Anordnung der Diagonale von A ist. Das Gerschgorin-Kriterium liefert für separierende Gerschgorin-Kreise bessere Abschätzungen, da jedem Diagonalelement sein individueller Radius zugeordnet ist. Dafür liefert Satz 6.9 bei überlappenden Kreisen bessere Ergebnisse, da durch die Anordnung jedem Diagonalelement genau ein Eigenwert mit Abstand ≤ r zugeordnet werden kann.

6.2 Die von-Mises-Iteration

Ziel: berechne den Spektralradius einer Matrix durch Konstruktion einer Vektorfolge, die gegen den entsprechenden Eigenraum konvergiert. \underline{Konzeptionelles Problem:} es gibt keinen eindeutigen Eigenvektor als Kandidat für den Grenzwert. Statt “Konvergenz gegen einen Eigenvektor” betrachte “Konvergenz gegen einen Eigenraum”.

Definition 6.11:

Es sei ℂ^{n} = E ⊕ F durch 2 Unterräume aufgespannt. Eine Vektorfolge x^{(i)} ∈ ℂ^{n} heißt konvergent gegen E, wenn mit der eindeutigen Zerlegung

x^{(i)} = x_{E}^{(i)} + x_{F}^{(i)} , x_{E}^{(i)} ∈ E , x_{F}^{(i)} ∈ F

in einer beliebigen Norm lim_{i→∞} ||x_{F}^{(i)}||/||x^{(i)}|| = 0 gilt.

Bemerkung 6.12: “Konvergenz gegen einen Unterraum” hat nichts mit dem üblichen Konvergenzbegriff für Vektoren zu tun. Die Folgen x^{(i)}, x_{E}^{(i)}, x_{F}^{(i)} brauchen nicht im üblichen Sinne zu konvergieren!

Bemerkung 6.13: Die Konvergenz gegen E ist unabhängig von der Wahl des Komplementärraums F (Aufgabe 36).

Satz 6.14: (von-Mises-Iteration zur Bestimmung des Spektralradius) Sei A eine diagonalisierbare n×n-Matrix mit den paarweise verschiedenen 27.1.98↓

(evtl. entarteten) Eigenwerten λ_{1}, …, λ_{k}, die gemäß

|λ_{1}| ≤ … ≤ |λ_{k−1}| < |λ_{k}| = ρ(A)

angeordnet seien (d.h., der betragsgrößte Eigenwert λ_{k} darf entartet, aber nicht betragsmäßig entartet sein). Die von-Mises-Folge

x^{(i+1)} = \frac{1}{ρ^{(i)}} Ax^{(i)} , ρ^{(i)} = ||Ax^{(i)}||

konvergiert für fast jedes x^{(0)} ∈ ℂ^{n} gegen den zu λ_{k} gehörenden Eigenraum und

lim_{i→∞} ρ^{(i)} = ρ(A) .

Die Konvergenz ist linear mit dem Konvergenzfaktor |λ_{k−1}|/|λ_{k}|.

Beweis: Offensichtlich gilt x^{(i)} = A^{i}x^{(0)}/||A^{i}x^{(0)}|| (beachte ||x^{(i)}|| = 1). Sei ℂ^{n} = E_{1} ⊕ ⋯ ⊕ E_{k} die Zerlegung nach den Eigenräumen E_{j} zu λ_{j}, seien x⃗_{j} = x_{E_{j}}^{(0)} die Projektionen des Startvektors auf diese Eigenräume. Mit

x^{(0)} = ∑_{j=1}^{k−1} x⃗_{j} + x⃗_{k} , Ax⃗_{j} = λ_{j}x⃗_{j} , j = 1, …, k

folgt

x^{(i)} = \frac{∑_{j=1}^{k−1} λ_{j}^{i} x⃗_{j} + λ_{k}^{i} x⃗_{k}}{| ; | ∑_{j=1}^{k−1} λ_{j}^{i} x⃗_{j} + λ_{k}^{i} x⃗_{k} | ; |} = (\frac{λ_{k}}{|λ_{k}|})^{i} \frac{x⃗_{k} + ∑_{j=1}^{k−1} (\frac{λ_{j}}{λ_{k}} )^{i} x⃗_{j}}{| ; | x⃗_{k} + ∑_{j=1}^{k−1} (\frac{λ_{j}}{λ_{k}} )^{i} x⃗_{j} | ; |} . (#)

Es sei F = E_{1}⊕⋯⊕E_{k−1}. Mit y_{F}^{(i)} := ∑_{j=1}^{k−1} (\frac{λ_{j}}{λ_{k}} )^{i} x⃗_{j} folgt für den in F liegenden

Anteil von x^{(i)}:

x_{F}^{(i)} = (\frac{λ_{k}}{|λ_{k}|})^{i} \frac{y_{F}^{(i)}}{||x⃗_{k} + y_{F}^{(i)}||}

und

\frac{||x_{F}^{(i)}||}{||x^{(i)}||} = ||x_{F}^{(i)}|| ≤ |\frac{λ_{k−1}}{λ_{k}} |^{i} \frac{1}{||x⃗_{k} + y_{F}^{(i)}||} ∑_{j=1}^{k−1} ||x⃗_{j} || .

\underline{Außer für x⃗_{k} = 0} konvergiert damit x^{(i)} wegen y_{F}^{(i)} → 0 gegen den zu λ_{k} gehörenden Eigenraum und

ρ^{(i)} = ||Ax^{(i)}|| =^{(#)} \frac{||λ_{k}x⃗_{k} + Ay_{F}^{(i)}||}{||x⃗_{k} + y_{F}^{(i)}||} ⟶^{(y_{F}^{(i)}→0)} |λ_{k}| = ρ(A) .

Q.E.D.

Bemerkung 6.15: Falls in der Zerlegung des Startvektors x^{(0)} der Eigenraum zu λ_{k} nicht beteiligt ist (der Ausnahmefall x⃗_{k} = 0 im Beweis von 6.14), so konvergiert (im Prinzip) x^{(i)} gegen den zum betragsmäßig größten Eigenwert gehörenden Eigenraum, der in der Zerlegung vorkommt. Diese Situation ist jedoch instabil: durch Rundungsfehler werden kleine Komponenten im zu λ_{k} gehörigen Eigenraum eingeschleppt, die sich nach längerer Rechnung durchsetzen, so daß \underline{praktisch immer} ρ^{(i)} → |λ_{k}| = ρ(A) eintritt (Rundungsfehler können auch angenehm sein!).

Bemerkung 6.16: Man erhält |λ_{k}|. Durch r_{A}(x^{(i)}) oder durch Betrachtung einzelner Komponenten von x^{(i)} läßt sich λ_{k} ermitteln:

r_{A}(x^{(i)}) ⟶^{i→∞} λ_{k} , \frac{(Ax^{(i)})_{j}}{(x^{(i)})_{j}} ⟶^{i→∞} λ_{k} .

Bemerkung 6.17: Die Konvergenz ist langsam, wenn |λ_{k−1}|/|λ_{k}| ≈ 1 gilt.

Bemerkung 6.18: Wenn ein Eigenwert und -vektor λ_{k},x⃗_{k} einer Matrix A bekannt sind, dann kann man diese Daten “löschen” (Deflation):

Ã = ( I 1 − \frac{x⃗_{k}x_{k}^{T}}{⟨x⃗_{k}, x⃗_{k}⟩}) A

hat dieselben Eigenwerte wie A, außer daß λ_{k} auf λ̃_{k} = 0 transformiert wird (Aufgabe ???). Hiermit können sukzessiv alle Spektraldaten von A ermittelt werden. Aber: Fehler addieren sich auf, die numerischen Daten werden immer ungenauer.

6.3 Die Wielandt-Rayleigh-Iteration

Idee: um die Spektraldaten von A zu ermitteln, benutze die von-Mises-Iteration mit einer Matrix Ã, die dieselben Eigenvektoren und verwandte Eigenwerte hat.

Beispiel 6.19: A^{−1} hat dieselben Eigenvektoren wie A zu den Eigenwerten 1/λ. Damit konvergiert

x^{(i+1)} = \frac{A^{−1}x^{(i)}}{||A^{−1}x^{(i)}||}

gegen den Eigenraum des \underline{betragskleinsten} Eigenwertes von A.

Der Spektralradius von (A − μ I 1)^{−1} ist durch den Eigenwert von A bestimmt, der dem Wert μ am nächsten liegt. Durch Wahl von μ können damit Eigenwerte \underline{gezielt angesteuert} werden. Unmittelbar folgt

Satz 6.20: (Inverse Wielandt-Iteration mit Spektralverschiebung)

Es sei λ derjenige Eigenwert der diagonalisierbaren Matrix A, der μ ∈ ℂ am nächsten liegt. Dann konvergiert für fast alle Startvektoren

x^{(i+1)} = \frac{(A − μ I 1)^{−1}x^{(i)}}{||(A − μ I 1)^{−1}x^{(i)}||}

gegen den Eigenraum zu λ und

r_{A}(x^{(i)}) = \frac{⟨x^{(i)}, Ax^{(i)}⟩}{⟨x^{(i)}, x^{(i)}⟩} ⟶^{i→∞} λ .

Die Konvergenz ist linear mit dem Konvergenzfaktor

\frac{Abstand von μ zum nächsten Eigenwert von A}{Abstand von μ zum übernächsten Eigenwert von A} .

Bemerkung 6.21: Bei vorliegender LR- oder QR-Faktorisierung von A − μ I 1 ist jeder Schritt

löse (A − μ I 1) y⃗ = x^{(i)} , dann x^{(i+1)} := \frac{y⃗}{||y⃗||}

schnell durchführbar.

Bemerkung 6.22: Die Konvergenz kann beliebig schnell gemacht werden, wenn die “Spektralverschiebung” μ nahe genug am gewünschten Eigenwert gewählt wird. Allerdings darf μ nicht exakt mit einem Eigenwert übereinstimmen, da sonst A − μ I 1 singulär ist.

Idee: mit r_{A}(x^{(i)}) stehen immer besser werdende Approximationen des Eigenwertes zur Verfügung. Setzt man diese in die Iteration ein, so ergibt sich quadratische Konvergenz. Bei symmetrischen Matrizen liefert der Rayleigh-Quotient nach Bemerkung 6.5 besonders gute Eigenwertapproximationen und führt sogar zu kubischer Konvergenz.

Satz 6.23: (Das Wielandt-Rayleigh-Verfahren: Konvergenzbeschleunigung mit Rayleigh-Quotienten)

Für eine symmetrische Matrix A konvergiert die Iteration

x^{(i+1)} = \frac{(A − μ^{(i)} I 1)^{−1} x^{(i)}}{||(A − μ^{(i)} I 1)^{−1} x^{(i)}||} , μ^{(i)} = r_{A}(x^{(i)}) = \frac{⟨x^{(i)}, Ax^{(i)}⟩}{⟨x^{(i)}, x^{(i)}⟩}

lokal kubisch gegen einen Eigenraum und den dazugehörigen (eventuell entarteten) Eigenwert lim_{i→∞} μ^{(i)} . Für fast jeden Startvektor x^{(0)} ist die Konvergenz global, die Ausnahmefälle sind instabil und treten daher numerisch nicht auf.

Beweis: Wir beweisen hier nur die \underline{lokale} Konvergenz: zu jedem Eigenraum gibt es eine “Umgebung” (“Konvergenzkegel”), innerhalb der der Iterationsvektor in superlinearer Weise angezogen wird. Der Konvergenzkegel zu einem Eigenwert λ soll nun charakterisiert werden. Sei E der Eigenraum zu λ, F sei das von den restlichen Eigenvektoren aufgespannte orthogonale Komplement. Zerlege x^{(i)} = x_{E}^{(i)} + x_{F}^{(i)}. Der Winkel ϕ^{(i)} ∈ [0, π/2] zwischen x^{(i)} und x_{E}^{(i)} ist durch

cos(ϕ^{(i)}) = \frac{||x_{E}^{(i)}||_{2}}{||x^{(i)}||_{2}} bzw. sin(ϕ^{(i)}) = \frac{||x_{F}^{(i)}||_{2}}{||x^{(i)}||_{2}}

definiert. Mit

y⃗ = (A − μ^{(i)} I 1)^{−1}x^{(i)} = \frac{x_{E}^{(i)}}{λ − μ^{(i)}} + (A − μ^{(i)} I 1)^{−1}x_{F}^{(i)} =: y⃗_{E} + y⃗_{F}

und x^{(i+1)} = y⃗/||y⃗||_{2} folgt

tan(ϕ^{(i+1)}) = \frac{||y⃗_{F} ||_{2}}{||y⃗_{E}||_{2}} = \frac{||(A − μ^{(i)} I 1)^{−1}x_{F}^{(i)}||_{2}}{||x_{E}^{(i)}||_{2}} |λ − μ^{(i)}|

= \frac{||(A − μ^{(i)} I 1)^{−1}x_{F}^{(i)}||_{2}}{||x_{F}^{(i)}||_{2}} |λ − μ^{(i)}| tan(ϕ^{(i)}) .

Mit den Eigenwerten λ_{j} von A und

c_{1} = min_{λ_{j}≠λ} |λ − λ_{j}| , c_{2} = max_{λ_{j}} |λ − λ_{j}|

gilt nach Bemerkung 6.5 für den zweiten Faktor

|λ − μ^{(i)}| ≤ c_{2} sin^{2}(ϕ^{(i)}) .

Für den ersten Faktor gilt

\frac{||(A − μ^{(i)} I 1)^{−1}x_{F}^{(i)}||_{2}}{||x_{F}^{(i)}||_{2}} ≤ ||(A − μ^{(i)} I 1)^{−1}||_{2F} = \frac{1}{min_{λ_{j}≠λ} |λ_{j} − μ^{(i)}|} ,

wobei ||B||_{2F} = max_{x⃗∈F} ||Bx⃗||_{2}/||x⃗||_{2} die Spektralnorm darstellt, die durch Ein-

schränkung der Vektoren auf den Unterraum F entsteht. Für die symmetrische Matrix (A − μ^{(i)} I 1)^{−1} ist dies der durch Betrachtung aller möglichen Eigenvektoren in F gegebene Spektralradius, so daß nur die entsprechenden Eigenwerte λ_{j} ≠ λ zu berücksichtigen sind. Mit

min_{λ_{j}≠λ} |λ_{j} − μ^{(i)}| ≥ min_{λ_{j}≠λ} ( |λ_{j} − λ| − |λ − μ^{(i)}| ) ≥ c_{1} − c_{2} sin^{2}(ϕ^{(i)})

ergibt sich

tan(ϕ^{(i+1)}) ≤ \frac{c_{2} sin^{2}(ϕ^{(i)})}{c_{1} − c_{2} sin^{2}(ϕ^{(i)})} tan(ϕ^{(i)})

für hinreichend kleine ϕ^{(i)}, für die der Nenner positiv ist. Für

sin^{2}(ϕ^{(i)}) < \frac{1}{2} \frac{c_{1}}{c_{2}} = \frac{1}{2} \frac{min_{λ_{j}≠λ} |λ_{j} − λ|}{max_{λ_{j}} |λ_{j} − λ|}  (#)

ist der Faktor zwischen tan(ϕ^{(i+1)}) und tan(ϕ^{(i)}) kleiner als 1, so daß der Winkel verkleinert wird. Der Faktor hängt selbst in monotoner Weise von dem Winkel ab, womit rekursiv die Bedingung (#) in den folgenden Schritten erhalten bleibt und sich die Konvergenz ϕ^{(i)} → 0 ergibt. Damit liefert (#) eine Charakterisierung des Konvergenzkegels, innerhalb dessen die bezüglich des Winkels monoton fallende Konvergenz gegen den zu λ gehörenden Eigenraum garantiert ist. Bei kleinen Winkeln (tan(ϕ^{(i)}) ≈ sin(ϕ^{(i)}) ≈ ϕ^{(i)}) folgt mit

ϕ^{(i+1)} ≤^{(≈)} \frac{c_{2}}{c_{1}} (ϕ^{(i)})^{3}

kubische Konvergenz. Mit Bemerkung 6.5 folgt dieselbe Konvergenzordnung für die Approximation des Eigenwertes durch die Rayleigh-Quotienten.

Q.E.D.

Bemerkung 6.24: Plausibilitätsargument zur globalen Konvergenz: das “Residuum” r^{(i)} = (A − μ^{(i)} I 1) x^{(i)} (vergleiche Satz 6.3.b)) fällt für symmetrisches A in der Iteration monoton: ||r^{(i+1)}||_{2} ≤ ||r^{(i)}||_{2} (Aufgabe ???).

Bemerkung 6.25: Konvergenz gegen den Eigenraum zu λ ist garantiert, sobald

sin^{2}(ϕ^{(i)}) < \frac{1}{2} \frac{min_{λ_{j}≠λ} |λ_{j} − λ|}{max_{λ_{j}} |λ_{j} − λ|}

gilt:

[figure: Konvergenzkegel; Eigenraum; Eigenraum]

Um einen Eigenwert λ gezielt anzusteuern, müßte man den Startvektor genügend nahe am Eigenraum (“im Konvergenzkegel”) wählen, was in der Praxis schwierig ist. Daher wird man zunächst einige Schritte mit konstantem μ (≈ gewünschter Eigenwert) durchführen, bevor man mit Rayleigh-Quotienten beschleunigt.

Bemerkung 6.26: Vorsicht in Implementierungen: da A − μ^{(i)} I 1 fast singulär wird, muß rechtzeitig abgebrochen werden. Mit den Eigenwerten λ_{j} von A und

cond(A − μ^{(i)} I 1) ≥^{(4.62)} \frac{max_{j} |λ_{j} − μ^{(i)}|}{min_{j} |λ_{j} − μ^{(i)}|} ⟶^{i→∞} ∞

wird die Berechnung des Schrittes x^{(i)} → x^{(i+1)} immer schlechter konditioniert. In der Praxis ist dies jedoch i.a. kein Problem, denn das Verfahren ist \underline{selbstkorrigierend}: ein ungenau berechneter Nachfolger x^{(i+1)} wird im weiteren Verlauf wieder vom Eigenraum angezogen. Erst wenn x^{(i+1)} von Rundungsfehlern dominiert wird, d.h., wenn cond(A − μ^{(i)} I 1) auf die Größenordnung von 1/τ (τ = Maschinengenauigkeit) angewachsen ist^{2}, so ist durch den Schritt x^{(i)} → x^{(i+1)} keine Verbesserung zu erwarten. \underline{Für symmetrisches A} ergibt sich für den Schritt i, indem diese Situation eintritt

\frac{1}{τ} ≈ cond_{2}(A − μ^{(i)} I 1) = \frac{max_{j} |λ_{j} − μ^{(i)}|}{min_{j} |λ_{j} − μ^{(i)}|} ,

womit sich für den durch μ^{(i)} approximierten Eigenwert λ als (theoretisch) erreichbare relative Grenzgenauigkeit

\frac{|Δλ|}{|λ|} := \frac{min_{j} |λ_{j} − μ^{(i)}|}{|λ|} ≈ \frac{max_{j} |λ_{j} − λ|}{|λ|} τ ≤ (\frac{max_{j} |λ_{j}|}{|λ|} + 1) τ .

ergibt. Der betragsgrößte Eigenwert ist damit (theoretisch) bis auf die Größenordnung der Maschinengenauigkeit bestimmbar, die betragskleineren werden ungenauer bestimmt. Für den betragskleinsten Eigenwert ergibt sich als (theoretisch) erreichbare relative Grenzgenauigkeit

\frac{|Δλ|}{|λ|} ≤ (\frac{max_{j} |λ_{j}|}{min_{j} |λ_{j}|} + 1) τ = (cond_{2}(A) + 1) τ .

Bemerkung 6.27: Da μ^{(i)} sich in der Iteration ändert, kann man nicht wie in 27.2.98↓

der unbeschleunigten Iteration nach Satz 6.20/Bemerkung 6.21 auf einmal berechnete Zerlegungsdaten zurückgreifen, sondern muß in jedem Schritt erneut eine vollständige Gleichungslösung (A − μ^{(i)} I 1)^{−1}x^{(i)} durchführen. Dieses Aufwandsproblem läßt sich aber umgehen: man kann eine beliebige n × n-Matrix A durch eine orthogonale Ähnlichkeitstransformation mit O(n^{3}) Operationen zunächst auf Hessenberg-Form (ein unteres Band)

( \begin{matrix}∗ & … & … & ∗ \\ ∗ & ... & ... & ⋮ \\ & ... & ... & ⋮ \\ 0 & & ∗ & ∗ \end{matrix} )

bringen, bei symmetrischen Matrizen ergibt sich 3-Band-Form. Zu Details siehe z.B. [Scw93, Kapitel 6.3.1] oder [Oev96, Kapitel 6.6]. Dann ist jeder Schritt (A − μ^{(i)} I 1)^{−1}x^{(i)} mit O(n^{2}) bzw. O(n) Operationen schnell berechenbar.

2Mit Satz 4.65 ist dann ||Δx^{(i+1)}||/||x^{(i+1)}|| auf die Größenordnung 1 angewachsen.

Da die Ähnlichkeitstransformation A → H = QAQ^{T} auf Hessenberg-Form H mit orthogonalem Q durchgeführt wird, verändern sich die Winkel zwischen den Eigenräumen nicht: die spaltenweise aus den Eigenvektoren aufgebauten Matrizen T_{H} zu H bzw. T_{A} zu A sind durch T_{H} = QT_{A} verknüpft. Mit cond_{2}(T_{H}) = cond_{2}(T_{A}) (vergleiche Aufgabe 31.c) und Satz 6.6 folgt, daß die Konditionierungen der Eigenwertprobleme für A und H übereinstimmen, womit die Transformation keine zusätzlichen Stabilitätsprobleme in die numerische Eigenwertberechnung einbringt.

Bemerkung 6.28: Eine typische Anwendung: aus anderen Verfahren sind Eigenwertapproximationen bekannt. Mit der Wielandt-Rayleigh-Iteration lassen sich diese schnell und stabil verbessern und gleichzeitig Eigenvektoren bestimmen.

6.4 Weitere Verfahren

6.4.1 Das Jacobi-Verfahren für symmetrische Matrizen

Sei A symmetrisch. Durch eine orthogonale Ähnlichkeitstransformation A → A′ = Q^{T} AQ mit

Q = Q(p, q, ϕ) = ( I 1 cos(ϕ)  sin(ϕ) I 1 − sin(ϕ)  cos(ϕ) I 1 ) \begin{matrix}← p \\ ← q \end{matrix}

↑ ↑
p q

wird die “Diagonaldominanz” verstärkt. Bei gegebenem p < q wird der Drehwinkel ϕ gemäß

cos(ϕ) = \frac{1}{\sqrt{1 + t^{2}}} , sin(ϕ) = \frac{t}{\sqrt{1 + t^{2}}}

mit

t = \frac{1}{κ + sign(κ) \sqrt{1 + κ^{2}}} , κ = \frac{a_{pp} − a_{qq}}{2 a_{pq}}

(bzw. t = 0 für a_{pq} = 0 bzw. t = 1 für a_{pp} = a_{qq}) gewählt. Mit diesen Parametern verschwinden die Matrixeinträge a′_{pq} = a′_{qp} = 0 der transformierten Matrix A′ = Q^{T} AQ = (a′_{ij}). Man kann leicht zeigen, daß für t ≠ 0 die Quadratsumme der nicht-diagonalen Elemente verkleinert wird:

∑_{{i,j \atop i≠j}} a′_{ij}^{2} < ∑_{{i,j \atop i≠j}} a_{ij}^{2} .

Durch Hintereinanderschaltung solcher orthogonalen Jacobi-Trans-formationen, in denen (p, q) zyklisch den oberen Dreiecksanteil durchläuft, ergibt sich eine Folge ähnlicher Matrizen A → A′ → A′′ → …, die \underline{gegen Diagonalgestalt} konvergiert, so daß die Eigenwerte letztlich von der Diagonalen abzulesen sind. Zu Details siehe z.B. [ScW92, Kapitel 15.7], [Scw93, Kapitel 6.2] oder [Oev96, Kapitel 6.7].

6.4.2 Das QR-Verfahren

Für eine beliebige Matrix A wird die Ähnlichkeitstransformation A → A′ = Q^{T} AQ durchgeführt, wobei Q einer QR-Zerlegung A = QR entstammt (d.h., A′ = RQ entsteht durch Vertauschung der Faktoren). Durch Hintereinanderschaltung solcher Transformationen entsteht eine Folge ähnlicher Matrizen, die unter gewissen technischen Voraussetzungen gegen obere Dreiecksform (bei symmetrischen Matrizen gegen Diagonalform) konvergieren. Dies ist das schnellste und stabilste Verfahren zur Eigenwertberechnung! Man transformiert dabei zunächst A mit O(n^{3}) Operationen auf Hessenberg- bzw. 3-Band-Form, so daß jeder QR-Schritt nur O(n^{2}) bzw. O(n) Operationen braucht. Mittels spektraler Verschiebungen kann die Konvergenz beschleunigt werden. Zu Details siehe z.B. [Scw93, Kapitel 6.4] oder [Oev96, Kapitel 6.5].

Interpolation

Aufgabe: zu einer Wertetabelle (x_{0}, f_{0}), …, (x_{n}, f_{n}) finde eine Funktion F (x), so daß

• F (x_{i}) = f_{i} und

• max_{x} |F (x) − f(x)| möglichst klein ist, falls f_{i} = f(x_{i}) einer glatten Funktion f entstammt.

Die allgemeine Idee ist, einen Ansatz F (x; c_{0}, …, c_{n}) mit Parametern c_{i} zu verwenden, die aus den Gleichungen F (x_{i}; c_{0}, …, c_{n}) = f_{i} bestimmt werden. Wähle dazu einen n + 1-dimensionalen Funktionenraum mit “Basisfunktionen” ϕ_{i}(x). Der Ansatz

F (x; c_{0}, …, c_{n}) = ∑_{i=0}^{n} c_{i} ϕ_{i}(x)

führt dann auf ein \underline{lineares} Gleichungssystem

( \begin{matrix}ϕ_{0}(x_{0}) & … & ϕ_{n}(x_{0}) \\ ⋮ & ... & ⋮ \\ ϕ_{0}(x_{n}) & … & ϕ_{n}(x_{n}) \end{matrix} ) ( c_{0} ; ⋮ ; c_{n} ) = ( f_{0} ; ⋮ ; f_{n} )

zur Bestimmung der c_{i}.

7.1 Polynominterpolation

Die Ansatzfunktion F (x; c_{0}, …, c_{n}) sei ein Polynom n.ten Grades in x.

Notation 7.1:

Das Interpolationspolynom durch die Stützstellen x_{0}, …, x_{n} wird mit

P_{n}(x) ≡ P_{[x_{0},...,x_{n}]}(x)

bezeichnet.

Mögliche Darstellungen:

P_{n}(x) = ∑_{i=0}^{n} c_{i} x^{i}  (Monomentwicklung),

P_{n}(x) = ∑_{i=0}^{n} c_{i} \frac{(x − x_{0}) ⋯ (x − x_{i−1}) (x − x_{i+1}) ⋯ (x − x_{n})}{(x_{i} − x_{0}) ⋯ (x_{i} − x_{i−1})(x_{i} − x_{i+1}) ⋯ (x_{i} − x_{n})}

(Lagrange-Darstellung),

P_{n}(x) = c_{0} + c_{1} (x − x_{0}) + c_{2} (x − x_{0}) (x − x_{1}) + ⋯
+c_{n} (x − x_{0}) ⋯ (x − x_{n−1}) (Newton-Darstellung).

7.1.1 Entwicklung nach Monomen

Satz 7.2:

Zu (x_{0}, f_{0}), …, (x_{n}, f_{n}) mit paarweise verschiedenen x_{i} existiert ein eindeutiges Interpolationspolynom P_{n}(x) vom Grad ≤ n mit P_{n}(x_{i}) = f_{i},

i = 0, …, n. Es hat die Darstellung P_{n}(x) = ∑_{j=0}^{n} c_{j} x^{j} , wobei c_{0}, …, c_{n}

die Lösungen von

( \begin{matrix}1 & x_{0} & … & x_{0}^{n} \\ ⋮ & ⋮ & ... & ⋮ \\ ⋮ & ⋮ & ... & ⋮ \\ 1 & x_{n} & … & x_{n}^{n} \end{matrix} ) ( c_{0} ; ⋮ ; ⋮ ; c_{n} ) = ( f_{0} ; ⋮ ; ⋮ ; f_{n} )

sind.

Beweis: Das Vandermonde-System P_{n}(x_{i}) = ∑_{j=0}^{n} c_{j} x_{i}^{j} = f_{i} , i = 0, …, n ist

eindeutig lösbar.

Q.E.D.

Diese Darstellung ist numerisch ungünstig, da ein Gleichungssystem zu lösen ist.

7.1.2 Lagrange-Darstellung

Definition 7.3:

L_{j}(x) = ∏_{{k=0 \atop k≠j}}^{n} \frac{x − x_{k}}{x_{j} − x_{k}} , j = 0, …, n

heißen die Lagrange-Polynome zu x_{0}, …, x_{n}.

Satz 7.4: (Lagrange-Interpolation)

Das Interpolationspolynom aus Satz 7.2 hat die Darstellung

P_{n}(x) = ∑_{j=0}^{n} f_{j} L_{j}(x) (Lagrangesche Interpolationsformel).

Beweis: Offensichtlich gilt für die Lagrange-Polynome

L_{j}(x_{i}) = \{ \begin{matrix}1 , i = j , \\ 0 , i ≠ j . \end{matrix}

Damit sind die Interpolationsforderungen ∑_{j} f_{j} L_{j}(x_{i}) = f_{i} erfüllt. Das Polynom ist eindeutig.

Q.E.D.

Bemerkung 7.5: Die Definition L_{j}(x) = ∏_{k≠j} \frac{x−x_{k}}{x_{j}−x_{k}} ist numerisch ungünstig, wenn an mehreren Stellen interpoliert werden soll: man kann nicht auf schon berechnete Werte zurückgreifen. Eine bessere Darstellung mittels Stützkoeffizienten κ_{j} ist (Aufgabe 38):

L_{j}(x) = \frac{\frac{κ_{j}}{x − x_{j}}}{∑_{k=0}^{n} \frac{κ_{k}}{x − x_{k}}} , κ_{j} = ( ∏_{{k=0 \atop k≠j}}^{n}(x_{j} − x_{k}))^{−1} .

Für das Interpolationspolynom folgt

P_{n}(x) = \begin{matrix}∑_{j=0}^{n} & \frac{f_{j} κ_{j}}{x − x_{j}} \\ ∑_{j=0}^{n} & \frac{κ_{j}}{x − x_{j}} \end{matrix} .  (#)

Der wesentliche Aufwand von O(n^{2}) Multiplikationen steckt in der Berechnung der κ_{j}. Liegen diese Daten vor, so ist dann für jedes x das Interpolationspolyom in der Darstellung (#) mit O(n) Multiplikationen berechenbar. Bei \underline{äquidistanten} x_{i} braucht auch die Berechnung der Stützkoeffizienten nur O(n) Operationen (Aufgabe 38.f).

7.1.3 Newton-Darstellung

Definition 7.6:

Zu (x_{0}, f_{0}), …, (x_{n}, f_{n}) mit paarweise verschiedenen x_{i} definiere die von x_{i}, x_{i+1}, …, x_{j} erzeugten (j − i).ten dividierten Differenzen rekursiv durch

f_{[x_{i},...,x_{j}]} := \frac{f_{[x_{i+1},...,x_{j}]} − f_{[x_{i},...,x_{j−1}]}}{x_{j} − x_{i}} , i < j

mit f_{[x_{i}]} = f_{i}:

x_{0} f_{[x_{0}]}
[figure: f_{[x_{0},x_{1}]}]
[figure: x_{1}; f_{[x_{1}]}; f_{[x_{0},x_{1},x_{2}]}]
[figure: f_{[x_{1},x_{2}]}; f_{[x_{0},x_{1},x_{2},x_{3}]}]
[figure: x_{2}; f_{[x_{2}]}; f_{[x_{1},x_{2},x_{3}]}]
[figure: f_{[x_{2},x_{3}]}; ⋮]
x_{3} f_{[x_{3}]}  ⋮
⋮
⋮  ⋮

Hilfssatz 7.7: (Syntheseprinzip)

Das Interpolationspolynom zu x_{i}, …, x_{j} läßt sich aus denen zu x_{i+1}, …, x_{j} und x_{i}, …, x_{j−1} aufbauen:

P_{[x_{i},...,x_{j}]}(x) = \frac{(x − x_{i}) P_{[x_{i+1},...,x_{j}]}(x) + (x_{j} − x) P_{[x_{i},...,x_{j−1}]}(x)}{x_{j} − x_{i}} .

Beweis: Induktion nach der Anzahl der verwendeten Stützstellen. Induktionsschritt: setze x = x_{i}, …, x_{j} ein, wobei sich nach Induktionsvoraussetzung jeweils f_{i}, …, f_{j} ergibt.

Q.E.D.

Hilfssatz 7.8:

Die dividierten Differenzen sind die Leitkoeffizienten der Interpolations-3.2.98↓

polynome: P_{[x_{i},...,x_{j}]}(x) = f_{[x_{i},...,x_{j}]} x^{j−i} + (…) x^{j−i−1} + · · · .

Beweis: Bezeichnet man den Leitkoeffizienten mit c_{[x_{i},...,x_{j}]}, so folgt aus Hilfssatz 7.7 die Rekursion

c_{[x_{i},...,x_{j}]} = \frac{c_{[x_{i+1},...,x_{j}]} − c_{[x_{i},...,x_{j−1}]}}{x_{j} − x_{i}}

der dividierten Differenzen.

Q.E.D.

Folgerung 7.9:

Da das Interpolationspolynom durch x_{i}, …, x_{j} offensichtlich unabhängig von der gewählten Anordnung der Stützstellen ist, ist f_{[x_{i},...,x_{j}]} symmetrisch in den Stützstellen.

Satz 7.10: (Newton-Interpolation)

Das Interpolationspolynom zu (x_{0}, f_{0}), …, (x_{n}, f_{n}) hat die Darstellung

\begin{matrix}P_{[x_{0},...,x_{n}]}(x) = f_{[x_{0}]} + f_{[x_{0},x_{1}]} (x − x_{0}) + f_{[x_{0},x_{1},x_{2}]} (x − x_{0})(x − x_{1}) + ⋯ \\ ⋯ + f_{[x_{0},...,x_{n}]} (x − x_{0}) ⋯ (x − x_{n−1}) . \end{matrix}

Beweis: Es gilt

P_{[x_{0},...,x_{n}]}(x) − f_{[x_{0},...,x_{n}]} (x − x_{0}) ⋯ (x − x_{n−1}) = P_{[x_{0},...,x_{n−1}]}(x) ,

da dies nach Hilfssatz 7.8 ein Polynom vom Grand n − 1 ist und Einsetzen von x = x_{0}, …, x_{n−1} jeweils f_{0}, …, f_{n−1} liefert. Aus

P_{[x_{0},...,x_{n}]}(x) = P_{[x_{0},...,x_{n−1}]}(x) + f_{[x_{0},...,x_{n}]} (x − x_{0}) ⋯ (x − x_{n−1})

folgt induktiv die Behauptung.

Q.E.D.

Satz 7.11: (Restglieddarstellung, Interpolationsfehler)

Die Wertetabelle (x_{0}, f_{0}), …, (x_{n}, f_{n}) entstamme einer glatten Funktion f, also f_{i} = f(x_{i}).

a) Für (n + 1)-fach stetig differenzierbares f gilt

f(x) − P_{[x_{0},...,x_{n}]}(x) = \frac{f^{(n+1)}(ξ)}{(n + 1)!} (x − x_{0}) ⋯ (x − x_{n})

mit einem Zwischenwert ξ ∈ ( min(x_{0}, …, x_{n}, x), max(x_{0}, …, x_{n}, x)).

b) Für n-fach stetig differenzierbares f gilt f_{[x_{0},...,x_{n}]} = \frac{f^{(n)}(ξ)}{n!} mit

einem Zwischenwert ξ ∈ ( min_{i=0..n} x_{i} , max_{i=0..n} x_{i}).

120 KAPITEL 7. INTERPOLATION Beweis: a) Für x ∈ {x_{0}, …, x_{n}} ist nichts zu zeigen. Für andere x betrachte

Δ(y) := f(y) − P_{[x_{0},...,x_{n}]}(y) − c(x) (y − x_{0}) ⋯ (y − x_{n})

mit

c(x) = \frac{f(x) − P_{[x_{0},...,x_{n}]}(x)}{(x − x_{0}) ⋯ (x − x_{n})} .

Mit Δ(x_{0}) = … = Δ(x_{n}) = Δ(x) = 0 gilt

Δ hat (mindestens) n + 2 Nullstellen
⟹^{(Rolle)} Δ′ hat dazwischen mindestens n + 1 Nullstellen
⋮ ⋮ ⋮
⟹^{(Rolle)} Δ^{(n+1)} hat dazwischen mindestens eine Nullstelle ξ.

Mit 0 = Δ^{(n+1)}(ξ) = f^{(n+1)}(ξ) − c(x) (n + 1)! folgt

c(x) = \frac{f(x) − P_{[x_{0},...,x_{n}]}(x)}{(x − x_{0}) ⋯ (x − x_{n})} = \frac{f^{(n+1)}(ξ)}{(n + 1)!} .

b) Interpolation durch (x_{0}, f_{0}), …, (x_{n−1}, f_{n−1}) liefert nach a)

f(x) = P_{[x_{0},...,x_{n−1}]}(x) + \frac{f^{(n)}(ξ)}{n!} (x − x_{0}) ⋯ (x − x_{n−1}) .

Im Beweis von Satz 7.10 wurde

P_{[x_{0},...,x_{n}]}(x) = P_{[x_{0},...,x_{n−1}]}(x) + f_{[x_{0},...,x_{n}]} (x − x_{0}) ⋯ (x − x_{n−1}) gezeigt. Aus

f(x) − P_{[x_{0},...,x_{n}]}(x) = (\frac{f^{(n)}(ξ)}{n!} − f_{[x_{0},...,x_{n}]}) (x − x_{0}) ⋯ (x − x_{n−1})

folgt mit x = x_{n} die Behauptung.

Q.E.D.

Bemerkung 7.12: Die Newton-Darstellung

\begin{matrix}f(x) = \overbrace{f_{[x_{0}]} + f_{[x_{0},x_{1}]} (x − x_{0}) + ⋯ + f_{[x_{0},...,x_{n}]} (x − x_{0}) ⋯ (x − x_{n−1})}^{P_{[x_{0},...,xn]}(x)} \\ + \frac{f^{(n+1)}(ξ)}{(n + 1)!} (x − x_{0}) ⋯ (x − x_{n}) \end{matrix}

mit f_{[x_{0},...,x_{k}]} = \frac{f^{(k)}(ξ_{k})}{k!} ist eine Verallgemeinerung der Taylor-Entwicklung, die sich im Grenzübergang x_{1}, …, x_{n} → x_{0} ergibt.

Bemerkung 7.13: Betrachte ein Intervall [a, b] und \underline{äquidistante} Stützstellen x_{i} = a + \frac{i}{n}(b − a), i = 0, …, n. Es gibt einfache Beispiele glatter Funktionen f, für die

max_{x∈[a,b]} | f(x) − P_{[x_{0},...,x_{n}]}(x) | ⟶^{n→∞} ∞

gilt! Beispiel (nach Runge): f(x) = 1/(1 + x^{2}) auf [a, b] = [−5, 5]:

{n = 10 \atop n = 6}

Merke: Bei wachsender Zahl \underline{äquidistanter} Stützstellen ist keine \underline{gleichmäßige} Konvergenz der Polynominterpolierenden zu erwarten.

Bemerkung 7.14: Der Grund hierfür ist das für n ≫ 1 stark oszillierende Verhalten von ω(x) = (x − x_{0}) ⋯ (x − x_{n}) an den Rändern:

Außerhalb des Stützstellenintervalls (min_{i} x_{i}, max_{i} x_{i}) wächst |ω(x)| schnell an !

Merke: Polynominterpolation mit äquidistanten Stützstellen nicht zur Extrapolation weit außerhalb des Stützstellenbereichs verwenden ! Für n ≫ 1 ist äquidistante Polynominterpolation nur im Zentrum des Stützstellenbereiches brauchbar !

Bemerkung 7.15: (Optimale Stützstellenwahl) Die Stützstellen x_{i} seien wählbar. Aufgabe: finde zu einem gegebenen Intervall [a, b] Stützstellen x_{0}, …, x_{n}, mit denen

max_{x∈[a,b]} |(x − x_{0}) ⋯ (x − x_{n})|

minimal wird. Antwort: wähle

x_{i} = \frac{a + b}{2} − \frac{b − a}{2} cos ( \frac{(2i + 1) π}{2 (n + 1)} ) ∈ (a, b) , i = 0, …, n .  (#)

Dann gilt

(x − x_{0}) ⋯ (x − x_{n}) = \frac{1}{2^{n}} (\frac{b − a}{2})^{n+1} T_{n+1} (\frac{2x − a − b}{b − a})

mit den Tschebyscheff-Polynomen

T_{0}(y) = 1 , T_{1}(y) = y , T_{2}(y) = 2y^{2} − 1 , T_{3}(y) = 4y^{3} − 3y , …,

die für |y| ≤ 1 durch^{1}

T_{n+1}(y) := cos( (n + 1) arccos(y) ) , n + 1 = 0, 1, 2, …

mit den offensichtlichen Nullstellen

y_{i} = cos (\frac{(2i + 1) π}{2 (n + 1)} ) ∈ (−1, 1) , i = 0, …, n

definiert sind:

\overline{}x a  b −1 1 T_{n+1} (\frac{2x − a − b}{b − a})

1Es gilt, daß cos((n+1) α) für jedes n+1 ∈ ℕ als Summe von Potenzen in cos(α) geschrieben werden kann:

cos(2 α) = 2 cos^{2}(α) − 1 = T_{2}(cos(α)) , cos(3 α) = 4 cos^{3}(α) − 3 cos(α) = T_{3}(cos(α)) , ….

Damit liefert diese Definition wirklich ein Polynom in y. Aus dieser Darstellung folgt die entscheidende Eigenschaft |T_{n+1}(y)| ≤ 1 ∀ y ∈ [−1, 1].

Intuitiv: die Tschebyscheff-Nullstellen (#) sind zu den Intervallenden hin dichter verteilt, was die starken Randoszillationen unterdrückt. Man kann leicht zeigen (z.B. [Oev96, Satz 8.5]), daß dann

max_{x∈[a,b]} |x − x̃_{0}| ⋯ |x − x̃_{n}| ≥ max_{x∈[a,b]} |x − x_{0}| ⋯ |x − x_{n}| = \frac{1}{2^{n}} (\frac{b − a}{2})^{n+1}

für jedes alternative Stützstellensystem x̃_{0}, …, x̃_{n} gilt.

7.1.4 Praktische Durchführung der Interpolation

Bemerkung 7.16: (Berechnung dividierter Differenzen) Zur Berechnung von P_{[x_{0},...,x_{n}]}(x) fordert das Newton-Schema zunächst die Berechnung von f_{[x_{0}]}, …, f_{[x_{0},...,x_{n}]} mit ≈ n^{2}/2 Multiplikationen. Das definierende Schema

j = 1  j = 2  …  j = n

f_{0} = f_{[x_{0}]}

↘
f_{1} = f_{[x_{1}]} → f_{[x_{0},x_{1}]}
↘  ↘
f_{2} = f_{[x_{2}]} → f_{[x_{1},x_{2}]} → f_{[x_{0},x_{1},x_{2}]}
↘  ↘  ↘
⋮  →  ...  →  ...  → ...
↘  ↘  ↘  ↘
f_{n} = f_{[x_{n}]} → f_{[x_{n−1},x_{n}]} →  …  → … → f_{[x_{0},...,x_{n}]}

der dividierten Differenzen kann spaltenweise durchlaufen werden, wobei im j.ten Schritt die ursprünglichen Daten f_{j}, …, f_{n} mit den j.ten dividierten Differenzen überschrieben werden:

(∗ gegeben (x_{0}, f_{0}), …, (x_{n}, f_{n}) ∗)
for j := 1 to n do
for i := n downto j do f_{i} := (f_{i} − f_{i−1})/(x_{i} − x_{i−j});
(∗ Ergebnis: nun gilt f_{i} = f_{[x_{0},...,x_{i}]} , i = 0, …, n. ∗)

Bemerkung 7.17: (Auswertung des Interpolationspolynoms) Bei vorliegenden dividierten Differenzen kann die Auswertung von

P_{[x_{0},...,x_{n}]}(x) = f_{[x_{0}]} + f_{[x_{0},x_{1}]} (x − x_{0}) + ⋯ + f_{[x_{0},...,x_{n}]} (x − x_{0}) ⋯ (x − x_{n−1})

über die Horner-artige Darstellung

(… (f_{[x_{0},...,x_{n}]} (x − x_{n−1}) + f_{[x_{0},...,x_{n−1}]})(x − x_{n−2}) + …) (x − x_{0}) + f_{[x_{0}]}

des Polynoms für jedes x mit n Multiplikationen geschehen:

p := f_{[x_{0},...,x_{n}]} ; for i := n − 1 downto 0 do p := (x − x_{i}) p + f_{[x_{0},...,x_{i}]} ;

(∗ Ergebnis: p = P_{[x_{0},...,x_{n}]}(x) . ∗)

Bemerkung 7.18: Die dividierten Differenzen f_{[x_{0}]}, f_{[x_{0},x_{1}]}, …, f_{[x_{0},...,x_{n}]} seien berechnet und in f_{i} := f_{[x_{0},...,x_{i}]} gespeichert. Nimmt man nachträglich ein weiteres Wertepaar (x_{n+1}, f_{n+1}) hinzu, so muß zur Interpolation durch die erweiterte Stützstellenmenge die nächste dividierte Differenz f_{[x_{0},...,x_{n+1}]} aus den vorliegenden Daten berechnet werden. Mit Definition 7.6 und Folgerung 7.9 gilt die Rekursion

f_{[x_{0},...,x_{i},x_{n+1}]} = \frac{f_{[x_{0},...,x_{i−1},x_{n+1}]} − f_{[x_{0},...,x_{i}]}}{x_{n+1} − x_{i}} , i = 1, …, n

mit dem Start f_{[x_{0},x_{n+1}]} = (f_{[x_{n+1}]} − f_{[x_{0}]})/(x_{n+1} − x_{0}) für i = 0. Überschreibt man f_{n+1} nacheinander mit den Werten f_{[x_{0},...,x_{i},x_{n+1}]}, so erhält man das benötigte Datum mit n + 1 Multiplikationen^{2}:

for i := 0 to n do f_{n+1} := \frac{f_{n+1} − f_{i}}{x_{n+1} − x_{i}} ;

(∗ Ergebnis: nun gilt f_{n+1} = f_{[x_{0},...,x_{n},x_{n+1}]} ∗).

Mit weiteren n + 1 Multiplikationen ist dann wie oben P_{[x_{0},...,x_{n},x_{n+1}]}(x) auszuwerten. Ein nachträgliches Hinzufügen einer weiteren Stützstelle ist damit in der Newton-Interpolation schnell mit ≈ 2n Multiplikationen durchführbar.

for i := 0 to j − 1 do f_{j} := \frac{f_{j} − f_{i}}{x_{j} − x_{i}} ;

2Selbstverständlich können alternativ zu Bemerkung 7.16 auch f_{[x_{0}]}, f_{[x_{0},x_{1}]}, …, f_{[x_{0},...,x_{n}]} auf diese Weise berechnet werden:

(∗ gegeben (x_{0}, f_{0}), …, (x_{n}, f_{n}) ∗)

for j := 1 to n do (∗ Ergebnis: nun gilt f_{j} = f_{[x_{0},...,x_{j}]} , j = 0, …, n. ∗)

Bemerkung 7.19: Die numerische Berechnung dividierter Differenzen im Newton-Schema ist durch Auslöschung gefährdet, wenn die Stützwerte f_{0}, …, f_{n} nur schwach variieren.

Dieses Stablitätsproblem kann vermindert werden, in dem man die Berechnung der dividierten Differenzen nicht explizit durchführt, sondern geschickt in die Polynomauswertung einbaut:

Bemerkung 7.20: Ist P_{[x_{0},...,x_{n}]}(x) nur \underline{an einer einzelnen Stelle} x auszuwer-

↓5.2.98

ten, so bietet sich das Neville-Schema an. Nach Hilfssatz 7.7 gilt

P_{[x_{j},...,x_{i}]}(x) = \frac{x − x_{j}}{x_{i} − x_{j}} P_{[x_{j+1},...,x_{i}]}(x) + \frac{x_{i} − x}{x_{i} − x_{j}} P_{[x_{j},...,x_{i−1}]}(x) ,

d.h., mit den Abkürzungen t_{ij} = P_{[x_{j},...,x_{i}]}(x), 0 ≤ j ≤ i ≤ n:

t_{ij} = \frac{x − x_{j}}{x_{i} − x_{j}} t_{i,j+1} + \frac{x_{i} − x}{x_{i} − x_{j}} t_{i−1,j} = t_{i,j+1} + \frac{x_{i} − x}{x_{i} − x_{j}} (t_{i−1,j} − t_{i,j+1}) .

Diese Werte bilden das zeilenweise auszuwertende Schema

t_{00} = f_{0}
↓
t_{10} ← t_{11} = f_{1}
↓  ↓
t_{20} ← t_{21} ← t_{22} = f_{2}
↓  ↓  ↓
⋮  ⋮  ⋮  ...
↓  ↓  ↓
t_{n0} ← t_{n1} ← t_{n2} ← … ← t_{nn} = f_{n}

wobei t_{n0} = P_{[x_{0},...,x_{n}]}(x) den gewünschten Interpolationswert liefert. Speichert man die i.te Zeile als Array (T_{0}, …, T_{i}) mit T_{j} = t_{ij}, so ergibt sich mit Überschreiben des Arrays die Implementierung:

for i := 0 to n do begin

T_{i} := f_{i} ;

for j := i − 1 downto 0 do T_{j} := T_{j+1} + \frac{x − x_{j}}{x_{i} − x_{j}} (T_{j} − T_{j+1}) ;

end;

(∗ Ergebnis: T_{0} = P_{[x_{0},...,x_{n}]}(x) . ∗)

Um einen weiteren Interpolationspunkt (x_{n+1}, f_{n+1}) hinzuzufügen, braucht nur die i-Schleife bis n+1 erweitert werden (zusätzliche 2n+2 Multiplikationen). Die nächste Zeile (T_{0}, …, T_{n+1}) des Neville-Schemas berechnet sich aus der schon vorliegenden letzten Zeile (T_{0}, …, T_{n}). Damit kann die for i := 0 to n -Schleife (die eine feste Laufgrenze n benötigt) durch eine flexiblere while-Schleife ersetzt werden, die i heraufzählt und solange zusätzliche Interpolationspunkte hinzunimmt, bis ein geeignetes Abbruchkriterium erfüllt ist.

Übersicht 7.21: Vergleich der praktisch einsetzbaren Varianten zur Berechnung von P_{[x_{0},...,x_{n}]}(x):

Lagrange-Interpolation gemäß Bemerkung 7.5:

• Berechnung der Stützkoeffizienten κ_{j} mit ≈ n^{2}/2 Multiplikationen (vergleiche [Oev96,Aufgabe 81]).

± Im Spezialfall äquidistanter Stützstellen lassen sich die Stützkoeffizienten in der Laufzeit O(n) berechnen. Dieser Spezialfall mit n ≫ 1 ist für die Praxis jedoch irrelevant, da bei äquidistanten Stützstellen die Polynominterpolation höchstens auf einem kleinen Bereich “im Zentrum des Stützstellenbereichs” zu akzeptablen Approximationen führt.

+ Mehrfachinterpolationen sind schnell durchführbar: bei vorliegenden Stützkoeffizienten ist P_{[x_{0},...,x_{n}]}(x) für jedes x mit ≈ 2n Multiplikationen schnell auswertbar.

Newton-Interpolation:

• Berechnung der dividierten Differenzen mit ≈ n^{2}/2 Multiplikationen. − Auslöschungsgefahr bei schwach variierenden Stützwerten f_{0}, …, f_{n}. + Mehrfachinterpolationen sind schnell durchführbar: bei vorliegenden di-

vidierten Differenzen ist P_{[x_{0},...,x_{n}]}(x) für jedes x mit n Multiplikationen schnell auswertbar.

+ Zusätzliche Stützstellen können mit ≈ 2n Multiplikationen schnell nachträglich eingefügt werden.

Neville-Schema:

• Berechnung von P_{[x_{0},...,x_{n}]}(x) mit ≈ n^{2} Multiplikationen.

+ Da die dividierten Differenzen nicht explizit berechnet werden, wird die

Gefahr der Auslöschung vermindert. − Mehrfachinterpolationen sind nicht schnell durchführbar: für jeden Inter-

polationspunkt x werden ≈ n^{2} Multiplikationen benötigt. + Zusätzliche Stützstellen können mit ≈ 2n Multiplikationen schnell nach-

träglich eingefügt werden.

In der Praxis nimmt man den doppelten Aufwand des Neville-Schemas zugunsten der höheren Stabilität in Kauf.

Splines

8.1 Spline-Räume

Sei C^{j}([a, b]) der Raum der j-fach stetig diff’baren reellen Funktionen über dem Intervall [a, b] (einseitige Stetigkeit/Diff’barkeit an den Endpunkten).

Definition 8.1: (Die Spline-Räume)

Der Raum der (polynomialen) Spline-Funktionen vom Grad k ∈ ℕ zu reellen Stützstellen x_{0} < … < x_{n} ist

S_{[x_{0},...,x_{n}]}^{[k]} = { S ∈ C^{k−1}([x_{0}, x_{n}]) ; S ist auf [x_{0}, x_{1}], …, [x_{n−1}, x_{n}]

jeweils ein Polynom vom Grad ≤ k } .

Auf [x_{i}, x_{i+1}] hat ein Spline S ∈ S_{[x_{0},...,x_{n}]}^{[k]} die Darstellung

S(x) = β_{i0} + β_{i1} x + ⋯ + β_{ik} x^{k} .

Die Forderung S ∈ C^{k−1}([x_{0}, x_{n}]) bedeutet, daß die ersten k − 1 Ableitungen \underline{an den Nahtstellen x_{1}, …, x_{n−1}} stetig ineinander übergehen müssen.

Beispiel 8.2: Für k = 1 muß nur die Funktion selbst stetig sein:

[figure: x_{0}; x_{1}; x_{2}; x_{3}; linearer Spline:; x_{0}; x_{1}; x_{2}; x_{3}; dies ist kein linearer Spline:]

Satz 8.3:

Die Dimension des Funktionenraums S_{[x_{0},...,x_{n}]}^{[k]} ist n + k.

Beweis: Definiere die n (k + 1) stückweisen Polynome

σ_{ij}(x) := \{ \begin{matrix}x^{j} & für x ∈ [x_{i}, x_{i+1}] , \\ 0 & für x ∉ [x_{i}, x_{i+1}] , \end{matrix} i = 0, …, n − 1 , j = 0, …, k

welche offensichtlich linear unabhängige Funktionen sind. Jedes S ∈ S_{[x_{0},...,x_{n}]}^{[k]}

hat eine Darstellung der Form S(x) = ∑_{i=0}^{n−1} ∑_{j=0}^{k} β_{ij} σ_{ij}(x). Mit

S(x_{i}+0) := lim_{{h→0 \atop h>0}} S(x_{i}+h) = ∑_{j=0}^{k} β_{ij} x^{j} , S(x_{i}−0) := lim_{{h→0 \atop h>0}} S(x_{i}−h) = ∑_{j=0}^{k} β_{i−1,j} x^{j}

liefern die k Stetigkeitsforderungen

S(x_{i} + 0) − S(x_{i} − 0) = ∑_{j=0}^{k}( β_{ij} − β_{i−1,j} ) x_{i}^{j} = 0 ,

S′(x_{i} + 0) − S′(x_{i} − 0) = ∑_{j=1}^{k}( β_{ij} − β_{i−1,j} ) j x_{i}^{j−1} = 0 ,
⋮  ⋮
S^{(k−1)}(x_{i} + 0) − S^{(k−1)}(x_{i} − 0) = ∑_{j=k−1}^{k}( β_{ij} − β_{i−1,j} ) j! x_{i}^{j−k} = 0 ,

d.h.,

( \begin{matrix}1 & x_{i} & x_{i}^{2} & x_{i}^{3} & … & x_{i}^{k} \\ 1 & 2 x_{i} & 3 x_{i}^{2} & … & k x_{i}^{k−1} \\ 2 & 6 x_{i} & … & k(k − 1) x_{i}^{k−2} \\ ... & ... & ⋮ \\ (k − 1)! & k! x_{i} \end{matrix} ) ( β_{i0} − β_{i−1,0} ; β_{i1} − β_{i−1,1} ; ⋮ ; ⋮ ; β_{ik} − β_{i−1,k} ) = ( 0 0 ⋮ ⋮ 0 )

an jeder der n − 1 Nahtstellen x_{1}, …, x_{n−1} einen Satz von k \underline{unabhängigen} linearen Gleichungen für die insgesamt n (k + 1) Koeffizienten β_{00}, …, β_{n−1,k}. Der Rang des gesamten Gleichungssystems ist k (n − 1), womit nur n (k + 1) − k (n − 1) = n + k freie Parameter verbleiben.

Q.E.D.

8.2 B-Splines

Ziel: algorithmische Konstruktion von Basis-Funktionen (“B-Splines”) in S_{[x_{0},...,x_{n}]}^{[k]}. Diese lassen sich rekursiv aus jeweils 2 B-Splines in S_{[x_{0},...,x_{n}]}^{[k−1]} zusammensetzen:

Definition 8.4: (B-Splines)

Zu Stützstellen … < x_{i} < x_{i+1} < … definiere rekursiv

\begin{aligned}B_{[x_{i},...,x_{i+k+1}]}^{[k]}(x) & = & \frac{x − x_{i}}{x_{i+k} − x_{i}} B_{[x_{i},...,x_{i+k}]}^{[k−1]}(x) \\ & & + \frac{x_{i+k+1} − x}{x_{i+k+1} − x_{i+1}} B_{[x_{i+1},...,x_{i+k+1}]}^{[k−1]}(x) \end{aligned}

mit den Treppenfunktionen B_{[x_{i},x_{i+1}]}^{[0]}(x) = \{ \begin{matrix}1 & für x ∈ [x_{i}, x_{i+1}) \\ 0 & sonst . \end{matrix}

Typische Plots für k = 1, …, 4: siehe Bild 8.1. Zur Notation: [k] ist der Spline-Grad, [x_{i}, …, x_{i+k+1}] deutet die Stützstellen an, die rekursiv in die Definition des B-Splines eingehen. Punkt b) des nächsten Satzes besagt, daß sie auch den Träger dieser Funktion angeben:

Satz 8.5: (Einige Eigenschaften der B-Splines)

Es gilt für alle Grade k ≥ 1:

a) B_{[x_{i},...,x_{i+k+1}]}^{[k]} ∈ S_{[...,x_{i},...,x_{i+k+1},...]}^{[k]} .

b) B_{[x_{i},...,x_{i+k+1}]}^{[k]}(x) = 0 für x ∉ [x_{i}, x_{i+k+1}] .

c) B_{[x_{i},...,x_{i+k+1}]}^{[k]}(x) ∈ (0, 1] für x ∈ (x_{i}, x_{i+k+1}) .

d) ∑_{i=−∞}^{∞}B_{[x_{i},...,x_{i+k+1}]}^{[k]}(x) = ∑_{i=j−k}^{j}B_{[x_{i},...,x_{i+k+1}]}^{[k]}(x) = 1 für alle x ∈ [x_{j}, x_{j+1}] .

e) \frac{d}{dx}B_{[x_{i},...,x_{i+k+1}]}^{[k]}(x) = k (\frac{B_{[x_{i},...,x_{i+k}]}^{[k−1]}(x)}{x_{i+k} − x_{i}} − \frac{B_{[x_{i+1},...,x_{i+k+1}]}^{[k−1]}(x)}{x_{i+k+1} − x_{i+1}} ) .

Beweis: b) Mit Def. 8.4 zerlegt sich B_{[x_{i},...,x_{i+k+1}]}^{[k]}(x) rekursiv in eine Summe

über die Treppen B_{[x_{i},x_{i+1}]}^{[0]}(x), B_{[x_{i+1},x_{i+2}]}^{[0]}(x), …, B_{[x_{i+k},x_{i+k+1}]}^{[0]}(x), die für x ∉ [x_{i}, x_{i+k+1}) alle verschwinden. Der Fall x = x_{i} folgt sofort aus Def. 8.4.

d) Für x ∈ [x_{j}, x_{j+1}] gilt

∑_{i=−∞}^{∞} B_{[x_{i},...,x_{i+k+1}]}^{[k]}(x) = ∑_{i=j−k}^{j} B_{[x_{i},...,x_{i+k+1}]}^{[k]}(x) ,

B_{[x_{0},x_{1},x_{2}]}^{[1]} B_{[x_{1},x_{2},x_{3}]}^{[1]}  B_{[x_{2},x_{3},x_{4}]}^{[1]} B_{[x_{0},x_{1},x_{2},x_{3}]}^{[2]}  B_{[x_{1},x_{2},x_{3},x_{4}]}^{[2]}  B_{[x_{2},x_{3},x_{4},x_{5}]}^{[2]} B_{[x_{0},x_{1},x_{2},x_{3},x_{4}]}^{[3]}  B_{[x_{1},x_{2},x_{3},x_{4},x_{5}]}^{[3]}  B_{[x_{2},x_{3},x_{4},x_{5},x_{6}]}^{[3]} B_{[x_{0},x_{1},x_{2},x_{3},x_{4},x_{5}]}^{[4]}  B_{[x_{1},x_{2},x_{3},x_{4},x_{5},x_{6}]}^{[4]}  B_{[x_{2},x_{3},x_{4},x_{5},x_{6},x_{7}]}^{[4]} 1 1 1 1  x_{0}  x_{1} x_{2} x_{3}  x_{4} x_{0}  x_{1} x_{2} x_{3}  x_{4} x_{5} x_{0}  x_{1} x_{2} x_{3}  x_{4} x_{5}  x_{6} x_{0}  x_{1} x_{2} x_{3}  x_{4} x_{5}  x_{6}  x_{7}

Bild 8.1: B-Splines. da mit b) alle anderen Summanden verschwinden. Mit Def. 8.4 und Umsummation i + 1 → i des zweiten Terms folgt die Rückführung k → k − 1:

∑_{i=−∞}^{∞} B_{[x_{i},...,x_{i+k+1}]}^{[k]}(x)

= ∑_{i=−∞}^{∞} \frac{x − x_{i}}{x_{i+k} − x_{i}} B_{[x_{i},...,x_{i+k}]}^{[k−1]}(x) + ∑_{i=−∞}^{∞} \frac{x_{i+k+1} − x}{x_{i+k+1} − x_{i+1}} B_{[x_{i+1},...,x_{i+k+1}]}^{[k−1]}(x)

= ∑_{i=−∞}^{∞} (\frac{x − x_{i}}{x_{i+k} − x_{i}} + \frac{x_{i+k} − x}{x_{i+k} − x_{i}} ) B_{[x_{i},...,x_{i+k}]}^{[k−1]}(x) = ∑_{i=−∞}^{∞} B_{[x_{i},...,x_{i+k}]}^{[k−1]}(x) .

Für die Treppen k = 0 ergibt die Summe offensichtlich 1.

c) Ist für k = 0 klar. Induktionsschritt k −1 → k: in Def. 8.4 werden nichtnegative Terme addiert, von denen höchstens einer verschwindet. Wegen d) können dabei keine Werte > 1 angenommen werden.

e) Mit Def. 8.4 folgt für

\begin{aligned}Δ_{[x_{i},...,x_{i+k+1}]}^{[k]}(x) & := & \frac{d}{dx}B_{[x_{i},...,x_{i+k+1}]}^{[k]}(x) \\ & & − k ( \frac{B_{[x_{i},...,x_{i+k}]}^{[k−1]}(x)}{x_{i+k} − x_{i}} − \frac{B_{[x_{i+1},...,x_{i+k+1}]}^{[k−1]}(x)}{x_{i+k+1} − x_{i+1}} ) \end{aligned}

die Rekursion

\begin{aligned}Δ_{[x_{i},...,x_{i+k+1}]}^{[k]}(x) & = & \frac{x − x_{i}}{x_{i+k} − x_{i}} Δ_{[x_{i},...,x_{i+k}]}^{[k−1]}(x) \\ & & + \frac{x_{i+k+1} − x}{x_{i+k+1} − x_{i+1}} Δ_{[x_{i+1},...,x_{i+k+1}]}^{[k−1]}(x) \end{aligned}

mit dem leicht zu verifizierenden Start Δ_{[x_{i},x_{i+1},x_{i+2}]}^{[1]}(x) ≡ 0.

a) Aus Def. 8.4 folgt induktiv, daß B_{[x_{i},...,x_{i+k+1}]}^{[k]} stückweise ein Polynom vom Grad ≤ k ist. Mit e) folgt die Stetigkeit der ersten k − 1 Ableitungen von B_{[x_{1},...,x_{i+k−1}]}^{[k]} durch Rückführung auf die offensichtlich stetigen “Dachfunktio-

nen” B_{[x_{i},x_{i+1},x_{i+2}]}^{[1]}.

Q.E.D.

Bemerkung 8.6: B-Splines vom Grad k sind lokalisierte Funktionen (Eigenschaft b): sie werden nur von k + 1 Teilintervallen getragen und gehen außerhalb dieses Bereiches (k − 1)-fach stetig diff’bar in die Nullfunktion über (d.h., B_{[...]}^{[k]} ∈ C^{k−1}(ℝ)). Betrachtet man z.B. eine Linearkombination S(x) =

∑_{j} β_{j} B_{[x_{j},...,x_{j+k+1}]}^{[k]}(x), so reduziert sich diese Summe an jeder Stelle x auf k+1 Terme. Für x ∈ [x_{i}, x_{i+1}] gilt speziell

S(x) = ∑_{j=i−k}^{i} β_{j} B_{[x_{j},...,x_{j+k+1}]}^{[k]}(x) ,

da alle anderen B-Splines an der Stelle x verschwinden. Diese Lokalisierung hat in Anwendungen (z.B., Interpolation) den angenehmen Effekt, daß man oft auf dünnbesetzte Gleichungssysteme stößt, die schnell lösbar sind.

Die Auswertung einer Linearkombination von B-Splines kann im Prinzip durch die rekursive Definition 8.4 geschehen, wird aber effizienter folgendermaßen durchgeführt:

Satz 8.7: (de Boor-Algorithmus zur Auswertung von Splines)

Für x ∈ [x_{i}, x_{i+1}) wird der Wert einer Linearkombination von B-Splines

S(x) = ∑_{j=i−k}^{i} β_{j} B_{[x_{j},...,x_{j+k+1}]}^{[k]}(x)

durch die Rekursion

for j := i − k to i do β_{j}^{[0]} := β_{j} ;
for r := 0 to k − 1 do

for j = i downto i − k + r + 1 do

β_{j}^{[r+1]} := \frac{(x_{j+k−r} − x) β_{j−1}^{[r]} + (x − x_{j}) β_{j}^{[r]}}{x_{j+k−r} − x_{j}} ;

geliefert: S(x) = β_{i}^{[k]} .

Beweis: Es wird gezeigt, daß für r = 0, …, k

S(x) = ∑_{j=i−k+r}^{i} β_{j}^{[r]} B_{[x_{j},...,x_{j+k+1−r}]}^{[k−r]}(x)  (#)

gilt, was für r = k die Behauptung beweist: S(x) = β_{i}^{[k]} B_{[x_{i},x_{i+1}]}^{[0]}(x) = β_{i}^{[k]}. Für r = 0 ist (#) richtig. Mit Def. 8.4 und der Umsummierung j → j −1 des zweiten Terms ergibt sich der Induktionsschritt von r nach r + 1:

S(x) = ∑_{j=i−k+r}^{i} β_{j}^{[r]} B_{[x_{j},...,x_{j+k+1−r}]}^{[k−r]}(x)

\begin{aligned}= & ∑_{j=i−k+r+1}^{i} β_{j}^{[r]} \frac{x − x_{j}}{x_{j+k−r} − x_{j}} B_{[x_{j},...,x_{j+k−r}]}^{[k−r−1]}(x) \\ & + ∑_{j=i−k+r}^{i−1} β_{j}^{[r]} \frac{x_{j+k+1−r} − x}{x_{j+k+1−r} − x_{j+1}} B_{[x_{j+1},...,x_{j+k+1−r}]}^{[k−r−1]}(x) \end{aligned}

= ∑_{j=i−k+r+1}^{i} \frac{(x − x_{j}) β_{j}^{[r]} + (x_{j+k−r} − x) β_{j−1}^{[r]}}{x_{j+k−r} − x_{j}} B_{[x_{j},...,x_{j+k−r}]}^{[k−r−1]}(x)
= ∑_{j=i−k+r+1}^{i} β_{j}^{[r+1]} B_{[x_{j},...,x_{j+k−r}]}^{[k−r−1]}(x) .

Q.E.D.

Bemerkung 8.8: Damit ist zur Spline-Berechnung das Dreiecksschema

r = 0 β_{i−k} β_{i−k+1} … β_{i}
↘ ↓  ↘ ↓
r = 1 β_{i−k+1}^{[1]} … β_{i}^{[1]}
↘ ↓  ↘ ↓
⋮ ... ⋮
↘ ↓
r = k β_{i}^{[k]}

auszuwerten, in dem rechts unten der gesuchte Spline-Wert zu finden ist. Überschreibt man die Koeffizienten β_{j} mit den neuen Werten β_{j}^{[r]} und formuliert die Rekursionsformel etwas um, so reduziert sich der de Boor-Algorithmus 8.7 zu

for r := 0 to k − 1 do

for j := i downto i − k + r + 1 do

β_{j} := β_{j} + \frac{x_{j+k−r} − x}{x_{j+k−r} − x_{j}} (β_{j−1} − β_{j}) ;

(∗ Ergebnis: S(x) = β_{i} für x ∈ [x_{i}, x_{i+1}). ∗)

Eine Spline-Auswertung braucht damit lediglich k (k + 1) Multiplikationen.

Die in Def. 8.4 definierten B-Splines bilden ein System unabhängiger Spline-Funktionen. Ziel: erzeuge hiermit eine Basis von S_{[x_{0},...,x_{n}]}^{[k]}. Problem: für eine \underline{endliche} Stützstellenmenge x_{0} < … < x_{n} lassen sich die B-Splines

B_{[x_{0},...,x_{k+1}]}^{[k]}, B_{[x_{1},...,x_{k+2}]}^{[k]}, …, B_{[x_{n−k−1},...,x_{n}]}^{[k]}

bilden. Dies sind aber nur n − k Funktionen, während die Dimension von S_{[x_{0},...,x_{n}]}^{[k]} nach Satz 8.3 n + k ist. Es fehlen noch 2k Basisfunktionen! Eine Möglichkeit ist, die Stützstellenmengen willkürlich um 2k beliebige Punkte

x_{−k} < … < x_{−1} ( < x_{0}) , (x_{n} < ) x_{n+1} < … < x_{n+k}

zu erweitern und die zugehörigen n + k B-Splines auf das Intervall [x_{0}, x_{n}] einzuschränken. Diese Willkür ist etwas ärgerlich. Man kann (im folgenden Sinne) die speziellen Zusatzpunkte x_{−k} = … = x_{−1} = x_{0}, x_{n} = x_{n+1} = … = x_{n+k} wählen. Betrachte dazu die Grenzfunktion der B-Splines, wenn alle Zusatzpunkte gegen

x_{−k}, …, x_{−1} → x_{0} , x_{n} ← x_{n+1}, …, x_{n+k}

streben. Dies definiert sogenannte Rand-Splines, die dadurch ausgezeichnet sind, daß in ihrer Definition Stützpunkte mehrfach auftreten:

Definition 8.9:

Zu x_{0} < … < x_{n} definiere die linken

B_{[^{x_{0},...,x_{0}},x_{1},...,x_{k+1−p}]}^{[k]}(x) := lim_{x_{−p}→x_{0}−0} … lim_{x_{−1}→x_{0}−0} B_{[x_{−p},...,x_{−1},x_{0},...,x_{k+1−p}]}^{[k]}(x)_{p+1}

bzw. rechten Rand-Splines

B_{[x_{n−k−1+p},...,x_{n−1},^{x_{n},...,x_{n}}]}^{[k]}(x) :=

p+1

lim_{x_{n+p}→x_{n}+0} … lim_{x_{n+1}→x_{n}+0} B_{[x_{n−k−1+p},...,x_{n−1},x_{n},...,x_{n+p}]}^{[k]}(x)

mit p = 1, …, k

Bemerkung 8.10: Durch den Grenzübergang verlieren die Rand-Splines et-

was Glattheit: B_{[^{x_{0},...,x_{0}}_{p+1},x_{1},...,x_{k+1−p}]}^{[k]} ist an der Stelle x_{0} nur noch (k − 1 − p)-

fach stetig diff’bar (dieser B-Spline ist zwar rechtsseitig glatt, geht aber am linken Randpunkt nur noch (k − 1 − p)-fach stetig diff’bar in die Nullfunktion über). Für p = k: B_{[x_{0},...,x_{0},x_{1}]}^{[k]} ist dort nicht einmal mehr (linksseitig) stetig. Die Rand-Splines bleiben in ihrer Einschränkung auf [x_{0}, x_{n}], speziell \underline{an den inneren Nahtstellen} x_{1}, …, x_{k+1−p}, immer noch (k − 1)-fach stetig diff’bar und liegen damit in S_{[x_{0},...,x_{n}]}^{[k]} (siehe z.B. [L.L. Schumaker: Spline functions: basic theory. Chichester: Wiley 1981]). Die reduzierte Glattheit am Rand des Intervalls [x_{0}, x_{n}] ist irrelevant.

Beispiel:

B_{[x_{0},x_{0},x_{1}]}^{[1]}(x) = lim_{x_{−1}→x_{0}−0} B_{[x_{−1},x_{0},x_{1}]}^{[1]}(x) = \{ \begin{matrix}\frac{x_{1} − x}{x_{1} − x_{0}} & für x ∈ [x_{0}, x_{1}] , \\ 0 & für x ∉ [x_{0}, x_{1}] . \end{matrix}

[figure: x_{−1}; x_{0}; x_{1}; B_{[x_{−1},x_{0},x_{1}]}^{[1]}(x); x_{0}; x_{1}; B_{[x_{0},x_{0},x_{1}]}^{[1]}(x)]

Für lineare, quadratische und kubische B-Splines sind die linken und rechten Rand-Splines zusammen mit einem inneren B-Spline in Bild 8.2 dargestellt.

Bemerkung 8.11: Setzt man

x_{−k} := …:= x_{0} < x_{1} < … < x_{n} =: x_{n+1} =: … =: x_{n+k} ,

so lassen sich beliebige Linearkombination von “inneren” und Rand-Splines

S(x) = ∑_{j=i−k}^{i} β_{j} B_{[x_{j},...,x_{j+k+1}]}^{[k]}(x) , i ∈ {0, …, n − 1}

problemlos mit dem de Boor-Algorithmus 8.7 an beliebigen Stellen x ∈ [x_{i}, x_{i+1}] ⊂ [x_{0}, x_{n}] auswerten. Beachte, daß keiner der Nenner x_{j+k−r} − x_{j} in der Rekursion r = 0, …, k − 1 verschwindet:

j ∈ {i − k + r + 1, …, i} , j + k − r ∈ {i + 1, …, i + k − r} .

Nach Bemerkung 8.10 liegen auch die Rand-Splines in S_{[x_{0},...,x_{n}]}^{[k]}, und es ist eine Basis konstruiert:

Satz 8.12: (B-Spline-Basis von S_{[x_{0},...,x_{n}]}^{[k]})

Zu den Stützstellen x_{0} < … < x_{n} bilden mit der Setzung

x_{−k} := …:= x_{−1} := x_{0} , x_{n} =: x_{n+1} =: … =: x_{n+k}

die B-Splines B_{[x_{i},...,x_{i+k+1}]}^{[k]} mit i = −k, …, n − 1 eine Basis des (n + k)-

dimensionalen Spline-Raums S_{[x_{0},...,x_{n}]}^{[k]}.

B_{[x_{0},x_{0},x_{1}]}^{[1]}  B_{[x_{i−1},x_{i},x_{i+1}]}^{[1]}  B_{[x_{n−1},x_{n},x_{n}]}^{[1]} B_{[x_{0},x_{0},x_{0},x_{1}]}^{[2]} B_{[x_{0},x_{0},x_{1},x_{2}]}^{[2]}  B_{[x_{i−1},x_{i},x_{i+1},x_{i+2}]}^{[2]}  B_{[x_{n−1},x_{n},x_{n},x_{n}]}^{[2]} B_{[x_{n−2},x_{n−1},x_{n},x_{n}]}^{[2]} B_{[x_{0},x_{0},x_{0},x_{0},x_{1}]}^{[3]} B_{[x_{0},x_{0},x_{0},x_{1},x_{2}]}^{[3]} B_{[x_{0},x_{0},x_{1},x_{2},x_{3}]}^{[3]} B_{[x_{i−2},x_{i−1},x_{i},x_{i+1},x_{i+2}]}^{[3]}  B_{[x_{n−1},x_{n},x_{n},x_{n},x_{n}]}^{[3]} B_{[x_{n−2},x_{n−1},x_{n},x_{n},x_{n}]}^{[3]} B_{[x_{n−3},x_{n−2},x_{n−1},x_{n},x_{n}]}^{[3]} 1  1 1  1 1  1 x_{0}  x_{1}  ⋯  x_{i−1} x_{i} x_{i+1}  ⋯  x_{n−1} x_{n} x_{0}  x_{1} x_{2} ⋯  x_{i−1} x_{i} x_{i+1} x_{i+2} ⋯  x_{n−2} x_{n−1} x_{n} x_{0}  x_{1} x_{2} x_{3} ⋯ x_{i−2} x_{i−1} x_{i} x_{i+1} x_{i+2} ⋯ x_{n−3} x_{n−2} x_{n−1} x_{n}

Bild 8.2: Innere und Rand-B-Splines.

Beweisskizze: Es ist nur die Unabhängigkeit aller B-Splines zu zeigen. Betrachte dazu eine Linearkombination S(x) = ∑_{j} β_{j}B_{j}(x), wo B_{j} sowohl über die inneren als auch über die Rand-Splines läuft. Zeige, daß aus S(x) ≡ 0 folgt, daß alle Koeffizienten β_{j} verschwinden. Zunächst wird dies für alle k linken Rand-Splines gezeigt. Da B_{[x_{0},...,x_{0},x_{1}]}^{[k]} der einzige B-Spline ist, der am Punkt x_{0} nicht verschwindet, ist der entsprechende Koeffizient wegen S(x_{0}) = 0 als 0 identifiziert. Da B_{[x_{0},...,x_{0},x_{1}]}^{[k]} und B_{[x_{0},...,x_{0},x_{1},x_{2}]}^{[k]} die einzigen B-Splines sind, deren Ableitung bei x_{0} (rechtsseitiger Grenzwert) nicht verschwindet, folgt wegen S′(x) ≡ 0 durch Auswertung bei x_{0}, daß auch der Koeffizient von B_{[x_{0},...,x_{0},x_{1},x_{2}]}^{[k]} trivial sein muß. Analog folgt durch Betrachtung der ersten k − 1 Ableitungen am linken Rand, daß keiner der linken Rand-Splines an der Linearkombination beteiligt sein kann. Durch Auswertung auf dem ersten Teilintervall [x_{0}, x_{1}], welches von den inneren B-Splines nur B_{[x_{0},x_{1},...,x_{k+1}]}^{[k]} trägt, folgt dann das Verschwinden des Koeffizienten dieser Basisfunktion. Geht man auf die nächsten Intervalle über, so folgt nacheinander das Verschwinden der Koeffizienten aller inneren Splines und dann auch der rechten Rand-Splines. Mit der so bewiesenen Unabhängigkeit folgt, daß die angegebenen n + k B-Splines eine Basis des (n + k)-dimensionalen Raums S_{[x_{0},...,x_{n}]}^{[k]} bilden.

Q.E.D.

Zusammenfassung: Zu gegebenen Stützstellen x_{0} < … < x_{n} kann rekursiv ein Satz von Basisfunktionen (B-Splines) der (n + k)-dimensionalen Spline-Räume S_{[x_{0},...,x_{n}]}^{[k]} definiert werden. Hiervon sind n − k “innere” Splines, die auf jeweils k + 1 Teilintervallen getragen werden und außerhalb dieses Bereichs identisch verschwinden. Hinzu kommen jeweils k Splines am linken und rechten Rand, die durch mehrfache Verwendung der Endpunkte x_{0} bzw. x_{n} als Stützstellen entstehen.

8.3 Interpolation mit Splines

Aufgabe: zu vorgegebenen Stützstellen x_{0} < … < x_{n} und -werten f_{0}, …, f_{n} finde (für gegebenes k) einen Spline S ∈ S_{[x_{0},...,x_{n}]}^{[k]} mit S(x_{i}) = f_{i}.

Beispiel 8.13: Die lineare Spline-Interpolierende (k = 1) hat auf den Teilintervallen x ∈ [x_{i}, x_{i+1}] , i ∈ {0, …, n − 1 }, die Darstellung

S(x) = \frac{(x_{i+1} − x) f_{i} + (x − x_{i}) f_{i+1}}{x_{i+1} − x_{i}} . [figure: x_{0}; x_{1}; x_{2}; …; x_{n}; …; S(x)]

Begründung: offensichtlich ist S stückweise linear. Mit

lim_{x→x_{i}+0} S(x) = lim_{x→x_{i}+0} \frac{(x_{i+1} − x) f_{i} + (x − x_{i}) f_{i+1}}{x_{i+1} − x_{i}} = f_{i} ,

lim_{x→x_{i}−0} S(x) = lim_{x→x_{i}−0} \frac{(x_{i} − x) f_{i−1} + (x − x_{i−1}) f_{i}}{x_{i} − x_{i−1}} = f_{i} ,

ist S an den Nahtstellen x_{1}, …, x_{n−1} stetig und erfüllt die Interpolationsbedingungen. Die Darstellung mittels B-Splines lautet

S(x) = ∑_{i=0}^{n} f_{i} B_{[x_{i−1},x_{i},x_{i+1}]}^{[1]}(x) ,

wobei x_{−1} := x_{0}, x_{n+1} := x_{n}. Beachte hierzu, daß für die “Dachfunktionen” B_{[x_{i−1},x_{i},x_{i+1}]}^{[1]}(x_{j}) = δ_{ij} gilt.

Interpolationsfehler: es gelte f_{i} = f(x_{i}) mit f ∈ C^{2}([x_{0}, x_{n}]). Da S auf den Teilintervallen mit der linearen Polynominterpolierenden übereinstimmt, folgt für x ∈ [x_{i}, x_{i+1}] aus Satz 7.11.b) die Fehlerdarstellung

f(x) − S(x) = \frac{f′′(ξ)}{2!} (x − x_{i}) (x − x_{i+1})

mit einem Zwischenwert ξ ∈ [x_{i}, x_{i+1}]. Mit |x − x_{i}||x − x_{i+1}| ≤ (x_{i+1} − x_{i})^{2}/4 folgt

max_{x∈[x_{0},x_{n}]} |f(x) − S(x)| ≤ \frac{h^{2}}{8} max_{x∈[x_{0},x_{n}]} |f′′(x)|

mit h := max(x_{1} − x_{0}, …, x_{n} − x_{n−1}).

Läßt man durch Erhöhung der Stützstellenzahl die “Schrittweite” h → 0 konvergieren, so konvergiert die lineare Spline-Interpolierende gleichmäßig gegen die Funktion f. Dies demonstriert das entschieden bessere Konvergenzverhalten der Splines im Vergleich zur Polynominterpolation.

8.3.1 Kubische Splines

Ein für die Praxis relevanter Fall ist die Interpolation mit kubischen Splines S ∈ S_{[x_{0},...,x_{n}]}^{[3]}. Wegen dim(S_{[x_{0},...,x_{n}]}^{[3]}) = n + 3 sind neben den n + 1 Interpolationswerten \underline{zwei zusätzliche Randbedingungen} vorzugeben, um die Interpolierende eindeutig festzulegen. Interessant sind die folgenden Randbedingungen:

a) (“natürliche” Randbedingungen) Neben S(x_{0}) = f_{0}, …, S(x_{n}) = f_{n} wird S′′(x_{0}) = S′′(x_{n}) = 0 vorgeschrieben.

b) (“vollständige” Randbedingungen) Neben S(x_{0}) = f_{0}, …, S(x_{n}) = f_{n} werden Ableitungswerte S′(x_{0}) = f′_{0}, S′(x_{n}) = f′_{n} am Rand vorgeschrieben. c) (“periodische” Randbedingungen) Neben S(x_{0}) = f_{0}, …, S(x_{n−1}) = f_{n−1}

und S(x_{n}) = S(x_{0}) = f_{0} wird S′(x_{0}) = S′(x_{n}) und S′′(x_{n}) = S′′(x_{0}) gefordert.

d) (“not-a-knot” Randbedingungen) Neben S(x_{0}) = f_{0}, …, S(x_{n}) = f_{n} wird die Stetigkeit von S′′′ an den Stellen x_{1} und x_{n−1} gefordert. Dies bedeutet, daß S auf den Doppelintervallen [x_{0}, x_{2}] und [x_{n−2}, x_{n}] ein Polynom dritten Grades darstellt, sodaß x_{1} und x_{n−1} nicht mehr im Sinne eingeschränkter Differenzierbarkeit zu den Stützstellen gehören (“not a knot”).

In allen Fällen besitzt das Problem eine eindeutige Lösung. Ein Algorithmus zur Berechnung der Spline-Daten für \underline{vollständige Randbedingungen} wird jetzt vorgestellt:

Herleitung des Algorithmus: Verwende die Darstellung

S(x) = a_{i} + b_{i} (x − x_{i}) + c_{i} (x − x_{i})^{2} + d_{i} (x − x_{i})^{3}  (8.1)

auf dem Intervall x ∈ [x_{i}, x_{i+1}], i ∈ {0, …, n − 1}, also

S′(x) = b_{i} + 2 c_{i} (x − x_{i}) + 3 d_{i} (x − x_{i})^{2} , S′′(x) = 2 c_{i} + 6 d_{i} (x − x_{i}) .

Die zu suchenden Koeffizienten a_{i}, …, d_{i} sind durch die Werte f_{i} = S(x_{i}) und f′_{i} := S′(x_{i}) an den Stellen x_{0}, …, x_{n} festgelegt:

\begin{matrix}a_{i} = f_{i} , & c_{i} = 3 \frac{f_{i+1} − f_{i}}{h_{i}^{2}} − \frac{2 f′_{i} + f′_{i+1}}{h_{i}} , \\ b_{i} = f′_{i} , & d_{i} = − 2 \frac{f_{i+1} − f_{i}}{h_{i}^{3}} + \frac{f′_{i} + f′_{i+1}}{h_{i+1}^{2}} , \end{matrix}  (8.2)

wobei

h_{i} := x_{i+1} − x_{i} , i = 0, …, n − 1 .  (8.3)

Man findet diese Darstellung dadurch, daß man die 4 Gleichungen

\begin{matrix}f_{i} = S(x_{i} + 0) = a_{i} & , & f_{i+1} = S(x_{i+1} − 0) = a_{i} + b_{i} h_{i} + c_{i} h_{i}^{2} + d_{i} h_{i}^{3} , \\ f′_{i} = S′(x_{i} + 0) = b_{i} & , & f′_{i+1} = S′(x_{i+1} − 0) = b_{i} + 2 c_{i} h_{i} + 3 d_{i} h_{i}^{2} \end{matrix}

nach den 4 Koeffizienten a_{i}, b_{i}, c_{i} und d_{i} auflöst. Die durch (8.1),(8.2),(8.3) definierte Funktion mit (noch) beliebigen Parametern f′_{i} ist zusammen mit ihrer ersten Ableitung an den Knoten x_{1}, …, x_{n−1} stetig, denn nach Konstruktion gilt

S(x_{i} − 0) = S(x_{i} + 0) = f_{i} , S′(x_{i} − 0) = S′(x_{i} + 0) = f′_{i} .

Die noch zu erfüllende Stetigkeitsforderung

2 c_{i−1} + 6 d_{i−1} h_{i−1} = S′′(x_{i} − 0) = S′′(x_{i} + 0) = 2 c_{i}

für S′′ an diesen Stellen liefert nach Einsetzen von (8.2) das System

\frac{f′_{i−1}}{h_{i−1}} + 2 (\frac{1}{h_{i−1}} + \frac{1}{h_{i}} ) f′_{i} + \frac{f′_{i+1}}{h_{i}} = δ_{i} ,

δ_{i} := 3 \frac{f_{i} − f_{i−1}}{h_{i−1}^{2}} + 3 \frac{f_{i+1} − f_{i}}{h_{i}^{2}}  (8.4)

von n − 1 Gleichungen (i = 1, …, n − 1) für die n − 1 Unbekannten f′_{1}, …, f′_{n−1} (die Werte f′_{0} und f′_{n} sind im Falle vollständiger Randbedingungen vorgegeben). Die Lösung dieses symmetrischen positiv definiten Systems

\begin{matrix}( \begin{matrix}2 (\frac{1}{h_{0}} + \frac{1}{h_{1}} ) & \frac{1}{h_{1}} \\ \frac{1}{h_{1}} & 2 (\frac{1}{h_{1}} + \frac{1}{h_{2}} ) & \frac{1}{h_{2}} \\ \frac{1}{h_{2}} & ... & ... \\ & ... & ... & \frac{1}{h_{n−2}} \\ & & \frac{1}{h_{n−2}} & 2 (\frac{1}{h_{n−2}} + \frac{1}{h_{n−1}} ) \end{matrix} ) & ( f′_{1} ; f′_{2} ; ⋮ ; f′_{n−2} ; f′_{n−1} ) \\ = ( δ_{1} − \frac{f′_{0}}{h_{0}} ; δ_{2} ; ⋮ ; δ_{n−2} ; δ_{n−1} − \frac{f′_{n}}{h_{n−1}} ) \end{matrix} (8.5)

kann schnell in der Laufzeit O(n) durch LR- bzw. (schneller und stabiler) durch Cholesky-Faktorisierung ermittelt werden. Zusammenfassung:

Algorithmus 8.14: (vollständige kubische Spline-Interpolierende) Bestimme zu x_{0} < … < x_{n} und f_{0}, …, f_{n} sowie f′_{0}, f′_{n} die Spline-Interpolierende S ∈ S_{[x_{0},...,x_{n}]}^{[3]} mit S(x_{0}) = f_{0}, …, S(x_{n}) = f_{n} und vollständigen Randbedingungen S′(x_{0}) = f′_{0}, S′(x_{n}) = f′_{n}.

a) Setze h_{0}, …, h_{n−1} und δ_{1}, …, δ_{n−1} gemäß (8.3) und (8.4).

b) Löse (8.5) für f′_{1}, …, f′_{n−1}.

c) Bilde aus diesen Daten mittels (8.2) die Werte a_{0}, …, d_{n−1}.

d) Ergebnis: für x ∈ [x_{i}, x_{i+1}] hat der gesuchte Spline die Darstellung (8.1).

Die Laufzeit der Schritte a),b),c), mit denen die Spline-Daten (a_{i}), (b_{i}), (c_{i}), (d_{i}) berechnet werden, ist O(n). Liegen diese Daten vor, so liefert d) für jedes x dann den Interpolationswert mittels eines auf (8.1) angewandten Horner-Schemas

s := S(x) = \underbrace{( \underbrace{( \underbrace{d_{i}} (x − x_{i}) + c_{i} )} (x − x_{i}) + b_{i})} (x − x_{i}) + a_{i}

mit nur 3 Multiplikationen und 4 Additionen:

           h:=x-x_{i}; s:=d_{i}*h+c_{i};  s:=s*h+b_{i}; s:=s*h+a_{i};

Vergleiche dazu den Aufwand der Newton-Interpolation: Berechnung dividierter Differenzen O(n^{2}), Auswertung des Interpolationspolynoms O(n).

Bemerkung 8.15: Die Eigenwerte λ der Matrix A des Gleichungssystems (8.5) sind über das Gerschgorin-Kriterim 6.1 durch

\underbrace{min ( \frac{2}{h_{0}} + \frac{1}{h_{1}} , \frac{1}{h_{1}} + \frac{1}{h_{2}} , …)}_{≥ 2/ max_{i} h_{i}} ≤ λ ≤ \underbrace{max ( \frac{2}{h_{0}} + \frac{3}{h_{1}} , \frac{3}{h_{1}} + \frac{3}{h_{2}} , …)}_{≤ 6/ min_{i} h_{i}}

abzuschätzen. Damit ist Konditionierung von (8.5) durch das Verhältnis

cond_{2}(A) = \frac{max λ}{min λ} ≤ 3 \frac{max(h_{0}, …, h_{n−1})}{min(h_{0}, …, h_{n−1})}

des größten und kleinsten Stützstellenabstandes bestimmt, welches in praktischen Anwendungen keine extrem großen Werte annehmen sollte (dies ist z.B. bei äquidistanten Stützstellen garantiert). Die numerische Berechnung kubischer Spline-Daten ist damit in der Regel unproblematisch.

Bemerkung 8.16: Eine Darstellung der vollständigen kubischen Spline-Interpolierenden mittels B-Splines ist z.B. in [Oev96, Beispiel 8.12] zu finden.

Analoge Ergebnisse ergeben sich für das Interpolationsproblem mit natürlichen, periodischen oder not-a-knot Randbedingungen (siehe z.B. [Oev96]).

Zusammenfassung: Die Daten der kubischen Spline-Interpolierenden S(x_{0}) = f_{0}, …, S(x_{n}) = f_{n} können durch Lösung eines einfachen (tridiagonalen) Gleichungssystems mit O(n) Operationen numerisch stabil berechnet werden. Die folgende Auswertung von Interpolationspunkten S(x) ist sehr schnell.

8.3.2 Die Minimaleigenschaft kubischer Splines

Die kubischen Splines sind “physikalisch” ausgezeichnet:

Satz 8.17: (Minimaleigenschaft der Spline-Interpolierenden)

Unter allen f ∈ C^{2}([x_{0}, x_{n}]), die das Interpolationsproblem f(x_{0}) = f_{0}, …, f(x_{n}) = f_{n} sowie die natürlichen bzw. vollständigen bzw. periodischen Randbedingungen erfüllen, ist die kubische Spline-Interpolierende diejenige Funktion, welche die durch

E(f) = ∫_{x_{0}}^{x_{n}}(f′′(x))^{2} dx

definierte “mittlere Krümmung” minimiert.

Beweis: Sei S die eindeutige Spline-Interpolierende, sei f eine beliebige andere zweifach stetig diff’bare Funktion, welche die Interpolationsbedingungen sowie die entsprechenden natürlichen/vollständigen/periodischen Randbedingungen erfüllt. Mit δ := f − S ∈ C^{2}([x_{0}, x_{n}]) gilt

E(f) = E(S + δ) = E(S) + \underbrace{E(δ)}_{≥0} + 2 ∫_{x_{0}}^{x_{n}} S′′(x)δ′′(x) dx .

Ist gezeigt, daß das letzte Integral verschwindet, so folgt unmittelbar die Behauptung: E(f) = E(S) + E(δ) ≥ E(S). Zweimalige partielle Integration liefert

\begin{aligned}& ∫_{x_{0}}^{x_{n}} S′′(x)δ′′(x) dx = ∑_{i=0}^{n−1} ∫_{x_{i}}^{x_{i+1}} S′′(x)δ′′(x) dx \\ = & ∑_{i=0}^{n−1} ( [S′′(x)δ′(x) − S′′′(x)δ(x)]_{x=x_{i}+0}^{x=x_{i+1}−0} + ∫_{x_{i}}^{x_{i+1}} S′′′′(x)δ(x) dx ) , \end{aligned}

wobei das letzte Integral wegen S′′′′(x) = 0 verschwindet, da die Spline-Interpolierende auf den Teilintervallen ein Polynom maximal dritten Grades ist. Es gilt δ(x_{0}) = … = δ(x_{n}) = 0, da sowohl S als auch f die Interpolationsbedingungen erfüllen, sodaß sich mit der Stetigkeit von S′′ und δ′

∫_{x_{0}}^{x_{n}} S′′(x)δ′′(x) dx = ∑_{i=0}^{n−1} [S′′(x)δ′(x)]_{x=x_{i}}^{x=x_{i+1}} = S′′(x_{n})δ′(x_{n}) − S′′(x_{0})δ′(x_{0})

ergibt. Bei natürlichen Randbedingungen gilt S′′(x_{0}) = S′′(x_{n}) = 0. Bei vollständigen Randbedingungen gilt δ′(x_{0}) = δ′(x_{n}) = 0, da S und f dieselben vorgeschriebenen Ableitungswerte an den Rändern annehmen. Im periodischen Fall gilt S′′(x_{n}) = S′′(x_{0}) und δ′(x_{n}) = δ′(x_{0}), da die Periodizität der ersten Ableitung sowohl für S als auch für f angenommen wird. In allen betrachteten Fällen verschwindet somit das obige Integral.

Q.E.D.

Diese Argumente zeigen auch, daß die Spline-Interpolierende durch ihre Minimaleigenschaft bereits eindeutig festgelegt ist. Aus E(f) = E(S) folgt nämlich notwendigerweise E(δ) = ∫_{x_{0}}^{x_{n}}(δ′′(x))^{2}dx = 0, sodaß δ′′(x) = f′′(x) − S′′(x) ≡ 0 gelten muß. Damit stimmen f und S bis auf einen linearen Ausdruck überein, sodaß f selbst eine kubische Spline-Funktion sein muß. Wegen der Eindeutigkeit der Spline-Interpolierenden folgt f ≡ S.

Physikalische Interpretation des Satzes: Zu einer Funktion f betrachte man das vom Graphen definierte Kurvenstück { (x, f(x)) ∈ ℝ^{2} ; x ∈ [x_{0}, x_{n}] } mit dem durch Integration gemittelten Krümmungsquadrat

K(f) = ∫_{x_{0}}^{x_{n}} \frac{(f′′(x))^{2}}{1 + (f′(x))^{2}} dx .

Betrachtet man die durch Aufbringen äußerer Kräfte erzwungene Deformation eines dünnen Stabes (englisch “spline”), so nimmt dieser nach fundamentalen physikalischen Prinzipien diejenige Form an, welche die Deformationsenergie minimiert. Diese ist entsprechenden Modellen der Elastizitätstheorie gemäß durch das Quadrat der Kurvenkrümmung gegeben, sodaß K(f) bis auf einen physikalischen Faktor die im Stab gespeicherte Energie darstellt. Wenn man an den Stellen x_{0}, …, x_{n} durch Aufbringen geeigneter Punktkräfte die Position f_{0}, …, f_{n} jeweils vorschreibt (also mathematisch ein Interpolationsproblem vorgibt), so ergibt sich die vom Stab zwischen den Stützstellen angenommene Kurve als Lösung des Minimierungsproblems für K(f). Ersetzt man unter der Voraussetzung |f′(x)| ≪ 1 das physikalische Integral K(f) durch den mathematisch einfacher zu behandelnden Ausdruck E(f), so liefern die Standardmethoden der Variationsrechnung unmittelbar das Resultat, daß für die minimierende Funktion zwischen den Stützstellen f′′′′(x) = 0 gelten muß, d.h., daß die Interpolierende stückweise ein Polynom maximal dritten Grades ist. In dieser Näherung ergibt sich damit folgende physikalische Interpretation der kubischen Spline-Interpolierenden: sie beschreibt den Verlauf eines dünnen Stabes, der an den Stellen (x_{0}, f_{0}), …, (x_{n}, f_{n}) fixiert wurde. In der Tat wurde dies früher in der Praxis verwendet, um eine Anzahl auf dem Zeichenpapier vorgegebener Punkte durch eine Kurve zu verbinden, indem ein dünner biegsamer Stab an diesen Stellen festgeklemmt wurde. Da jenseits der äußersten Klemmpunkte (x_{0}, f_{0}) und (x_{n}, f_{n}) keine weiteren Kräfte auf den Stab wirken, weist dieser außerhalb des Bereichs [x_{0}, x_{n}] keinerlei Krümmung auf, sodaß speziell in den Randpunkten mit der Krümmung die zweite Ableitung der Kurve verschwindet. Dies entspricht den “natürlichen” Randbedingungen.

8.3.3 Fehlerabschätzungen

Sei f_{i} = f(x_{i}) die Wertetabelle einer glatten Funktion f. Im Gegensatz zur Polynominterpolation ergeben sich gleichmäßige Fehlerabschätzungen, die bei kubischen Splines von der vierten Potenz des Stützstellenabstandes abhängen. Dieses Ergebnis ist dabei für die unterschiedlichen Randvorgaben “natürlich”, “vollständig” etc. ähnlich und soll hier nur für den vollständigen Fall genauer formuliert werden:

Satz 8.18: (Interpolationsfehler kubischer Splines)

Sei f ∈ C^{4}([x_{0}, x_{n}]), sei S ∈ S_{[x_{0},...,x_{n}]}^{[3]} die kubische Spline-Interpolierende zu x_{0} < … < x_{n} mit “vollständigen” Randbedingungen:

S(x_{0}) = f(x_{0}) , …, S(x_{n}) = f(x_{n}) , S′(x_{0}) = f′(x_{0}) , S′(x_{n}) = f′(x_{n}) .

Mit

h := max_{i=1...n}(x_{i} − x_{i−1}) , κ := \frac{max_{i=1...n}(x_{i} − x_{i−1})}{min_{i=1...n}(x_{i} − x_{i−1})} max_{ξ∈[x_{0},x_{n}]} |f^{(4)}(ξ)|

gilt für alle^{1} x ∈ [x_{0}, x_{n}]:

\begin{aligned}| S(x) − f(x) | & ≤ & h^{4} κ , & | S′(x) − f′(x) | & ≤ & 2 h^{3} κ , \\ | S′′(x) − f′′(x) | & ≤ & 2 h^{2} κ , & | S′′′(x) − f′′′(x) | & ≤ & 2 h κ . \end{aligned}

Beweis: sehr technisch, siehe z.B. [Oev96].

Damit werden die ersten Ableitungen einer Funktion durch die entsprechenden Ableitungen der Spline-Interpolierenden für h → 0 gleichmäßig angenähert!

Bemerkung 8.19: Auch im Fall natürlicher Randbedingungen ergibt sich eine solche Abschätzung, falls die die Daten erzeugende Funktion ebenfalls die natürliche Randbedingung f′′(x_{0}) = f′′(x_{n}) = 0 erfüllt. Wenn nicht, so erhält man nur S(x) − f(x) = O(h^{2}). Analoges gilt für Interpolation mit periodischen Splines, wobei der Fehler in der Regel quadratisch ist und nur für “periodische” Ausgangsfunktionen mit f(x_{0}) = f(x_{n}), f′(x_{0}) = f′(x_{n}), f′′(x_{0}) = f′′(x_{n}) von vierter Ordnung wird.

1S′′′ ist stückweise konstant und an den Sprung(=Stütz)stellen nicht definiert, sodaß für die dritte Ableitung x ≠ x_{i} vorauszusetzen ist.

Dementsprechend wird man sinnvollerweise nur Funktionen mit natürlichen/periodischen Randbedingungen durch natürliche/periodische Splines interpolieren. In anderen Fällen wird man vollständige Randdaten benutzen oder – falls die Ableitungswerte f′(x_{0}) und f′(x_{n}) nicht bekannt sind – zu not-a-knot Vorgaben übergehen. Letztere ermöglicht eine Interpolation vierter Ordnung, auch wenn die die Daten erzeugende Funktion unbekannt ist und keinerlei Informationen am Rand zur Verfügung stehen.

Bemerkung 8.20: Mit Splines, die auf den Teilintervallen durch Polynome höheren Grades gegeben sind, lassen sich Interpolationen erzeugen, die die Ausgangsfunktion bis auf entsprechend höhere Potenzen im Stützstellenabstand h annähern. Da höhere Polynome jedoch dazu tendieren, zwischen den Stützstellen stärker zu oszillieren, werden die entsprechenden Koeffizienten in den Fehlerabschätzungen größer. Man begnügt sich in der Praxis daher oft mit kubischen Splines, wobei die Stützstellen im Rahmen der gewünschten Interpolationsgenauigkeit hinreichend dicht zu wählen sind.

146 KAPITEL 8. SPLINES

Quadratur (Integration)

Aufgabe: zu einem endlichen Integrationsintervall [a, a + L] finde Knoten (Stützstellen) x_{0}, …, x_{n} und Gewichte b_{0}, …, b_{n}, so daß die Quadraturformel

Q_{n}[f] = L ∑_{j=0}^{n} b_{j} f(x_{j}) ≈ ∫_{a}^{a+L} f(x) dx

mit den “Daten” x_{0}, …, x_{n}, b_{0}, …, b_{n} für hinreichend glatte Integranden f gute Approximationen des Integrals liefert.

Bemerkung 9.1: Bilde das Integrationsintervall x ∈ [a, a+L] mit x(c) = a+cL auf das Standardintervall c ∈ [0, 1] ab:

∫_{a}^{a+L} f(x) dx = L ∫_{0}^{1} f(a + cL) dc .

Den Stützstellen x_{j} ∈ [a, a + L] ensprechen dann c_{j} ∈ [0, 1] mit x_{j} = a + c_{j}L:

a x_{0}x_{1} ⋯ x_{n} a + L  x = a + cL ; \overline{}0 c_{0} c_{1} ⋯ c_{n}1

Die c_{j} beschreiben die “Verteilung der Stützstellen” unabhängig von der Lage a und der Länge L des Integrationsintervalls. Also: alternativ zu x_{0}, …, x_{n}, b_{0}, …, b_{n} suche nach c_{0}, …, c_{n}, b_{0}, …, b_{n}, so daß

\begin{aligned}Q_{n}[f] & = & L ∑_{j=0}^{n} b_{j} f(x_{j}) & = & L ∑_{j=0}^{n} b_{j} f(a + c_{j}L) \\ & ≈ & ∫_{a}^{a+L} f(x) dx & = & L ∫_{0}^{1} f(a + cL) dc . \end{aligned}

Idee zur Bestimmung der Daten: fordere, daß die Quadraturformel exakt ist für alle Polynome bis zu möglichst hohem Grad.

Bemerkung 9.2: Der maximal erreichbare Exaktheitsgrad einer Quadraturformel mit n + 1 Knoten x_{0}, …, x_{n} ist 2n + 1, denn für das Polynom

P_{2n+2}(x) = (x − x_{0})^{2} ⋯ (x − x_{n})^{2}

vom Grad 2n + 2 gilt Q_{n}[P_{2n+2}] = 0 ≠ ∫_{a}^{a+L} P_{2n+2}(x) dx > 0. Der Exaktheits-

grad 2n + 1 ist durch geschickte Knotenwahl erreichbar (Gauß-Quadratur).

Bemerkung 9.3: Für die Monome f_{i}(x) = (x − a)^{i} gilt

\begin{matrix}∫_{a}^{a+L}(x − a)^{i} dx =^{(x=a+cL)} L ∫_{0}^{1}(cL)^{i−1}dc = \frac{L^{i+1}}{i + 1} , \\ Q_{n}[f_{i}] = L ∑_{j=0}^{n} b_{j} (c_{j}L)^{i} = L^{i+1} ∑_{j=0}^{n} b_{j} c_{j}^{i} . \end{matrix}

Die Quadraturformel ist damit genau dann exakt für alle Polynome vom Grad ≤ q, wenn die Daten c_{0}, …, c_{n}, b_{0}, …, b_{n} das Gleichungssystem

∑_{j=0}^{n} b_{j} c_{j}^{i} = \frac{1}{i + 1} , i = 0, …, q

lösen.

9.1 Newton-Cotes-Formeln

Die Stützstellen x_{0}, …, x_{n} bzw. c_{0}, …, c_{n} (mit x_{j} = a + c_{j}h) sind paarweise verschieden vorgegeben. Aufgabe: finde b_{0}, …, b_{n}.

Satz 9.4: (Newton-Cotes-Quadratur)

Wähle

b_{j} = \frac{1}{L} ∫_{a}^{a+L} L_{j}(x) dx =^{(x=a+cL)} ∫_{0}^{1} L_{j}^{∗}(c) dc , j = 0, …, n

mit den Lagrange-Polynomen

L_{j}(x) = ∏_{{k=0 \atop k≠j}}^{n} \frac{x − x_{k}}{x_{j} − x_{k}}  =_{(x_{i}=a+c_{i}L)}^{(x=a+cL)} L_{j}^{∗}(c) = ∏_{{k=0 \atop k≠j}}^{n} \frac{c − c_{k}}{c_{j} − c_{k}} .

9.1. NEWTON-COTES-FORMELN 149

Dann ist die Newton-Cotes-Formel zu den Knoten x_{0}, …, x_{n}:

NC_{n}[f] := L ∑_{j=0}^{n} b_{j} f(x_{j}) = L ∑_{j=0}^{n} b_{j} f(a + c_{j}h)

für alle Polynome P bis zum Grad n exakt: NC_{n}[P] = ∫_{a}^{a+L} P (x) dx.

Beweis: Nach Satz 7.4 gilt P (x) = ∑_{j=0}^{n} P (x_{j}) L_{j}(x) für Polynome P vom Grad ≤ n, denn P ist seine eigene Polynominterpolierende. Es folgt

∫_{a}^{a+L} P (x) dx = ∑_{j=0}^{n} P (x_{j}) \underbrace{∫_{a}^{a+L} L_{j}(x) dx}_{L b_{j}} = NC_{n}[P] .

Q.E.D.

Bemerkung 9.5: Die so gewählten Gewichte b_{j} hängen damit nicht vom Intervall [a, a + L] ab, sondern nur von der Knotenverteilung c_{0}, …, c_{n}.

Beispiel 9.6: Betrachte \underline{äquidistante} Stützstellen c_{j} = j/n, j = 0, …, n. Mit den Gewichten

b_{j} = ∫_{0}^{1} ∏_{{k=0 \atop k≠j}}^{n} \frac{c − c_{k}}{c_{j} − c_{k}} dc = ∫_{0}^{1} ∏_{{k=0 \atop k≠j}}^{n} \frac{n c − k}{j − k} dc

erhält man die einfachen Newton-Cotes-Formeln zum Interpolationsgrad n: \underline{n = 1} (Trapezformel):

∫_{a}^{a+L} f(x) dx = \frac{L}{2} (f(a) + f(a + L)) + Fehler_{1}[f] .

\underline{n = 2} (Simpsonformel):

∫_{a}^{a+L} f(x) dx = \frac{L}{6} (f(a) + 4f(a + \frac{L}{2}) + f(a + L)) + Fehler_{2}[f] .

\underline{n = 3} (Newton’s 3/8-Regel):

∫_{a}^{a+L} f(x) dx = \frac{L}{8} (f(a) + 3f(a + \frac{L}{3}) + 3f(a + \frac{2L}{3}) + f(a + L)) + Fehler_{3} [f] .

\underline{n = 4} (Milne-Formel):

∫_{a}^{a+L} f(x) dx = \frac{L}{90} (7f(a) + 32 f(a + \frac{L}{4}) + 12 f(a + \frac{L}{2})

+32 f(a + \frac{3L}{4}) + 7 f(a + L)) + Fehler_{4} [f] .

Interpretation 9.7: Sei P_{n}(x) = ∑_{j=0}^{n} f(x_{j}) L_{j}(x) das Interpolationspolynom

zur Wertetabelle (x_{0}, f(x_{0})), …, (x_{n}, f(x_{n})). Es folgt

∫_{a}^{a+L} P_{n}(x) dx = ∑_{j=0}^{n} f(x_{j}) ∫_{a}^{a+L} L_{j}(x) dx = L ∑_{j=0}^{n} b_{j} f(x_{j}) = NC_{n}[f] ,

also Quadraturformel = exaktes Integral über das Interpolationspolynom .

Mit

Quadraturfehler = ∫_{a}^{a+L} ( f(x) − P_{n}(x) ) dx

liefert Satz 7.11.a) Fehlerabschätzungen:

Satz 9.8: (Fehler der Newton-Cotes-Quadratur)

Sei NC_{n}[f] die Newton-Cotes-Formel aus Satz 9.4 zu den Stützstellen x_{j} = a + c_{j}L ∈ [a, a + L] mit der Verteilung c_{0} < … < c_{n} in [0, 1]. Für (n + 1)- fach stetige Integranden gilt

|∫_{a}^{a+L} f(x) dx − NC_{n}[f] | ≤ d_{n} L^{n+2} max_{x∈[a,a+L]} |f^{(n+1)}(x)|

mit

d_{n} := \frac{1}{(n + 1)!} ∫_{0}^{1} |c − c_{0}| ⋯ |c − c_{n}| dc .

Für gerades n und (n + 2)-fach stetige Integranden gilt sogar

|∫_{a}^{a+L} f(x) dx − NC_{n}[f] | ≤ e_{n} L^{n+3} max_{x∈[a,a+L]} |f^{(n+2)}(x)|

mit

e_{n} := \frac{1}{(n + 2)!} ∫_{0}^{1} |c − \frac{1}{2}| |c − c_{0}| ⋯ |c − c_{n}| dc ,

falls die Stützstellen symmetrisch im Intervall liegen:

x_{n−i} = 2 a + L − x_{i} , d.h., c_{n−i} = 1 − c_{i} , i = 0, …, n .

Beweis: Nach Satz 7.11.a) gilt für das Interpolationspolynom P_{n}(x) durch (x_{0}, f(x_{0})), …, (x_{n}, f(x_{n})):

f(x) − P_{n}(x) = \frac{f^{(n+1)}(ξ)}{(n + 1)!} (x − x_{0}) ⋯ (x − x_{n}) mit ξ ∈ [a, a + L]

⟹ |∫_{a}^{a+L} f(x) dx − NC_{n}[f]| = |∫_{a}^{a+L} \frac{f^{(n+1)}(ξ)}{(n + 1)!} (x − x_{n}) ⋯ (x − x_{n}) dx|

≤ \frac{1}{(n + 1)!} ∫_{a}^{a+L} |x − x_{0}| ⋯ |x − x_{n}| dx ( max_{ξ∈[a,a+L]} |f^{(n+1)}(ξ)|)

=^{(∗)} L^{n+2} \underbrace{\frac{1}{(n + 1)!} ∫_{0}^{1} |c − c_{0}| ⋯ |c − c_{n}| dc}_{d_{n}} ( max_{ξ∈[a,a+L]} |f^{(n+1)}(ξ)|)

mit der Substitution x = a + cL in (∗). Für gerades n nehme einen beliebigen weiteren Punkt x_{n+1} = a + c_{n+1}L ∈ [a, a + L] mit x_{n+1} ∉ {x_{0}, …, x_{n}} hinzu. Mit dem Interpolationspolynom P_{n+1} durch (x_{0}, f(x_{0})), …, (x_{n+1}, f(x_{n+1})) folgt wie oben mit n ↦ n + 1:

\begin{matrix}|∫_{a}^{a+L} f(x) dx − ∫_{a}^{a+L} P_{n+1}(x) dx| ≤ \\ \frac{L^{n+3}}{(n + 2)!} ∫_{0}^{1} |c − c_{0}| ⋯ |c − c_{n}| |c − c_{n+1}| dc ( max_{ξ∈[a,a+L]} |f^{(n+2)}(ξ)|) . \end{matrix}

Es wird gezeigt, daß bei symmetrischen Stützstellen

∫_{a}^{a+L} P_{n+1}(x) dx = ∫_{a}^{a+L} P_{n}(x) dx = NC_{n}[f]

gilt. Aus Satz 7.10 folgt P_{n+1}(x) = P_{n}(x) + f_{[x_{0},...,x_{n+1}]} (x − x_{0}) ⋯ (x − x_{n}) , d.h.,

∫_{a}^{a+L} P_{n+1}(x) dx = NC_{n}[f] + f_{[x_{0},...,x_{n+1}]} ∫_{a}^{a+L}(x − x_{0}) ⋯ (x − x_{n}) dx .

Für eine symmetrische Verteilung x_{n−i} = 2a + L − x_{i} folgt mit x = 2a + L − ξ:

I := ∫_{a}^{a+L}(x − x_{0}) ⋯ (x − x_{n}) dx
= − ∫_{a+L}^{a}(2a + L − ξ − x_{0}) ⋯ (2a + L − ξ − x_{n}) dξ
= ∫_{a}^{a+L}(x_{n} − ξ) ⋯ (x_{0} − ξ) dξ = (−1)^{n+1} I .

Für gerades n folgt I = 0, also

\begin{matrix}|∫_{a}^{a+L} f(x) dx − NC_{n}[f] | ≤ \\ \frac{L^{n+3}}{(n + 2)!} ∫_{0}^{1} |c − c_{0}| ⋯ |c − c_{n}| |c − c_{n+1}| dc ( max_{ξ∈[a,a+L]} |f^{(n+2)}(ξ)|) \end{matrix}

mit beliebigem c_{n+1}, z.B. c_{n+1} = 1/2 (aus Stetigkeitsgründen darf nun c_{n+1} auch mit einem der c_{0}, …, c_{n} übereinstimmen).

Q.E.D.

Bemerkung 9.9: Für äquidistante Stützstellen c_{j} = j/n kann man (mit wesentlich größerem Aufwand) sogar zeigen, daß

∫_{a}^{a+L} f(x) dx − NC_{n}[f] = \{ \begin{matrix}d_{n}^{∗} L^{n+2} f^{(n+1)}(ξ) , n ungerade \\ e_{n}^{∗} L^{n+3} f^{(n+2)}(ξ) , n gerade \end{matrix}

mit den (positiven) Konstanten

d_{n}^{∗} = − \frac{1}{(n + 1)!} ∫_{0}^{1}c (c − \frac{1}{n})(c − \frac{2}{n}) ⋯ (c − 1) dc , n ungerade

bzw.

e_{n}^{∗} = − \frac{1}{(n + 2)!} ∫_{0}^{1}c (c − \frac{1}{n})(c − \frac{2}{n}) ⋯ (c − \frac{1}{2})^{2} ⋯ (c − 1) dc , n gerade

und geeigneten Zwischenwerten ξ ∈ (a, a + L) gilt (keine Betragszeichen !).

Bemerkung 9.10: Der Exaktheitsgrad von NC_{n} bei äquidistanten (allgemeiner: bei symmetrischen) Knoten ist damit für gerades n nicht nur n, sondern sogar n + 1.

Bemerkung 9.11: Der Interpolationsgrad n liefert einerseits den polynomialen Exaktheitsgrad n bzw. n + 1 für ungerades bzw. gerades n. Andererseits beschreibt er die Abhängigkeit des Fehlers von der Intervalllänge (“Ordnung”):

∫_{a}^{a+L} f(x) dx − NC_{n}[f] = \{ \begin{matrix}O(L^{n+2}) , n ungerade, \\ O(L^{n+3}) , n gerade. \end{matrix}

Die höheren Formeln sind damit i.a. \underline{für kleine Intervalle} die genaueren.

Um bei großen Intervallen [a, b] bzw. stark variierendem Integranden hohe Genauigkeiten erreichen zu können, sollte man wegen Bemerkung 7.13 bei den äquidistanten Newton-Cotes-Formeln nicht einfach den Interpolationsgrad n beliebig erhöhen. Stattdessen wendet man die einfachen Newton-Cotes-Formeln nicht auf das gesamte Intervall an, sondern zerlegt [a, b] äquidistant in N Gruppen von je n Punkten

x_{j} = a + j h , j = 0, 1, …, nN , h = \frac{b − a}{nN} .

Das Gesamtintegral

∫_{a}^{b} f(x) dx = ∫_{x_{0}}^{x_{n}} f(x) dx + ∫_{x_{n}}^{x_{2n}} f(x) dx + ⋯ + ∫_{x_{(N−1)n}}^{x_{Nn}} f(x) dx

ergibt sich dann mit x_{(i+1)n} = x_{in} + L, L = nh, als die Summe der Approximationen

∫_{x_{in}}^{x_{(i+1)n}} f(x) dx ≈ n h ∑_{j=0}^{n} b_{j} f(x_{in+j}) , i = 0, 1, …, N − 1

auf den Teilintervallen. Die Fehler der einfachen Newton-Cotes-Formeln addieren sich auf, und es ergeben sich die

Aufsummierten Newton-Cotes-Formeln 9.12:

NC_{N,n}[f] := n h ∑_{i=0}^{N−1} ∑_{j=0}^{n} b_{j} f(x_{in+j}) = ∫_{a}^{b} f(x) dx + F_{N,n}[f]

zum Interpolationsgrad n mit N Teilintervallen und den äquidistanten Stützstellen

x_{in+j} = a + (in + j) h , h = \frac{b − a}{nN} .

Ihr Quadraturfehler ist mit Bemerkung 9.9

\begin{aligned}| F_{N,n}[f] | & ≤ & ∑_{i=0}^{N−1} d_{n}^{∗} L^{n+2} max_{ξ_{i}∈[x_{in},x_{(i+1)n}]} |f^{(n+1)}(ξ_{i})| \\ & ≤ & d_{n}^{∗} n^{n+1} (b − a) h^{n+1} max_{ξ∈[a,b]} |f^{(n+1)}(ξ)| \end{aligned}

für ungerades n bzw.

| F_{N,n}[f] | ≤ e_{n}^{∗} n^{n+2} (b − a) h^{n+2} max_{ξ∈[a,b]} |f^{(n+2)}(ξ)|

für gerades n. Hierbei ist der Abstand benachbarter Stützstellen h = \frac{b−a}{n N} bei festem Interpolationsgrad n durch Wahl von N beliebig klein zu machen.

154 KAPITEL 9. QUADRATUR (INTEGRATION) Speziell ergibt sich für n = 1 die Trapezregel

\begin{matrix}∫_{a}^{b} f(x) dx = \frac{h}{2} ( f(a) + 2 ∑_{i=1}^{N−1} f(x_{i}) + f(b) ) + F_{N,1}[f] \\ | F_{N,1}[f] | ≤ \frac{b − a}{12} h^{2} max_{ξ∈[a,b]} |f^{(2)}(ξ)| , x_{i} = a + i h , h = \frac{b − a}{N} , \end{matrix}

für n = 2 die Simpson-Regel

\begin{matrix}∫_{a}^{b} f(x) dx = \frac{h}{3} ( f(a) + 2 ∑_{i=1}^{N−1} f(x_{2i}) + 4 ∑_{i=0}^{N−1} f(x_{2i+1}) + f(b) ) \\ + F_{N,2}[f] \\ | F_{N,2}[f] | ≤ \frac{b − a}{180} h^{4} max_{ξ∈[a,b]} |f^{(4)}(ξ)| , x_{i} = a + i h , h = \frac{b − a}{2 N} , \end{matrix}

für n = 4 die Milne-Regel

\begin{matrix}∫_{a}^{b} f(x) dx = \frac{2 h}{45} ( 7 \{f(a) + f(b)\} + 14 ∑_{i=1}^{N−1} f(x_{4i}) \\ + 32 ∑_{i=0}^{N−1} \{f(x_{4i+1}) + f(x_{4i+3})\} + 12 ∑_{i=0}^{N−1} f(x_{4i+2}) ) + F_{N,4}[f] \\ | F_{N,4}[f] | ≤ \frac{2 (b − a)}{945} h^{6} max_{ξ∈[a,b]} |f^{(6)}(ξ)| , x_{i} = a + i h , h = \frac{b − a}{4 N} , \end{matrix}

und für n = 6 die Weddle-Regel

\begin{matrix}∫_{a}^{b} f(x) dx = \frac{h}{140} ( 41 \{f(a) + f(b)\} + 82 ∑_{i=1}^{N−1} f(x_{6i}) \\ + 216 ∑_{i=0}^{N−1} \{f(x_{6i+1}) + f(x_{6i+5})\} + 27 ∑_{i=0}^{N−1} \{f(x_{6i+2}) + f(x_{6i+4})\} \\ + 272 ∑_{i=0}^{N−1} f(x_{6i+3}) ) + F_{N,6}[f] \\ | F_{N,6}[f] | ≤ \frac{3 (b − a)}{2800} h^{8} max_{ξ∈[a,b]} |f^{(8)}(ξ)| , x_{i} = a + i h , h = \frac{b − a}{6 N} . \end{matrix}

9.1. NEWTON-COTES-FORMELN 155

Beispiel 9.13: Der Effekt der unterschiedlichen Fehlerordnungen der Newton-Cotes-Formeln soll für das einfache Beispiel ∫_{0}^{1} e^{−x^{2}/2} dx demonstriert werden. Mit

f(x) = e^{−x^{2}/2} , f^{(2)}(x) = (x^{2} − 1) f(x) , f^{(4)}(x) = (3 − 6 x^{2} + x^{4}) f(x) etc.

folgt wegen der Monotonie der Ableitungen

max_{ξ∈[0,1]} |f^{(2)}ξ)| = |f^{(2)}(0)| = 1 , max_{ξ∈[0,1]} |f^{(4)}(ξ)| = |f^{(4)}(0)| = 3 ,

max_{ξ∈[0,1]} |f^{(6)}(ξ)| = |f^{(6)}(0)| = 15 , max_{ξ∈[0,1]} |f^{(8)}(ξ)| = |f^{(8)}(0)| = 105 .

Zum Erreichen einer garantierten Genauigkeit von ε = 10^{−10} wird mit den angegebenen Fehlerformeln ein Stützstellenabstand

h ≤ \sqrt{\frac{12 ε}{(b − a) max |f^{(2)}|}}  ≈ \frac{1}{28 867.51...} (n = 1, Trapez)

h ≤ 4\sqrt{\frac{180 ε}{(b − a) max |f^{(4)}|}} ≈ \frac{1}{113.62...}  (n = 2, Simpson)

h ≤ 6\sqrt{\frac{945 ε}{2 (b − a) max |f^{(6)}|}} ≈ \frac{1}{10.59...}  (n = 4, Milne)

h ≤ 8\sqrt{\frac{2800 ε}{3 (b − a) max |f^{(8)}|}} ≈ \frac{1}{4.22...}  (n = 6, Weddle)

benötigt, d.h., man braucht 28 868 bzw. 115 bzw. 13 bzw. 7 äquidistante Stützstellen (die Anzahl ist von der Form nN + 1, N ∈ ℕ). Da in diesem Beispiel die Ableitungsmaxima des Integranden nur langsam wachsen, ergibt sich ein dramatischer Unterschied im benötigten Rechenaufwand.

Bemerkung 9.14: Die zusammengesetzte Trapezregel ist trotz ihrer niedrigen Ordnung n = 1 für \underline{periodische} Integranden ideal, wenn über eine Periode integriert wird (vergleich z.B. [Oev96, Kapitel 9.2]).

Bemerkung 9.15: Für n ≫ 1 sind die Newton-Cotes-Formeln numerisch instabil und praktisch unbrauchbar. Dies liegt daran, daß für n ≥ 8 negative Gewichte b_{j} auftauchen und für die meisten Gewichte |b_{j}| ≫ 1 gilt, wodurch es zu starker Auslöschung kommt^{1}. In der Praxis beschränkt man sich auf n ≤ 6 und wählt N in den aufsummierten NC-Formeln 9.12 hinreichend groß, um höhere Genauigkeiten zu erreichen.

1Wegen ∑_{j} b_{j} = 1 folgt b_{j} ∈ (0, 1), wenn alle Gewichte positiv sind. Die Positivität der Gewichte ist ein wesentliches Kriterium für die Stabilität einer Quadratur-Formel.

Zusammenfassung: In den Quadraturformeln nach Newton-Cotes werden bei n + 1 vorgegebenen Stützstellen die Gewichte als die Integrale der zugeordneten Lagrange-Polynome gewählt, sodaß alle Polynome bis zum Grad n exakt integriert werden. Bei geradem n erhöht sich die Fehlerordnung, da die Formel auch noch für Polynome vom Grad n + 1 exakt ist. Ein allgemeiner Integrand wird stückweise durch ein Interpolationspolynom niedrigen Grades angenähert, der Integralwert wird numerisch als das Integral über das Polynom berechnet. Abhängig vom Interpolationsgrad n ergeben sich Quadraturformeln, deren Fehler durch die höheren Ableitungen des Integranden bestimmt werden. Bei äquidistanten Stützstellen mit Abstand h ist der Fehler proportional zu h^{n+1} bzw. h^{n+2} für ungerades bzw. gerades n.

9.2 Gauß-Quadratur

Idee: die Knoten x_{j} (bzw. ihre Verteilung c_{j}) sind nicht vorgegeben, sondern sollen “optimal” gewählt werden. Schreibtechnisch ist es hier schöner, n Knoten/Gewichte c_{1}, …, c_{n}/b_{1}, …, b_{n} (statt c_{0}, …, c_{n}/b_{0}, …, b_{n}) zu betrachten. In der Gauß-Quadratur werden die Knoten so konstruiert, daß sich der nach Bemerkung 9.2 maximale Exaktheitsgrad 2n − 1 für n Knoten ergibt. Die entsprechende Quadraturformel

G_{n}[f] = L ∑_{j=1}^{n} b_{j} f(x_{j}) = L ∑_{j=1}^{n} b_{j} f(a + c_{j}L) ≈ ∫_{a}^{a+L} f(x) dx

heißt Gauß-Formel der Knotenzahl n.

Fakten:

+ das die Daten bestimmende Gleichungssystem in Bemerkung 9.3 mit

q = 2n − 1 hat eine bis auf Permutation eindeutige reelle Lösung,

+ es gilt c_{1}, …, c_{n} ∈ (0, 1), d.h., x_{j} = a + c_{j}L ∈ (a, a + L),
+ es gilt b_{j} > 0 (wichtig für numerische Stabilität),
− für n > 5 haben die Daten c_{1}, …, c_{n}, b_{1}, …, b_{n} keine geschlossene Dar-

stellung,

+ man kann c_{1}, …, b_{n} aber \underline{numerisch} schnell und stabil berechnen.

Zugang über Orthogonalpolynome:

Definition 9.16:

f, g : [a, a + L] → ℝ seien (quadratisch) integrierbar.

a) ≪ f, g ≫ := ∫_{a}^{a+L} f(x) g(x) dx heißt Skalarprodukt,

b) f orthogonal g bedeutet ≪ f, g ≫ = 0.

Definition und Satz 9.17: Definiere rekursiv

P_{k}(x) = x^{k} + ∑_{j=0}^{k−1} \frac{≪ x^{k}, P_{j} ≫}{≪ P_{j}, P_{j} ≫} P_{j}(x) , k = 1, 2, …

mit dem Start P_{0}(x) = 1.

a) Es gilt ≪ P_{n}, P ≫ = 0 für alle Polynome P vom Grad < n.

b) P_{n} hat genau n einfache Nullstellen x_{j} = a + c_{j}L ∈ (a, a + L), j = 1, …, n. Achtung: x_{j}, c_{j} hängen von n ab!

c) Wählt man b_{j} = ∫_{0}^{1} L_{j}^{∗}(c) dc mit den Lagrange-Polynomen

L_{j}^{∗}(c) = ∏_{{k=1 \atop k≠j}}^{n} \frac{c − c_{k}}{c_{j} − c_{k}} , j = 1, …, n ,

so sind c_{1}, …, c_{n}, b_{1}, …, b_{n} die Daten der Gauß-Formel G_{n}[f]. Es

gilt b_{j} > 0.

Beweis: a) Induktion nach n mit der Induktionsbehauptung

≪ P_{k}, P_{j} ≫ = 0 ∀ k, j ∈ {0, …, n} , k ≠ j .

\underline{Schritt n → n + 1:} zu zeigen ist nur ≪ P_{n+1}, P_{j} ≫ = 0 ∀j = 0, …, n.

≪ P_{n+1}, P_{j} ≫ = ≪ x^{n+1} − ∑_{k=0}^{n} \frac{≪ x^{n+1}, P_{k} ≫}{≪ P_{k}, P_{k} ≫} P_{k} , P_{j} ≫

= ≪ x^{n+1}, P_{j} ≫ − ∑_{k=0}^{n} \frac{≪ x^{n+1}, P_{k} ≫}{≪ P_{k}, P_{k} ≫} \underbrace{≪ P_{k}, P_{j} ≫}_{0 für k≠j}

= ≪ x^{n+1}, P_{j} ≫ − ≪ x^{n+1}, P_{j} ≫ = 0 .

Jedes P vom Grad < n läßt sich als P (x) = ∑_{j=0}^{n−1} α_{j} P_{j}(x) schreiben, es folgt

≪ P_{n}, P ≫ = ∑_{j=0}^{n−1} α_{j} ≪ P_{n}, P_{j} ≫ = 0 .

b) Seien x_{1}, …, x_{j} die paarweise verschiedenen reellen Nullstellen von P_{n} in (a, a + L) mit Vielfachheiten n_{1}, …, n_{j}. Betrachte

P (x) = (x − x_{1})^{m_{1}} … (x − x_{j})^{m_{j}} mit m_{i} = \{ \begin{matrix}1 & für ungerades n_{i} \\ 0 & für gerades n_{i} \end{matrix}

mit denselben Vorzeichenwechseln wie P_{n} auf (a, a + L). Damit folgt ≪ P_{n}, P ≫ ≠ 0. Falls j < n gilt, so ist grad(P) = m_{1} + ⋯ + m_{j} < n, und mit a) folgt der Widerspruch ≪ P_{n}, P ≫ = 0.

c) Mit den gewählten b_{j} gilt nach Satz 9.4 (mit n → n − 1), daß G_{n}[f] bis zum Polynomgrad n−1 exakt ist. Für jedes Polynom P vom Grad ≤ 2n−1 existiert eine Zerlegung

P (x) = α(x)P_{n}(x) + β(x)

mit Polynomen α(x), β(x) vom Grad ≤ n − 1 (Polynomdivision mit Rest):

∫_{a}^{a+L} P (x) dx − G_{n}[P]

= \underbrace{∫_{a}^{a+L} α(x) P_{n}(x) dx}_{= ≪α,P_{n}≫ = 0} + ∫_{a}^{a+L} β(x) dx − L ∑_{j=1}^{n} b_{j} (α(x_{j}) \underbrace{P_{n}(x_{j})}_{0} +β(x_{j}))

= ∫_{a}^{a+L} β(x) dx − G_{n}[β] = 0 ,

da die Quadratur bis zum Grad n − 1 exakt ist. Damit ist G_{n} auch bis zum Grad 2n − 1 exakt. Es gilt b_{j} = ∫_{0}^{1} L_{j}^{∗}(c) dc, aber auch

b_{j} = ∑_{k=1}^{n} b_{k} \underbrace{(L_{j}^{∗}(c_{k}))^{2}}_{δ_{kj}} = ∫_{0}^{1}(L_{j}^{∗}(c))^{2} dc > 0 ,

da mit grad((L_{j}^{∗})^{2}) = 2n − 2 die Quadratur auf dem Standardintervall [0, 1] exakt ist.

Q.E.D.

Bezeichnung 9.18: Die Orthogonalpolynome P_{n} heißen “Legendre-Polynome” über dem Intervall [a, a + L]. Sie haben die kompakte Darstellung

P_{n}(x) = \frac{n!}{(2n)!} \frac{d^{n}}{dx^{n}} (x − a)^{n}(x − (a + L))^{n} (Rodriguez-Formel) .

Die Literatur benutzt das Standardintervall [−1, 1], also a = −1, L = 2. Sei P_{n}^{∗}(c) das n.te Legendre-Polynom über unserem Standardintervall [0, 1]. Aus der Rodriguez-Darstellung folgt unmittelbar P_{n}(a + cL) = L^{n} P_{n}^{∗}(c).

Gauß-Daten 9.19: Man berechnet:

n = 1 : P_{1}^{∗}(c) = c − \frac{1}{2} , c_{1} = \frac{1}{2} , b_{1} = 1 .

n = 2 : P_{2}^{∗}(c) = c^{2} − c + \frac{1}{2} , \{ \begin{matrix}c_{1} = \frac{1}{2} − \frac{1}{2 \sqrt{3}} , b_{1} = \frac{1}{2} , \\ c_{2} = \frac{1}{2} + \frac{1}{2 \sqrt{3}} , b_{2} = \frac{1}{2} . \end{matrix}

n = 3 : P_{3}^{∗}(c) = (c − \frac{1}{2}) (c^{2} − c + \frac{1}{10}) , \{ \begin{matrix}c_{1} = \frac{1}{2} − \frac{1}{2} \sqrt{\frac{3}{5}} , & b_{1} = \frac{5}{18} , \\ c_{2} = \frac{1}{2} , & b_{2} = \frac{4}{9} , \\ c_{3} = \frac{1}{2} + \frac{1}{2} \sqrt{\frac{3}{5}} , & b_{3} = \frac{5}{18} . \end{matrix}

n = 4 : \{ \begin{matrix}c_{1} = \frac{1}{2} − \frac{1}{2} \sqrt{15 + 2 \sqrt{30}}, & b_{1} = \frac{1}{4} − \frac{\sqrt{30}}{72} , \\ c_{2} = \frac{1}{2} − \frac{1}{2} \sqrt{15 − 2 \sqrt{30}}, & b_{2} = \frac{1}{4} + \frac{\sqrt{30}}{72} , \\ c_{3} = \frac{1}{2} + \frac{1}{2} \sqrt{15 − 2 \sqrt{30}}, & b_{3} = b_{2} , \\ c_{4} = \frac{1}{2} + \frac{1}{2} \sqrt{15 + 2 \sqrt{30}}, & b_{4} = b_{1} . \end{matrix}

n = 5 : \{ \begin{matrix}c_{1} = \frac{1}{2} − \frac{1}{6} \sqrt{5 + 2 \sqrt{\frac{10}{7}}} , & b_{1} = \frac{161}{900} − \frac{13 \sqrt{70}}{1800} , \\ c_{2} = \frac{1}{2} − \frac{1}{6} \sqrt{5 − 2 \sqrt{\frac{10}{7}}} , & b_{2} = \frac{161}{900} + \frac{13 \sqrt{70}}{1800} , \\ c_{3} = \frac{1}{2} , & b_{3} = \frac{64}{225} , \\ c_{4} = \frac{1}{2} + \frac{1}{6} \sqrt{5 − 2 \sqrt{\frac{10}{7}}} , & b_{4} = b_{2} , \\ c_{5} = \frac{1}{2} + \frac{1}{6} \sqrt{5 + 2 \sqrt{\frac{10}{7}}} , & b_{5} = b_{1} . \end{matrix}

Für n > 5 müssen die Legendre-Nullstellen c_{1}, …, c_{n} numerisch berechnet werden. Die Gewichte b_{1}, …, b_{n} folgen dann als Lösung der ersten n linearen Gleichungen

∑_{j=1}^{n} b_{j} c_{j}^{k−1} = \frac{1}{k} , k = 1, …, n

aus Bemerkung 9.3.

Bemerkung 9.20: Sei m = a + \frac{L}{2} die Intervallmitte. Die Legendre-Polynome über [a, a + L] erfüllen die Rekursionen (z.B. [Abramowitz, Stegun: Handbook of Math. Functions, Dover 1982])

\begin{aligned}P_{n+1}(x) & = & (x − m) P_{n}(x) − \frac{L^{2}}{4} \frac{n^{2}}{4n^{2} − 1} P_{n−1}(x) , \\ P′_{n+1} (x) & = & (x − m)P′_{n}(x) − \frac{L^{2}}{4} \frac{n^{2}}{4n^{2} − 1} P′_{n−1}(x) + P_{n}(x) . \end{aligned}

Mit P_{0}(x) = 1, P′_{0}(x) = 0, P_{1}(x) = x − m, P′_{1}(x) = 1 können so P_{n} und P′_{n} rekursiv an jeder Stelle numerisch stabil ausgewertet werden. Die Nullstellensuche über das Newton-Verfahren ist damit problemlos. Gute Startwerte für die Nullstellen (a <) x_{1} < … < x_{n} (< a + L) von P_{n} sind durch

x_{j}^{(0)} = m − \frac{L}{4} [ cos (\frac{j π}{n + 1}) + cos (\frac{(2j − 1) π}{2n} )] , j = 1, …, n

gegeben.

Satz 9.21: (Fehler der Gauss-Quadratur)

Für 2n-fach stetig differenzierbare Integranden gilt

∫_{a}^{a+L} f(x) dx − G_{n}[f] = \frac{≪ P_{n}, P_{n} ≫}{(2n)!} f^{(2n)}(ξ)

mit einem Zwischenwert ξ ∈ (a, a + L) und

≪ P_{n}, P_{n} ≫ = L^{2n+1} ∫_{0}^{1}(P_{n}^{∗}(c))^{2}dc = L^{2n+1} \frac{(n!)^{4}}{(2n)!(2n + 1)!} .

Beweis: Wähle zu den Nullstellen x_{1}, …, x_{n} von P_{n} andere n Knoten y_{1}, …, y_{n} hinzu. Es sei P_{2n−1} das interpolierende Polynom durch x_{1}, …, y_{n}, so daß nach Satz 7.11.a)

f(x) − P_{2n−1}(x) = \frac{f^{(2n)}(ξ(x))}{(2n)!} ∏_{j=1}^{n}(x − x_{j}) ∏_{j=1}^{n}(x − y_{j})

mit einem Zwischenwert ξ(x) folgt. Das Polynom P_{2n−1} wird durch G_{n} exakt integriert und liefert wegen der Interpolation an den Knoten x_{j} den Wert G_{n}[P_{2n−1}] = G_{n}[f]. Für den Quadraturfehler folgt die Darstellung

∫_{a}^{a+L} f(x) dx − G_{n}[f] = \frac{1}{(2n)!} ∫_{a}^{a+L} f^{(2n)}(ξ(x)) ∏_{j=1}^{n}(x − x_{j}) ∏_{j=1}^{n}(x − y_{j}) dx .

Wegen der stetigen Abhängigkeit des Integranden von y_{1}, …, y_{n} kann nun y_{j} = x_{j} gewählt werden. Die Funktion f^{(2n)}(ξ(x)) ist stetig in x, die restlichen Faktoren bilden wegen ∏_{j}(x − x_{j}) = P_{n}(x) die Funktion (P_{n}(x))^{2} ohne Vorzeichenwechsel. Damit kann f^{(2n)} über den Mittelwertsatz der Integralrechnung mit einem geeigneten Zwischenwert ξ aus dem Integral herausgezogen werden, welches dadurch zu ≪ P_{n}, P_{n} ≫ wird. Die angegebenen Werte von ∫_{0}^{1}(P_{n}^{∗}(c))^{2}dc sind in der Literatur wohlbekannt.

Q.E.D.

Bemerkung 9.22: Die Ordnung (Abhängigkeit des Fehlers von der Intervalllänge L) ist bei der Gauß-Quadratur G_{n} etwa doppelt so groß wie bei der entsprechenden Newton-Cotes-Formel NC_{n−1}, welche dieselbe Anzahl n von Funktionsauswertungen benötigt.

Für große Integrationsintervalle [a, b] bzw. für stark variierende Integranden (d.h., |f^{(2n)}| wächst schnell mit n), kann man durch Intervallzerlegung hohe Genauigkeiten erreichen:

Bemerkung 9.23: Teilt man ein Integrationsintervall [a, b] mittels

X_{i} = a + i L , i = 0, …, N − 1 , L = \frac{b − a}{N}

in N Intervalle [a, X_{1}], …, [X_{i}, X_{i+1}], …, [X_{N−1}, b] der Länge L auf und wendet G_{n} auf jedes Teilintervall an, so ergeben sich die zusammengesetzten Gauß-Legendre-Formeln

∫_{a}^{b} f(x) dx = L ∑_{i=1}^{N−1} ∑_{j=1}^{n} b_{j} f(X_{i} + c_{j}L) + F_{N,n}[f]

mit den Daten c_{1}, …, c_{n}, b_{1}, …, b_{n} von G_{n}. Für den Quadraturfehler gilt nach Satz 9.21

F_{N,n}[f] = \frac{L^{2n+1} (n!)^{4}}{((2n)!)^{2} (2n + 1)!} ∑_{i=0}^{N−1} f^{(2n)}(ξ_{i}) , ξ_{i} ∈ (X_{i}, X_{i+1}) ,

also

|F_{N,n}[f]| ≤ \frac{(b − a) L^{2n} (n!)^{4}}{((2n)!)^{2} (2n + 1)!} max_{ξ∈[a,b]} |f^{(2n)}(ξ)| , L = \frac{b − a}{N} .

Bei festem n kann der Fehler durch Wahl von hinreichend großem N beliebig klein gemacht werden.

9.3 Adaptive Quadratur

Es ist wünschenswert, die Quadratur so zu implementieren, daß Fehlerabschätzung automatisch vom Algorithmus vorgenommen werden und bei Bedarf hinreichend viele Stützpunkte gewählt werden. So ein Mechanismus sollte aus Effizienzgründen \underline{lokal} (“adaptiv”) arbeiten: in Bereichen, wo der Integrand kritisch ist (starke Variationen), werden kleine Stützstellenabstände benötigt, in “harmlosen” Bereichen braucht man nur wenige Stützstellen. Automatische Fehlerschätzer können i.a. nicht mathematisch exakt arbeiten, sie basieren auf Heuristik, d.h., auf plausiblen Annahmen, die für große Klassen von –in der Praxis auftretenden– Integranden erfüllt sind.

Sei

I_{S} ≈ ∫_{a}^{b} f(x) dx

eine (grobe) Schätzung der Größenordnung des zu berechnenden Integrals, sei

Q(x_{0}, x_{0} + L) := L ∑_{i=1}^{n} b_{i} f(x_{0} + c_{i} L) ≈ ∫_{x_{0}}^{x_{0}+L} f(x) dx

eine beliebige Quadraturformel mit n Knoten c_{1}, …, c_{n} und Gewichten b_{1}, …, b_{n}. Sei tau die relative Maschinengenauigkeit der verwendeten Arithmetik. Mit folgender rekursiver Prozedur adaptiveQuadratur erhält man einen einfachen, aber wirkungsvollen adaptiven Mechanismus, der auf die nichtadaptive Quadraturformel Q aufbaut.

Algorithmus 9.24:

         adaptiveQuadratur:=prozedur(α,β)
         lokaleVariablen: Q1,Q2,γ;

γ:=(α+β)/2; Q1:= Q(α, β); Q2:= Q(α, γ)+Q(γ, β);

           if | Q1−Q2 | < tau ∗ I_{S}
             then RETURN(Q2)
             else RETURN( adaptiveQuadratur(α,γ)
                         +adaptiveQuadratur(γ,β) )
         end;

Der Aufruf adaptiveQuadratur(a,b) liefert eine numerische Approximation des gesuchten Integrals, für die i.a.

              |I_{S} − adaptiveQuadratur(a,b)| ≈ tau ∗ I_{S}

gilt, d.h., der relative Quadraturfehler liegt in der Größenordnung der Maschinengenauigkeit tau.

Erklärung: Durch die rekursive Halbierung des Integrationsintervalls [a, b] wird die Quadraturformel Q auf Teilintervalle [α_{j}, β_{j}] angewendet, es gilt

           adaptiveQuadratur(a,b) = ∑_{j} Q(α_{j}, β_{j}) (≈ I_{S}) .  (#)

Sei [α, β] eines dieser Teilintervalle. In adaptiveQuadratur(α, β) wird das Ergebnis der Quadraturformel Q auf [α, β] mit der Summe der Quadraturen über die linke und rechte Intervallhälfte [α, γ] und [γ, β] verglichen. Unterscheiden sich diese Werte um weniger als tau∗I_{S}, so macht es keinen Unterschied, ob Q(α, β) in (#) durch Q(α, γ) + Q(γ, β) ersetzt wird: durch Rundung mit der Maschinengenauigkeit tau würde sich in beiden Fällen in der gesamten Summe derselbe Wert ergeben (vorausgesetzt, diese Summe liegt in der Tat in der Größenordnung von I_{S}). Damit braucht dieses Intervall [α, β] nicht mehr zur Verkleinerung des lokalen Quadraturfehlers halbiert zu werden.

Bemerkung 9.25: Sei Q eine Quadratur der Ordnung p, d.h., es gelte eine Abschätzung der Form

|∫_{α}^{β} f(x) dx − Q(α, β)| ≤ (β − α)^{p} const  (∗)

mit einer vom Integrationsintervall unabhängigen Konstanten^{2} const. Dann folgt mit γ = (α + β)/2:

|Q1 − Q2| = |Q(α, β) − Q(α, γ) − Q(γ, β)|

= |Q(α, β) − ∫_{α}^{β} f(x) dx + ∫_{α}^{γ} f(x) dx − Q(α, γ) + ∫_{γ}^{β} f(x) dx − Q(γ, β)|

≤ ((β − α)^{p} + \frac{(β − α)^{p}}{2^{p}} + \frac{(β − α)^{p}}{2^{p}} ) const = (1 + \frac{1}{2^{p−1}} ) (β − α)^{p} const .

Wurde das Intervall [α, β] durch N Halbierungsschritte von [a, b] erzeugt, so gilt mit β − α = (b − a)/2^{N}:

|Q1 − Q2| ≤ \frac{1}{2^{Np}} (1 + \frac{1}{2^{p−1}} ) (b − a)^{p} const ,  (∗∗)

wo (b − a)^{p} const als Quadraturfehler von Q über dem Gesamtintervall [a, b] zu interpretieren ist. Jeder Halbierungsschritt verkleinert |Q1−Q2| damit um einen Faktor 1/2^{p}. Quadraturformeln hoher Ordnung (z.B., NC_{n} mit p = n+2 oder G_{n} mit p = 2n+1, n groß) erreichen das Abbruchkriterium |Q1−Q2| < tau∗I_{S} damit schneller als Quadraturformeln niedrigerer Ordnung (wobei der Aufwand zur Berechnung der Quadratursummen Q(α, β) natürlich mit der Ordnung steigt).

|∫_{α}^{β} f(x) dx − NC_{n}(α, β)| ≤ (β − α)^{n+2} d_{n} max_{x∈[a,b]} |f^{(n+1)}(x)|

|∫_{α}^{β} f(x) dx − G_{n}(α, β)| ≤ \frac{(β − α)^{2n+1} (n!)^{4}}{((2n)!)^{2} (2n + 1)!} max_{x∈[a,b]} |f^{(2n)}(x)|

2Für die Newton-Cotes-Formeln als auch für die Gauß-Quadratur gilt in der Tat nach den Sätzen 9.8 bzw. 9.21 bzw.

für jedes Teilintervall [α, β] ⊂ [a, b].

Bemerkung 9.26: Im fall unglatter (z.B. unstetiger, aber beschränkter) Integranden f gilt (∗) wegen

Q(α, β) = (β − α) ∑_{i=1}^{n} b_{i} f( α + c_{i} (β − α) )

immer noch mit p = 1:

|∫_{α}^{β} f(x) dx − Q(α, β)| ≤ |∫_{α}^{β} f(x) dx| + |Q(α, β)|

≤ (β − α) (1 + ∑_{i=1}^{n} |b_{i}|) max_{x∈[a,b]} |f(x)| .

Mit (∗∗), p = 1, wird das Abbruchkriterium |Q1−Q2| <tau∗I_{S} immer noch mit Sicherheit nach endlich vielen Halbierungsschritten erreicht, falls nicht gerade I_{S} = 0 gilt. Der Algorithmus adaptiveQuadratur terminiert stets! Allerdings werden viele Zerlegungsschritte benötigt, sodaß die Quadratur rechenaufwendig wird.

Bemerkung 9.27: Durch den rekursiven Aufbau werden zunächst von kleinen Intervallen stammende kleine Quadratursummen zusammengefaßt, bevor diese zu anderen Quadratursummen addiert werden. Dieser “baumartige^{3}” Weg der Summation ist numerisch sehr stabil!

Bemerkung 9.28: Man hat keine Garantie, daß der gelieferte Quadraturwert wirklich

              |I_{S} − adaptiveQuadratur(a,b)| ≈ tau ∗ I_{S}

erfüllt. Diese wäre dann der Fall, wenn das Abbruchkriterium |Q1−Q2| < tau∗I_{S}

|Q(α, γ) + Q(γ, β) − ∫_{α}^{β} f(x) dx| < tau ∗ I_{S}

implizieren würde, da es dann innerhalb der Rundungsgenauigkeit nichts ausmacht, ob der exakte lokale Integralwert ∫_{α}^{β} oder die numerische Approximation Q(α, γ) + Q(γ, β) in die Gesamtsumme (#) eingeht. Das Abbruchkriterium arbeitet unter der \underline{heuristischen Annahme}, daß mit Q1= Q(α, β) und Q2= Q(α, γ) + Q(γ, β)

|Q2 − ∫_{α}^{β} f(x) dx| ≪ |Q1 − ∫_{α}^{β} f(x) dx|

3Man stellt sich die rekursive Zerlegung des Gesamtintervalls als binären Baum vor.

gilt, was in der Tat zu

|Q2 − ∫_{α}^{β} f(x) dx| ≪ |Q1 − ∫_{α}^{β} f(x) dx| ≈ |Q1 − Q2| < tau ∗ I_{S}

führt. Das Abbruchkriterium kann aber auch “zufällig” erfüllt sein. Betrachte dazu z.B. den Integranden

f(x) := \{ \begin{matrix}1/ε & für x ∈ [0, ε] \\ 0 & sonst. \end{matrix}

Ist ε sehr klein und benutzen weder Q(0, 1) noch Q(0, 1/2) Knoten in [0, ε], so gilt Q(0, 1) = Q(0, 1/2) = Q(1/2, 1) = 0, womit das Abbruchkriterium sofort nach dem ersten Halbierungsschritt erfüllt ist und der Wert adaptiveQuadratur(0, 1) = 0 geliefert wird, während ∫_{0}^{1} f(x) dx = 1 gilt.

Beispiel 9.29: Die Funktion

f(x) = e^{−20 x^{2}} cos(20 x)

wird mittels adaptiveQuadratur über [−1, 2 ] mit der groben Schätzung I_{S} = 0.01 und tau = 10^{−5} integriert. Als unterliegende Quadraturregel Q wurde die Milne-Formel

Q(α, α + L) = \frac{L}{90} (7 f(α)+32 f(α + \frac{L}{4})+12 f(α + \frac{L}{2})+32 f(α + \frac{3 L}{4})+7 f(α + L))

aus Beispiel 9.6 gewählt. Der gefundene Wert ist

adaptiveQuadratur(−1, 2) = 0.0026704 (∫_{−1}^{2} f(x) dx = 0.002670468928... ) .

Die in adaptiveQuadratur verwendeten Teilintervalle sind in der folgenden Graphik angedeutet: