Übung Numerische Mathematik für LA SS08 Angabe Funktion

Werbung
Übung Numerische Mathematik für LA SS08
Eva Roth
Beispiel 28
In Maple alle bestehenden (benutzerdefinierten) Bindungen lösen:
> restart;
Angabe
Berechne in 5-stelliger Gleitpunkt-Arithmetik die Nullstellen des Polynoms x2 − bx + c = 0 für
b = 3,6778 und c = 2,0789*10
( −3 )
Funktion definieren und Graph zeichnen
Wir betrachten ein quadratisches Polynom p(x) = x2 − bx + c mit speziellen Koeffizienten b =
( −3 )
3,6778 und c = 2,0789*10
> b:=3.6778;c:=2.0789*10^(-3);p(x):=x^2-b*x+c;
b := 3.6778
c := 0.002078900000
p( x ) := x2 − 3.6778 x + 0.002078900000
Wir suchen die Nullstellen von p(x), d.h. die Lösungen der quadratischen Gleichung p(x) = 0:
> glg:=p(x)=0;
glg := x2 − 3.6778 x + 0.002078900000 = 0
Der Graph der Funktion p(x) sieht so aus:
(scaling = constrained bewirkt ein unverzerrtes Bild (die Koordinatenachsen werden im selben
Maßstab dargestellt))
> plot(p(x), x=-2..6,y=-4..8,scaling=constrained);
Die beiden Nullstellen (wir nennen sie r+ und r− ) befinden sich ungefähr bei 0 und in dem
Intervall [3.6, 3.8].
exakte Berechnung der Nullstellen
Exakte Berechnung der Nullstellen durch Maple mit dem Befehl solve ("Löse glg nach x"):
> r_exakt:= solve(glg,x);
r_exakt := 3.677234657, 0.0005653433066
Man sieht, dass Maple standardmäßig auf 10 relevante (= signifikante) Stellen rechnet (
Digits:=10 ist die automatisch vorgegebene Einstellung).
Eine relevante Stelle = eine Stelle, die nicht Null ist (die Nuller mittendrin sind schon relevant;
die Nuller davor oder danach sind nicht relevant).
r_exakt[1] bedeutet, dass auf die 1.Zahl in r_exakt zugegriffen wird.
> r_plus_exakt:=r_exakt[1]; r_minus_exakt:=r_exakt[2];
r_plus_exakt := 3.677234657
r_minus_exakt := 0.0005653433066
numerische Berechnung/ Abschätzungen (jeweils nur 5
relevante Stellen)
Die quadratische Gleichung x2 − bx + c = 0 kann mit Hilfe der großen quadratischen
− (−b) ± (−b) 2 − 4.1.c b ± b 2 − 4c
=
gelöst werden.
2 .1
2
b + b 2 − 4c
b − b 2 − 4c
Die Lösungen sind somit r+ := x1 =
und r− := x2 =
, die wir
2
2
schrittweise aufbauen:
Lösungsformel x1, 2 =
a) b2
b) 4c
c) b2- 4c
b2 − 4 c
d)
Schritt a) bis Schritt d) sind bei r+ und r− gleich, bei den Schritten e) und f) kommt es zur
Unterscheidung in:
e+) b +
b2 − 4 c
b+
b2 − 4 c
f+)
2
e-) b −
b2 − 4 c
b−
b2 − 4 c
f-)
2
In jedem einzelnen Schritt prüfen wir, ob es zu Problemen (= Ungenauigkeiten) kommt, wenn
wir laut Angabe nur 5 relevante Stellen betrachten.
Digits gibt die Anzahl der Stellen bei numerischen Berechnungen an.
Genauer:
Die Genauigkeit für numerische Berechnungen mit Gleitkommazahlen (bzw. Gleitpunktzahlen
bzw. Fließkommazahlen) ist durch die Systemvariable Digits festgelegt und beträgt
normalerweise 10 Stellen. Durch eine Veränderung dieser Variable kann die Genauigkeit
eingestellt werden.
Wir wollen mit 5 Stellen rechnen, daher
> Digits:=5;
Digits := 5
2
a) b
> b^2;
13.526
b) 4c
> 4*c;
0.0083156
2
c) b - 4c
> b^2-4*c;
13.518
d) b2 − 4 c
> sqrt(b^2-4*c);
3.6767
e+) b + b2 − 4 c
> b+sqrt(b^2-4*c);
7.3545
f+)
b+
b2 − 4 c
2
> (b+sqrt(b^2-4*c))/2;
3.6773
e-) b − b − 4 c
> b-sqrt(b^2-4*c);
2
0.0011
f-)
b−
b2 − 4 c
2
> (b-sqrt(b^2-4*c))/2;
0.0005
Bei den in Schritt a) bis f+) verwendeten Operationen Multiplikation, Subtraktion (von 2
Zahlen, die NICHT fast gleich groß sind), Wurzelziehen und Division gibt es keine
Auslöschung und daher keine Ungenauigkeit beim Ergebnis. Das Ergebnis hat die selbe
( −3 )
Genauigkeit wie zuvor bei den Ausgangsdaten b = 3,6778 und c = 2,0789*10 , also 5
relevante Stellen.
Im Schritt f+) erhalten wir das Ergebnis für r+ mit gewünschter Genauigkeit (5 relevante
Stellen): 3.6773.
Nur bei Schritt e-) (und somit auch bei Schritt f-), wo nur zusätzlich noch durch 2 dividiert
wird) kommt es zu einer Ungenauigkeit. Das Ergebnis ist auf viel weniger als 5 relevante
Stellen genau. Im Schritt e-) sind es nur mehr 2 relevante Stellen, im Schritt f-) sogar nur mehr
eine!
Begründung:
Im Schritt e-) (und somit auch f-)) tritt der Effekt/das Problem der Auslöschung auf, d.h. zwei
fast gleich große (fehlerbehaftete!) Zahlen werden voneinander subtrahiert.
b und c wurden durch Messungen ermittelt und sind daher fehlerbehaftet. c ist sehr klein, daher
kann man bei den Zahlen b und b2 − 4 c von zwei fast gleich großen Zahlen sprechen, die
voneinander subtrahiert werden.
Bzgl r− unterscheidet sich das numerische Ergebnis (Schritt f-), nur eine relevante Stelle
aufgrund der Auslöschung) katastrophal von der exakten Lösung:
(Mit dem %-Zeichen wird auf den letzten Maple-Output zugegriffen)
> %=r_minus_exakt;
0.0005 = 0.0005653433066
r− kann aber auch mit Hilfe des Satzes von Vieta berechnet werden. Damit wird die
Auslöschungs-Subtraktion (im Schritt e-) und f-)) vermieden, weil wir die Division
verwenden. So bekommen wir die gewünschten 5 relevanten Stellen (siehe nächster
Abschnitt).
Satz von Vieta
Wir betrachten die quadratische Gleichung x2 − bx + c = 0 mit den beiden Lösungen r+ und r− .
Laut dem Satz von Vieta gilt, dass der Koeffizient c gleich dem Produkt der beiden Lösungen
ist: c = r+ * r−
c
Daraus folgt r− = .
r+
Das Ergebnis für r+ ist 3.6773 (laut Schritt f+)).
> r_minus_Vieta:=c/3.6773;
r_minus_Vieta := 0.00056534
> r_minus_Vieta=r_minus_exakt;
0.00056534 = 0.0005653433066
Mit der Anwendung des Satzes von Vieta erhalten wir die gewünschte Genauigkeit (5
relevante Stellen) für r− .
Herunterladen