Beruflich Dokumente
Kultur Dokumente
http://ta.twi.tudelft.nl/users/vuik/wi211/disasters.html
http://www5.in.tum.de/ huckle/bugse.html
C. Wieners: Einführung in die Numerische Mathematik für Studierende der Fachrichtung Informatik und Ingenieurwissenschaften 1
1 Arithmetische Grundlagen
Am 25. Februar 1991 während des ersten Golfkriegs in
Dharan, Saudi Arabien, verfehlte eine amerikanische
Patriot–Rakete eine anfliegende irakische Scud Rakete
durch eine falsche Zeitberechnung.
Eine 1/10 Sekunde wurde ungenau dargestellt (durch
Rundungsfehler wurde die periodische Dualentwicklung
0.0001100110011001100110011001100....
in der Computerdarstellung zu
0.00011001100110011001100
abgeschnitten), so dass nach 100 Stunden Betriebszeit
eine Zeitdifferenz von ca. 0.3 Sekunden entstand.
Dieser Fehler wurde nicht in allen Teilen des
Betriebsprogramms korrigiert.
http://ta.twi.tudelft.nl/users/vuik/wi211/disasters.html
http://www5.in.tum.de/ huckle/bugse.html
C. Wieners: Einführung in die Numerische Mathematik für Studierende der Fachrichtung Informatik und Ingenieurwissenschaften 2
1 Arithmetische Grundlagen
(1.1)
a) Die Gleitkommazahlen zur Basis B ∈ {2, 3, ...} der Mantissenlänge M und
Exponentenlänge E ist die Menge
n M E−1 o
FL = ± B e ∑ am B −m : e = e− + ∑ ck B k , am , ck ∈ {0, 1, ..., B − 1} .
m=1 k =0
b) Eine Gleitkommaarithmetik wird durch eine Abbildung fl : R −→ FL mit fl(x) = x für
x ∈ FL definiert. Sie bestimmt die Rundung: x ⊕ y = fl(x + y ), x y = fl(x · y ), etc.
Die zugehörige Maschinengenauigkeit ist
|x − fl(x)|
eps := sup ; 1<x <2 .
|x|
(1.2)
a) Ein Problem heißt sachgemäß gestellt, wenn es eindeutig lösbar ist und die Lösung
stetig von den Daten abhängt.
b) Die Kondition eines Problems ist ein Maß dafür, wie stark die Abhängigkeit der Lösung
von den Daten ist.
c) Die Stabilität eines numerischen Algorithmus ist ein Maß dafür, wie stark die Daten-
Abhängigkeit der numerischen Lösung im Vergeich zu der tatsächlichen Lösung ist.
C. Wieners: Einführung in die Numerische Mathematik für Studierende der Fachrichtung Informatik und Ingenieurwissenschaften 3
Auslöschung bei Nullstellenberechnung
Wir betrachten die Gleichung
x 2 − 2px + q = 0,
deren Nullstellen durch
q
x = p ± p2 − q
gegeben sind. Diese Berechnungsvorschrift ist aber für p q nicht zu empfehlen, da dann
Auslöschung bei der betragsmäßig kleineren Nullstelle auftritt. Wählt man beispielsweise
p = 108 und q = 1, so berechnet IEEE-Arithmetik
x1 = 2 ∗ 108 , x2 = 0.
Die Auslöschung bei x2 kann man umgehen, indem man zuerst die größere Nullstelle durch
q
x1 = p + sign(p) p2 − q
berechnet und dann (mit dem Satz von Vieta) die zweite Nullstelle durch
q
x2 =
x1
erhält. Mit dieser Vorschrift berechnet IEEE-Arithmetik die bessere Lösung
x1 = 2 ∗ 108 , x2 = 0.5 ∗ 10−9 .
C. Wieners: Einführung in die Numerische Mathematik für Studierende der Fachrichtung Informatik und Ingenieurwissenschaften 4
1 Arithmetische Grundlagen
Sei | · | eine Vektornorm, und sei k · k eine zugeordnete Matrixnorm, d. h.,
|Ax|p
und die zugeordnete Operatornorm kAkp = supx6=0N |x|p , d.h.
M q N
kAk1 = max ∑ |amn | , kAk2 = ρ(AT A) , kAk∞ = max ∑ |amn |
n=1,...,N m=1 m=1,...,M n=1
(1.4) Sei A ∈ RN×N invertierbar. Dann heißt κp (A) = kAkp kA−1 kp die Kondition von A.
(2.2) Wenn eine Matrix A ∈ RN×N eine LR-Zerlegung A = LR mit einer normierten untere
Dreiecksmatrix L und einer invertierbaren obere Dreiecksmatrix R besitzt, dann ist A
invertierbar und das LGS Ax = b ist mit O(N 2 ) Operationen lösbar.
(2.3) Eine Matrix A ∈ RN×N besitzt genau dann eine LR-Zerlegung von A, wenn alle
Hauptuntermatrizen A[1 : n, 1 : n] invertierbar sind. Die LR-Zerlegung ist eindeutig und lässt
sich mit O(N 3 ) Operationen berechnen.
N
(2.5) Eine Matrix A ∈ RN×N heißt strikt diagonal-dominant, falls |A[n, n]| > ∑ |A[n, k ]|.
k =1
k 6=n
Sie heißt positiv definit, wenn x > Ax > 0 für x ∈ RN , x 6= 0.
In beiden Fällen existiert eine LR-Zerlegung.
def lu_decomposition(matrix):
n = matrix.shape[0]
lower = np.zeros(shape=matrix.shape)
upper = np.zeros(shape=matrix.shape)
for j in range(n):
lower[j][j] = 1.0
for i in range(j + 1):
first_sum = sum(upper[k][j] * lower[i][k] for k in range(i))
upper[i][j] = matrix[i][j] - first_sum
for i in range(j, n):
second_sum = sum(upper[k][j] * lower[i][k] for k in range(j))
lower[i][j] = (matrix[i][j] - second_sum) / upper[j][j]
return lower, upper
C. Wieners: Einführung in die Numerische Mathematik für Studierende der Fachrichtung Informatik und Ingenieurwissenschaften 7
from scipy import linalg
import numpy as np
def cholesky_decomposition(matrix):
n = matrix.shape[0]
lower = np.zeros(matrix.shape)
lower[0, 0] = np.sqrt(matrix[0, 0])
for n in range(1, n):
y = linalg.solve_triangular(lower[:n, :n], matrix[n, :n], lower=True)
lower[n, :n] = y
lower[n, n] = np.sqrt(matrix[n, n] - np.dot(y, y))
return lower
C. Wieners: Einführung in die Numerische Mathematik für Studierende der Fachrichtung Informatik und Ingenieurwissenschaften 8
matrix = np.array([[2.0, 1.0],
[1.0, 4.0]])
rhs = np.array([1.0, 2.0])
print("solution",solution)
test = rhs - np.dot(matrix,solution)
print("test ",test)
C. Wieners: Einführung in die Numerische Mathematik für Studierende der Fachrichtung Informatik und Ingenieurwissenschaften 9
2 Direkte Lösungsverfahren für lineare Gleichungen
(2.7) a) Eine bijektive Abbildung π : {1, . . . , N} → {1, . . . , N} heißt Permutation.
Sie wird eindeutig durch einen Permutationsvektor p = π(1), . . . , π(N) repräsentiert.
b) Die zugehörige Permutationsmatrix Pπ = eπ −1 (1) · · · eπ −1 (N) ∈ RN×N von π vertauscht
(2.9) a) Zu v ∈ RN und k 6= n mit v [k ]2 + v [n]2 > 0 existiert eine Givens-Rotation G ∈ RN×N mit
G[k , k ] G[k , n] c s
= , c 2 + s2 = 1 ,
G[n, k ] G[n, n] −s c
und G[j, j] = 1 für j 6= k , n und G[i, j] = G[j, i] = 0 sonst, so dass für w = Gv gilt: w[n] = 0.
Für |v [n]| > |v [k ]| setze τ = vv [k ]
[n] , s =
√ 1 , c = sτ, sonst setze τ = vv [k
2
[n]
], c =
√ 1 , s = cτ.
2
1+τ 1+τ
2
b) Zu v ∈ RN , v 6= 0, existiert eine Householder-Spiegelung H = IN − ww > ∈ RN×N
w >w
mit w ∈ RN , w[1] = 1, sodass Hv = σ e1 mit σ ∈ R.
1
Falls v [1] > 0, setze σ = −|v |2 , sonst setze σ = |v |2 . Dann definierte w = v [1]−σ (v − σ e1 ).
N = size(A,1);
for n=1:N-1
% Berechnung der n-ten Spalte von L
for m=n+1:N
A(m,n) = A(m,n)/A(n,n);
end;
% keine Berechnung der n-ten Zeile von R erforderlich
C. Wieners: Einführung in die Numerische Mathematik für Studierende der Fachrichtung Informatik und Ingenieurwissenschaften 11
LR-Zerlegung
N = size(A,1);
for n=1:N-1
A(n+1:N,n) = A(n+1:N,n)/A(n,n);
A(n+1:N,n+1:N) = A(n+1:N,n+1:N) - A(n+1:N,n) * A(n,n+1:N);
end;
x = b;
for n=2:N
x(n) = x(n) - A(n,1:n-1) * x(1:n-1);
end;
for n=N:-1:1
x(n) = (x(n) - A(n,n+1:N)*x(n+1:N))/A(n,n);
end;
C. Wieners: Einführung in die Numerische Mathematik für Studierende der Fachrichtung Informatik und Ingenieurwissenschaften 12
Cholesky-Zerlegung
N = size(A,1);
for n=1:N
A(n:N,n) = A(n:N,n) - A(n:N,1:n-1) * A(n,1:n-1)’;
A(n:N,n) = A(n:N,n) / sqrt(A(n,n));
end;
x = b;
for n=1:N
x(n) = (x(n) - A(n,1:n-1) * x(1:n-1))/ A(n,n);
end;
for n=N:-1:1
x(n) = (x(n) - A(n+1:N,n)’ * x(n+1:N))/ A(n,n);
end;
C. Wieners: Einführung in die Numerische Mathematik für Studierende der Fachrichtung Informatik und Ingenieurwissenschaften 13
LR-Zerlegung mit Pivotsuche
N = size(A,1); p = (1:N)’;
for n = 1:N-1
[r,m] = max(abs(A(n:N,n)));
m = m+n-1;
if abs(A(m,n))<eps
error(’*** ERROR *** LR-Zerlegung existiert nicht’);
end;
if (m ~= n)
A([n m],:) = A([m n],:); p([n m]) = p([m n]);
end;
A(n+1:N,n) = A(n+1:N,n)/A(n,n);
A(n+1:N,n+1:N) = A(n+1:N,n+1:N) - A(n+1:N,n)*A(n,n+1:N);
end;
x = b(p);
for n=2:N
x(n) = x(n) - A(n,1:n-1)*x(1:n-1);
end;
for n=N:-1:1
x(n) = (x(n) - A(n,n+1:N)*x(n+1:N))/A(n,n);
end;
C. Wieners: Einführung in die Numerische Mathematik für Studierende der Fachrichtung Informatik und Ingenieurwissenschaften 14
Berechnung der Householder-Vektoren
C. Wieners: Einführung in die Numerische Mathematik für Studierende der Fachrichtung Informatik und Ingenieurwissenschaften 15
QR-Zerlegung
[M,N] = size(A);
for m = 1:min(N,M-1)
[v,beta] = householder(A(m:M,m));
if beta ~= 0
w = beta * v’ * A(m:M,m:N);
A(m:M,m:N) = A(m:M,m:N) - v * w;
A(m+1:M,m) = v(2:M-m+1);
end;
end;
for m = 1:min(N,M-1)
v = [1;A(m+1:M,m)];
beta = 2 / (v’ * v);
if beta ~= 2
b(m:M) = b(m:M) - beta*(v’*b(m:M)) * v;
end;
end;
for n=min(N,M):-1:1
x(n) = (b(n) - A(n,n+1:N) * x(n+1:N)) / A(n,n);
end;
C. Wieners: Einführung in die Numerische Mathematik für Studierende der Fachrichtung Informatik und Ingenieurwissenschaften 16
3 Lineare Ausgleichsrechnung
(3.1) Sei A ∈ RK ×N und b ∈ RK . Dann gilt:
x ∈ RN minimiert |Ax − b|2 ⇐⇒ A> Ax = A> b.
mit V = (v1 | · · · |vR ) ∈ RK ×R , U = (u1 | · · · |uR ) ∈ RN×R und Σ = diag(σ1 , . . . , σR ) ∈ RR×R mit
V > V = IR , U > U = IR , und σr > 0 für r = 1, ..., R.
R
1
(3.3) A+ = UΣ−1 V > = ∑ σr ur vr> ist die Pseudo-Inverse.
r =1
C. Wieners: Einführung in die Numerische Mathematik für Studierende der Fachrichtung Informatik und Ingenieurwissenschaften 18
Ein schlecht konditioniertes Gleichungssystem
Stören wir nun aber die rechte Seite geringfügig, indem wir log(2) nur bis auf
5 Nachkommastellen auswerten, so erhalten wir folgende Lösung:
N x0 x1 x2 x3 x4 x5 x6
1 0.93 −0.48
2 0.99 −0.81 0.33
3 1.00 −0.96 0.70 −0.25
4 1.01 −1.16 1.63 −1.70 0.72
5 1.06 −2.74 12.68 −31.16 33.87 −13.26
6 1.39 −16.58 151.10 −584.81 1071.96 −926.77 304.50
Also: Eine geringfügige Störung der Daten führt zu einer großen Sprung des Ergebnisses.
Der Grund dafür liegt in der schlechten Kondition der Hilbertmatrix.
Diese ist in der Spektralnorm:
N 2 3 4 5 6
κ2 (A) 19.28 524.06 1.55e + 04 4.77e + 05 1.495e + 07
C. Wieners: Einführung in die Numerische Mathematik für Studierende der Fachrichtung Informatik und Ingenieurwissenschaften 19
Ein schlecht konditioniertes Gleichungssystem
Wir können die Kondition verbessern, indem wir die Tikhonov-Regularisierung auf die
Hilbertmatrix anwenden, d.h.
x α = (A> A + αIN )−1 A> b .
Regularisieren wir mit einem Parameter α = 10−10 , so erhalten wir
N x0 x1 x2 x3 x4 x5 x6
1 0.93 −0.48
2 0.99 −0.81 0.33
3 1.00 −0.95 0.69 −0.24
4 0.99 −0.89 0.47 0.06 −0.14
5 1.00 −0.91 0.52 0.02 −0.18 0.04
6 1.00 −0.94 0.58 0.08 −0.25 −0.17 0.20
C. Wieners: Einführung in die Numerische Mathematik für Studierende der Fachrichtung Informatik und Ingenieurwissenschaften 20
4 Eigenwertberechung
(4.1) Eine Matrix H ∈ RN×N heißt Hessenberg-Matrix, wenn H[n + 2 : N, n] = 0N−n−1 für
n = 1, ..., N − 2.
(4.2) Sei A ∈ RN×N . Dann existiert eine orthogonale Matrix Q ∈ RN×N , so dass H = QAQ > eine
Hessenberg-Matrix ist. Die Berechnung benötigt O(N 3 ) Operationen.
Wenn A symmetrisch ist, dann ist H eine Tridiagonalmatrix.
v > Av
Zu A ∈ RN×N und v ∈ RN , v 6= 0, sei r (A, v ) = v>v
der Rayleigh-Quotient.
Wenn der Startvektor z 0 hinreichend nahe bei einem Eigenvektor v m mit isoliertem
Eigenwert λ = λm liegt, konvergiert die Iteration kubisch, d.h. |µk − λ | ≤ C |µk − λ |3 .
C. Wieners: Einführung in die Numerische Mathematik für Studierende der Fachrichtung Informatik und Ingenieurwissenschaften 21
4 Eigenwertberechnung: QR-Iteration mit Shift
Sei A ∈ RN×N symmetrisch.
S0) Berechne A0 = QAQ > tridiagonal (Hessenberg-Transformation).
Wähle ε ≥ 0. Setze k = 0.
S1) Falls |Ak [n + 1, n]| ≤ ε für ein n:
getrennte Eigenwertberechnung für Ak [1 : n, 1 : n] und Ak [n + 1 : N, n + 1 : N].
S2) Berechne dk = 12 (Ak [N − 1, N − 1] − Ak [N, N]) und
q
sk = Ak [N, N] + dk − sgn(dk ) dk2 + Ak [N − 1, N]2 .
Falls der shift sk = Ak [N, N] gewählt wird, entspricht die QR-Iteration der Inversen Iteration
mit variablem Shift und Startvektor z 0 = eN .
C. Wieners: Einführung in die Numerische Mathematik für Studierende der Fachrichtung Informatik und Ingenieurwissenschaften 22
Impliziter QR-Algorithmus mit Wilkinson-Shift
Für symmetrische Matrizen (o.B.d.A. Hessenbergform) lässt sich der QR-Algorithmus so
modifizieren, dass die QR-Zerlegung in jedem Iterationsschritt nur implizit durch N − 1
Transformationen mit Givensrotationen durchgeführt werden muss. Durch den
Wilkinson-Shift (siehe Golub, van Loan) erhalten wir außerdem kubische Konvergenz, im
Gegensatz zur linearen Konvergenz des QR-Algorithmus’ ohne Shift. Dabei können wir eine
Toleranz für die verschwindenden Nebendiagonalelemente vorgeben.
Wir betrachten
A = tridiag(−1, 2, −1) ∈ RN×N .
Für die Toleranz tol = ε braucht der Algorithmus die folgende Anzahl von Iterationen:
N Iterationen
100 281
200 532
500 1120
1000 2310
Das sind im Schnitt weniger als 3 Iterationen pro Eigenwert.
Der maximale Fehler bei diesen Berechnungen beträgt zwischen 10−13 und 10−14 .
C. Wieners: Einführung in die Numerische Mathematik für Studierende der Fachrichtung Informatik und Ingenieurwissenschaften 23
5 Iterationsverfahren für lineare Gleichungen
(5.1) S0) Wähle x 0 ∈ RN und ε > 0.
Berechne r 0 = b − Ax 0 . Setze k = 0.
S1) Falls |r 0 | ≤ ε STOP.
S2) Berechne
wk = Br k −1
k +1
x = xk + wk
k +1
r = r k − Aw k
Setze k := k + 1 und gehe zu S1).
(5.2) Sei A, B ∈ RN×N mit ρ(IN − BA) < 1. Dann ist A invertierbar, und es gilt für alle b ∈ RN und
alle Startvektoren x 0 ∈ RN konvergiert die Iteration
x k +1 = x k + B(b − Ax k ) , k = 0, 1, 2, ...
gegen lim xk = A−1 b. Dann exisitiert eine Vektor-Norm | · | und dazu eine Matrix-Norm k · k
k −→∞
mit kIN − BAk < 1. Damit ergibt sich |x − x k | ≤ kIN − BAkk |x − x 0 | (lineare Konvergenz).
S0) Wähle x 0 ∈ RN .
1 1
Berechne r 0 = b − Ax 0 , z 1 = Br 0 , h10 = |z 1 |V und v 1 = h10 z . Setze k = 1.
S2) Berechne
wk = BAv k
k
z k +1 = w k − ∑ hjk v j mit hjk = hv j , w k iV
j=1
k +1 1
v = z k +1 mit hk +1,k = |z k +1 |V
hk +1,k
k +1
Es gilt BAv k = ∑ hjk v j , also BAQk = Qk +1 Hk mit Hk = (hjm ) ∈ Rk +1,k .
j=1
GMRES-Verfahren: Wähle hv , wiV = v T w.
cg-Verfahren (A, B symmetrisch positiv definit): Wähle hv , wiV = v T Aw.
C. Wieners: Einführung in die Numerische Mathematik für Studierende der Fachrichtung Informatik und Ingenieurwissenschaften 25
5 Iterative Lösungsverfahren: GMRES-Verfahren
S0) Wähle x 0 ∈ RN , ε > 0.
1 1
Berechne r 0 = b − Ax 0 , z 1 = Br 0 , h10 = |z 1 |2 und v 1 = h10 z . Setze k = 1.
S1) Berechne
w k = BAv k
k
z k +1 = w k − ∑ hjk v j mit hjk = (v j )T w k
j=1
k +1 1
v = z k +1 mit hk +1,k = |z k +1 |2
hk +1,k
pκ(BA) − 1 k
k
(4.6) Es gilt |x − x|A ≤ 2 p |x 0 − x|A .
κ(BA) + 1
C. Wieners: Einführung in die Numerische Mathematik für Studierende der Fachrichtung Informatik und Ingenieurwissenschaften 27
6 Iterationsverfahren für nichtlineare Gleichungen
Sei F : RN −→ RN differenzierbar. Sei x ∗ ∈ RN eine Nullstelle von F (·), d.h. F (x ∗ ) = 0.
Dann gilt 0 = F (x) + DF (x)(x ∗ − x) + o(x ∗ − x).
Falls DF (x) invertierbar ist, gilt x ∗ = x − DF (x)−1 F (x) + o(x ∗ − x).
Falls DF (x ∗ ) invertierbar ist, ist x ∗ Fixpunkt von ΦF (x) = x − DF (x)−1 F (x), d.h. ΦF (x ∗ ) = x ∗ .
Newton-Verfahren: Wähle x 0 ∈ RN und definiere x k +1 = ΦF (x k ) für k = 0, 1, 2, ...
(6.1) Sei DF (x ∗ ) invertierbar. Dann ist das Newton-Verfahren für alle x 0 hinreichend nahe bei x ∗
wohldefiniert, und x k konvergiert gegen x ∗ . Wenn zusätzlich F (·) glatt genug ist, ist die
Konvergenz quadratisch, d.h. es existiert C > 0 mit |x k +1 − x ∗ | ≤ C |x k − x ∗ |2 .
Wenn DF (x)−1 durch B ∈ RN×N approximiert wird, erhalten wir eine einfache
Fixpunktiteration mit ΦF ,B (x) = x − BF (x).
(6.2) Sei ρ(IN − B DF (x ∗ )) < 1. Dann gilt: Für alle x 0 hinreichend nahe bei x ∗ konvergiert die
einfache Fixpunkt-Iteration x k +1 = ΦF ,B (x k ) linear gegen x ∗ .
(6.3) Iterationsverfahren für nichtlineare Gleichungen mit Dämpfungsstrategie
S0) Wähle x 0 ∈ RN , θ ∈ (0, 1), smax ∈ N und ε > 0. Setze k = 0.
S1) Falls |F (x k )| ≤ ε STOP (Konvergenz)
S2) Wähle Bk ≈ DF (x k )−1 und berechne c k = −Bk F (x k ).
S3) Wähle tk ∈ {1, θ , θ 2 , ..., θ smax } mit |F (x k + tk ck )| < |F (x k )|.
Falls |F (x k + tk ck )| ≥ |F (x k )| für tk = θ smax STOP (keine Konvergenz)
S4) Setze x k +1 = x k + tk ck , k := k + 1 und gehe zu S1).
C. Wieners: Einführung in die Numerische Mathematik für Studierende der Fachrichtung Informatik und Ingenieurwissenschaften 28
7 Polynom-Interpolation
(7.1) Lagrange-Interpolation Zu Stützstellen ξ0 < ξ1 < · · · < ξN und Werten f0 , f1 , . . . , fN ∈ R
existiert genau ein Polynom P ∈ PN mit P(ξn ) = fn .
N N
t−ξk
Konstruktion: Definiere die Lagrange-Basis Ln (t) = ∏ ξn −ξk
, setze P(t) = ∑ fn Ln (t).
k =0, k 6=n n=0
Der maximale Fehler wird hier sogar immer größer, je höher der Grad des
Interpolationspolynoms ist. Für den Grad 10 ist das zugehörige Interpolationspolynom
eingezeichnet. Der Fehler wird offenbar durch die starke Oszillation verursacht, dies
verschlimmert sich noch mit steigendem Polynomgrad.
C. Wieners: Einführung in die Numerische Mathematik für Studierende der Fachrichtung Informatik und Ingenieurwissenschaften 30
8 Spline-Interpolation
(8.1) a) Zu einer Zerlegung Ξ = {a = ξ0 < ξ1 < · · · < ξN = b} von [a, b] definiere den kubischen
Spline-Raum
S3 (Ξ) = S ∈ C 2 [a, b] : Sn := S|[ξn−1 ,ξn ] ∈ P3 ,
n = 1, . . . , N .
b) S ∈ S3 (Ξ) heißt interpolierender Spline zu f ∈ C 0 [a, b] wenn S(ξn ) = f (ξn ).
Die Koeffizienten lassen sich rekursiv mit O(N log N) Operationen berechnen:
N−1 M−1 M−1
∑ fn ωN−kn = ∑ −km
f2m ωM + ω −k ∑ −km
f2m+1 ωM , N = 2M .
n=0 m=0 m=0
C. Wieners: Einführung in die Numerische Mathematik für Studierende der Fachrichtung Informatik und Ingenieurwissenschaften 32
10 Numerische Integration
(10.1) Sei [a, b] ⊂ R ein Intervall, und sei Ξ ⊂ [a, b] eine endliche Menge mit |Ξ| = N.
Dann existiert genau eine Quadratur
QΞ : C[a, b] −→ R , QΞ (f ) = ∑ ωξ f (ξ )
ξ ∈Ξ
mit Gewichten ωξ ∈ R zu den Stützstellen ξ ∈ Ξ, die für Polynome vom Grad N − 1 exakt ist:
Z b
QΞ (P) = P(t) dt , P ∈ PN−1 .
a
t−η Rb
Konstruktion: Sei Lξ (t) = ∏η∈Ξ\{ξ } ξ −η
. Dann gilt ωξ = a Lξ (t) dt.
(10.2) a) Es gibt genau eine Quadratur GN mit N Stützstellen, die für Polynome in P2N−1 exakt ist.
Wähle dazu die Nullstellen des Orthogonalpolynoms PN ∈ PN bzgl. (f , g) = ab f (t)g(t) dt.
R
b) Es gibt keine Quadratur QΞ mit #Ξ = N, die für Polynome P ∈ P2N exakt ist.
(10.3) Sei QΞ eine Quadratur, die für Polynome P ∈ PK −1 exakt ist. Dann existiert C > 0 mit
Z b
d K
QΞ (f ) − f (t) dt ≤ C(b − a)K +1
f
a dt ∞
Z √2−1
1 π
Beispiel: Approximiere dt =
0 1 + t2 8
Neville-Schema zur Extrapolation von Tk 0 = T2k +3
T00 = 0.392564202887866
T10 = 0.392665370185121 T11 = 0.392699092617539
T20 = 0.392690654331774 T21 = 0.392699082380658 T22 = 0.392699081698199
T30 = 0.392696974888946 T31 = 0.392699081741337 T32 = 0.392699081698716 T33 = 0.392699081698724
Fehler
T00 − π = −0.000134878810858
8
T10 − π = −0.000033711513603 T − π = 1.0918815e − 8
8 11 8
T20 − π = −0.000008427366950 T − π = 0.0681934e − 8 T − π = −5.2519100e − 13
8 21 8 22 8
T30 − π = −0.000002106809778 T − π = 0.0042613e − 8 T − π = −0.0816014e − 13 T − π = 5.5511151e − 17
8 31 8 32 8 33 8
C. Wieners: Einführung in die Numerische Mathematik für Studierende der Fachrichtung Informatik und Ingenieurwissenschaften 34
11 Numerische Integration von Differentialgleichungen
(11.1) Sei t0 ∈ R und T > 0. Zu einem Anfangswert u0 ∈ RM und f ∈ C([t0 , t0 + T ] × RM , RM ) suchen
wir eine Lösung u ∈ C1 ([t0 , t0 + T ], RM ) der Anfangswertaufgabe
u̇(t) = f t, u(t) für t ∈ [t0 , t0 + T ] und dem Anfangswert u(t0 ) = u0 .
N =5 N = 100
Figure: Stabilität der numerischen Approximation. Vergleich im Zeitintervall [0, 57300] für N = 5, 100.
C. Wieners: Einführung in die Numerische Mathematik für Studierende der Fachrichtung Informatik und Ingenieurwissenschaften 36