Ich möchte ganz gern als motivierendes Beispiel ein Beispiel nehmen,
was ich jetzt in dem Schulbuch meines Sohnes kennengelernt habe und
das fand ich wirklich sehr interessant.
Das war sehr ausführlich dort beschrieben.
Ich bin sicher, dass 95 Prozent der Lehrer nicht in der Lage wären,
das Beispiel in dem Detail zu erklären, wie es da drin stand.
Ich gebe ehrlich zu, als ich mein Diplom in Mathe gemacht hatte, war
ich auch nicht in der Lage oder wäre ich auch nicht in der Lage
gewesen, das zu verstehen.
Ich möchte es Ihnen heute gerne beibringen, weil ich es ganz
interessant finde und wir einiges lernen können.
Okay, es geht um die Approximation der Zahl Pi, der Kreiszahl Pi.
Gut, die Aufgabenstellung, Pi zu approximieren, ist eigentlich
hirnrissig.
Sie wissen alle, dass es so eine Art Wettbewerb gibt, die
Nachkommastellen von Pi bis wer weiß, wie viele Nachkommastellen eben
genau zu berechnen.
Das heißt, wir könnten im Internet nachschauen, wenn wir uns eine
beliebige Genauigkeit von Pi interessiert und finden da wahrscheinlich
Antwort.
Okay, trotzdem machen wir uns jetzt mal aus dem Weg und sagen, wir
wollen das Pi approximieren.
Wie können wir das tun?
Wir wissen, dass der Kreisumfang 2PiR ist.
Wenn wir uns jetzt also den Einheitskreis hernehmen, der einen Radius
1 hat, haben wir den Umkreis 2Pi.
Also können wir, um Pi zu approximieren, den Umfang approximieren.
Und hier habe ich Ihnen jetzt mal den Kreis gezeichnet, den
Einheitskreis mit Radius 1.
Und wie können wir jetzt den Umfang eines Kreises approximieren?
Ja, die Idee ist, so Dreiecke reinzulegen und dann die Grundseiten,
die Seiten, die zu dem Kreis hin zeigen, als Approximation zu nehmen
für den Umfang des Kreises.
Wir fangen an mit sechs eingeschriebenen Dreiecken.
Gut, wenn wir sechs Stück da reinschreiben oder reinzeichnen, dann
sehen wir einmal von der Konstruktion her, dass das gleich schenkliche
Dreiecke sein müssen.
Dieser Winkel hier und der Winkel hier sind in jedem Fall identisch,
weil die Schenkel ja die Länge 1 haben.
Zusätzlich haben wir sechs eingezeichnet.
Das heißt, bei 360 Grad haben wir auch hier oben den Winkel 60 Grad.
Das ist also sogar ein gleichseitiges Dreieck.
Alle Seiten sind gleich lang und die Winkel sind alle 60 Grad.
Das heißt, diese Grundseite hier oben, die Sie sehen, das GN, hat die
Länge 1.
Das schreiben wir mal unter Beobachtungen.
Wir werden jetzt drei Beobachtungen formulieren.
Die erste haben wir uns gerade erarbeitet.
Ich schreibe mal G6.
G6 soll sich beziehen auf die Anzahl der Dreiecke.
G6, die Grundseite bei sechs Dreiecken, ist 1.
Eine zweite Beobachtung, die ist nicht so offensichtlich.
Da muss man sich noch mal an den Satz des Pythagoras erinnern aus der
Schule.
Das will ich jetzt auch gar nicht im Detail vormachen, aber Sie können
mir glauben, wenn wir den Satz des Pythagoras einmal anwenden, haben
wir dort stehen 1 Quadrat, also 1 ist gleich hn Quadrat, hier die
Höhe.
Ich meine, das sieht man ja hier auch.
hn Quadrat plus gn halbe zum Quadrat gibt hier die 1 Quadrat.
Das ist 1 Quadrat.
Also gn halbe zum Quadrat.
So, das ist eine Beobachtung.
Den Satz des Pythagoras können wir aber auch noch mal anwenden.
Und zwar ist die Idee, dass wir, nachdem wir jetzt hier diese n
Dreiecke anfänglich gezeichnet mit sechs Dreiecken betrachtet haben,
können wir die Sache verfeinern.
Ich meine, wir wollen das Ganze ja approximieren.
Wir wollen ja besser werden.
Und die Idee ist, dass wir mehr Dreiecke reinlegen, um den Umfang
etwas besser zu approximieren.
Und das habe ich hier mal rot gekennzeichnet.
Wir können eins dieser Dreiecke zusätzlich hier halbieren und zwei
neue Dreiecke aus dem einen Ursprünglichen generieren.
Das machen wir mit allen, somit verdoppelt sich die Anzahl der
Dreiecke.
Die Frage, die sich jetzt stellt, ist, wie die neue Grundseite g2n in
Beziehung steht zur Grundseite gn.
Und um das herzuleiten, wollen wir die Pythagoras noch mal anwenden.
Also g2n, verdoppelte Anzahl von Dreiecken zum Quadrat, das ist diese
Länge.
Dann haben wir, das ist das Gleiche nach dem Satz des Pythagoras als
gn halbe zum Quadrat.
Das ist diese Länge hier, diese hier.
Und dann fehlt uns noch dieses Stück hier, dieses kleine.
Dann haben wir hier wieder ein rechtwinkliges Dreieck und da wieder
einen Satz des Pythagoras angewendet.
Und diesen Teil können wir schreiben als 1 minus hn Quadrat.
Sehen Sie, das hier ist die 1, die rote Linie bis vorne hin.
Hier finden Sie die Höhe hn, die wir hier drüben eingezeichnet haben,
die finden Sie hier auch.
Das heißt, dieses kleine Stückchen ist 1 minus hn.
So weit, so gut.
Jetzt können wir aus dem Satz des Pythagoras, also den Beobachtungen 2
und 3, hn eliminieren und tatsächlich die neue Grundseite durch die
alte ausdrücken.
Also, aus zweitens und drittens folgt.
Das mache ich jetzt nicht vor, das ist eine einfache algebraische
Umformung, das kriegen Sie zu Hause alleine hin, das ist auch gar
nicht Sinn der Sache, sondern wir wollen einfach nur feststellen, das
können wir auflösen.
Also, die neue Grundseite bei verdoppelter Anzahl von Dreiecken
errechnet sich durch die Wurzel aus 2 minus der Wurzel aus 4 minus die
Grundseite, die wir vorher hatten, bevor wir verdoppelt haben.
So, was haben wir hergeleitet?
Wir haben eine rekursive Formel hergeleitet für die Grundseiten.
Die Ausgangsgrundseite G6 hat die Länge 1 und von da aus kann ich
durch die vorhergehende Grundseite die nächste Grundseite bei
Verdoppelung der Dreiecke durch diese Rekursion berechnen.
Wie ergibt sich dann eine Approximation von Pi?
Also, Pi, hatten wir gesagt, ist der Umfang halber beim Einheitskreis
und das approximieren wir durch Un halber.
Un ist jetzt unsere numerische Approximation des Umfangs.
Wie kommen wir denn jetzt auf diese Approximation?
Was denken Sie sich?
Wir haben hier die Länge der Grundseite Gn.
Da brauchen wir nur zählen, wie oft die vorkommt.
Das ist die Anzahl der Dreiecke und dann hätten wir als Approximation
oder tatsächlichen Wert für Un, so ist es definiert, n mal Gn.
Wir nehmen n mal die Grundseite und haben dann eine Approximation für
den Umfang.
Bei Verdoppelung wird die Anzahl der Dreiecke größer und die
Grundseiten werden immer kleiner.
Aber im Grenzfall sollte da schon Pi rauskommen.
So, jetzt können Sie das implementieren und das habe ich auch mal
gemacht, diese Formel im Computer und können sich mal anschauen, was
da rauskommt.
Das möchte ich Ihnen mal zeigen, das kann ich schlecht jetzt hier
hinschreiben, das ist eine relativ große Tabelle.
Schauen wir uns das mal an.
Die Anzahl der Dreiecke, ich habe gar nicht erst bei 6 angefangen, das
geht ja 6, 12, 24 und so weiter, sondern ich bin erst eingestiegen in
der Tabelle bei 49.152.
Ich habe Ihnen mal die Approximation, ich nenne es mal Pi unten n.
Pi unten n ist genau die von uns ermittelte Approximation von Pi.
Und hinten habe ich Ihnen mal den absoluten Fehler aufgetragen.
Also wir haben Pi, dieses Float Pi, da gehen wir nachher noch mal
genauer drauf ein.
Sie können sich vorstellen, die Zahl Pi können wir im Computer nicht
speichern.
Wie soll das gehen?
Die hat unendlich viele Nachkommastellen, das heißt, da werden wir
irgendwo abschneiden und eine sinnvolle Länge von Pi im Computer
abspeichern und das ist dieses Float Pi.
Das ist das im Computer auf, sagen wir mal, 16, 17 Nachkommastellen
repräsentierte Pi.
Und Pi n ist unsere Approximation, wir bilden die Differenz und den
absoluten Betrag davon, das ist der Fehler, der absolute Fehler.
Und Sie sehen, oder was Sie nicht genau sehen, aber das sage ich
Ihnen, wenn Sie das jetzt immer verdoppeln, kommen Sie bis zu einem
Fehler von 10 hoch minus 9.
Das schaffen Sie.
Das habe ich jetzt weggelassen vorne, weil die Tabelle sonst zu lang
ist.
Aber jetzt bleiben Sie irgendwie stecken.
Ja, jetzt geht es immer noch mal 10 hoch minus 9, trotz Verdopplung
der Dreiecke.
Und jetzt verdoppeln Sie wieder und jetzt fängt es sogar an, die
Approximation schlechter zu werden, bis zum Schluss die Approximation
von Pi sogar den Wert 6 bzw.
den Wert 0 dann annimmt.
Also man kann sagen, ab einer gewissen Anzahl von Dreiecken kommt dann
nur noch Murks raus und die Lösung wird immer schlechter, die
Approximation.
Und wir wollen heute lernen und erklären, woran das liegt.
Diese Tabelle stand tatsächlich in dem Schulbuch, ja, genau so drin.
Und da stand dann links ein bisschen die Erklärung, aber nur ganz vage
formuliert, das liegt an der endlichen Darstellung von Zahlen im
Computer.
Und das ist auch richtig.
Wir wollen heute verstehen, warum genau.
Wir werden auch verstehen, warum es genau bis 10 hoch minus 9 geht und
warum es dann instabil wird, warum dann nachher Murks rauskommt.
Okay.
Bevor wir das machen, leite ich jetzt mal eine andere Rekursion her,
von der wir noch nicht, Sie noch gar nicht nachvollziehen können,
warum die besser sein sollte, aber das müssen Sie dann, bevor Sie
heute den Raum hier verlassen, verstanden haben.
Also, ich schreibe mal hier, wir nennen mal diese Gleichung hier Stern
und sagen hier Stern mit Startwert
g6 gleich 1, den habe ich da gewählt bei der Berechnung, instabil, so
nenne ich das mal.
Das Wort bleibt noch vage, muss nachher ein bisschen präzisiert
werden.
Also instabil, da kommt was Schlechtes raus.
Besser ist Folgendes, ohne dass Sie es nachvollziehen können.
Wir nehmen mal das Quadrat von g2n, um die erste Wurzel einfach weg zu
haben.
Was haben wir dann da stehen?
Dann haben wir da nur noch stehen 2 minus Wurzel aus 4 minus gn².
Und die Idee, die wir jetzt haben, ist das mit einer dritten
binomischen Formel durchzumultiplizieren, also diesen gleichen
Ausdruck statt mit Minus hier auch noch mit Plus.
Dann müssen wir natürlich unten im Nenner das Gleiche machen, damit
wir den Wert nicht verändert haben.
So, was passiert?
Dritte binomische Formel, wir haben oben, wenn ich mich nicht irre, 4
minus 4 minus gn² durch 2 plus Wurzel 4 minus gn².
Und jetzt sehen Sie, fällt oben die 4 weg und wir haben nur noch gn²
durch 2 plus Wurzel aus 4 minus gn².
So weit, so gut.
Das heißt, wir können jetzt noch mal die Wurzel ziehen und hätten
jetzt eine alternative Rekursion.
g2n lässt sich auch berechnen, wenn wir die Wurzel aus den Quotienten
ziehen, wir die Wurzel aus dem Zähler und die Wurzel aus dem Nenner
und haben eine andere Darstellungsform von g2n.
Wir können es auch so machen.
Und es ist besser tatsächlich, wir wollen heute verstehen, warum.
Ich zeige Ihnen mal kurz die Daten.
So, das sind die Zahlen, wenn Sie das mit der Rekursion, die jetzt
gerade noch direkt oben drüber steht, die ich gerade hergeleitet habe,
berechnen.
Ich bin da auch mit der Anzahl der Dreiecken erst bei einer sehr
großen Zahl eingestiegen, aber wie Sie jetzt sehen, der absolute
Fehler ist tatsächlich irgendwann sogar Null.
Das heißt, ich kann alle im Computer dargestellten Nachkommazahlen
oder Stellen von Pi irgendwann durch meine Approximation auch
erreichen.
Keine Instabilität, sondern eine wunderschöne Konvergenz gegen dieses
Pi, wie es im Computer gespeichert ist.
Das sehen Sie hier.
Hier sind Sie schon im Bereich von 10 noch minus 16 und am Ende haben
Sie sogar Pi exakt erreicht, zumindest so, wie es im Computer
gespeichert ist.
Und jetzt wollen wir verstehen, warum das so ist.
Und dafür müssen wir einen kleinen Ausflug machen.
Dafür möchte ich Ihnen beibringen, wie wir Zahlen im Computer
darstellen.
Das ist die sogenannte Kleidpunktrechnung.
Das soll die Motivation sein dafür.
Erstens, Kleidpunktrechnung.
Das eine oder andere wird vielleicht Ihnen schon vertraut sein als
Informatiker oder Informatikerin, aber wir gehen mal trotzdem ein
bisschen ins Detail hier und klären die Darstellung, wie es im
Computer dargestellt wird.
Also eine Kleidpunktzahl.
Wie sieht die aus typischerweise?
Wir haben ein M, das steht für Mantisse.
Dann haben wir eine Basis B und einen Exponenten E.
Ja, die Basis ist typischerweise eine Zweierpotenz und wir rechnen
gerne in der Basis B gleich 10, in der 10er-Basis.
Wenn wir irgendwelche Zahlen hinschreiben im Computer, ist sehr oft
die Basis 2 gewählt, binär.
Aber wir lassen es jetzt erstmal noch ein bisschen allgemeiner.
Okay, schauen wir uns mal die einzelnen Größen ein bisschen genauer
an.
Der Exponent ist typischerweise oder ist in jedem Fall eine ganze Zahl
und hat eine untere Schranke, E-min.
Das ist der kleinste Exponent, den diese Zahl annehmen kann, das E.
Und das E wird geschrieben oder dargestellt als dieses E-min plus
etwas Positives.
Und zwar werden jetzt hier Potenzen von L, Entschuldigung, von B
genommen, gewählt mit Koeffizienten CL und bis zu einer gewissen
Länge, da mache ich mal einen kleinen Index E dran, das soll
sozusagen, ist die Anzahl an Stellen, an Koeffizienten, die mir zur
Verfügung stehen, um Potenzen von B zu multiplizieren und
aufzuaddieren.
Und wenn wir uns jetzt, also so wird es dargestellt, schreiben wir es
noch ganz kurz hier hinten hin, wobei die CL, die Koeffizienten, im
ganzzahligen Bereich 0 bis B minus 1 liegen.
Ja, das kennen Sie, wenn wir im Zehner-System sind, haben Sie die
Zahlen 0 bis 9 zur Verfügung.
Wenn wir im Binären sind mit B gleich 2, haben Sie nur 0 und 1 zur
Verfügung.
Also die Koeffizienten sind eingeschränkt in diesem Bereich.
Und jetzt können wir uns auch fragen, wann dieser Ausdruck hier
maximal wird.
Na sehen Sie, hier werden ja nur positive Dinge aufaddiert, das heißt,
es wird maximal, wenn wir die Koeffizienten maximal wählen, und zwar
alle B minus 1.
Und wenn Sie das machen, bekommen Sie ein, also hier muss ich
schreiben, kleiner gleich, kriegen Sie E min plus, gucke ich lieber
noch mal kurz nach, B hoch L E minus 1.
Genau.
Das ist der maximale Wert, hier hinten dieses B hoch L E minus 1.
Letztlich läuft das aus einer Teleskopsumme hinaus, wenn Sie da das B
minus 1 einsetzen, da bleibt der größte Exponent übrig und hinten der
kleinste.
Aber das kann man nachrechnen.
Und diesen Ausdruck definieren wir als den maximalen Exponenten, der
möglich ist.
Gut, also der Exponent liegt in so einem gewissen Zahlenbereich und
dieses L E, das ist natürlich eine ganze positive Zahl, also eine
natürliche Zahl, die sozusagen die Länge festlegt für den Exponenten.
Okay, gehen wir noch weiter und schauen uns die Mantisse ein bisschen
genauer an.
Die Mantisse M, wie sieht die jetzt aus?
Also die Mantisse ist entweder null, wenn wir die Zahl null darstellen
wollen, oder wir fordern, dass die Mantisse im Betrag, warum im
Betrag?
Die Mantisse hat ein Vorzeichen, Plus oder Minus, entscheidet darüber,
ob die Zahl positiv oder negativ ist.
Im Betrag soll die Mantisse streng kleiner sein als 1, aber dennoch
größer als b hoch minus 1.
Da schauen wir uns gleich nochmal genauer an, was das bedeutet.
Ich schreibe mal die Mantisse hin.
Die Mantisse sieht so aus, hat ein Vorzeichen und jetzt... Kleinen
Moment, ich habe einen Fehler gemacht, das fällt mir gerade auf.
Hier, das tut mir leid, in dieser Summe wollen wir tatsächlich auch L
gleich 0 ermöglichen, sodass wir da eine Konstante drauf addieren und
dann summieren wir auch nur bis LE minus 1.
Also die Summe müssen Sie verschieben um 1.
Da möchten wir bei 0 anfangen.
Also mit b hoch 0, mit einem konstanten Term, der ist da durchaus
möglich.
Das ist hier nämlich jetzt anders, deswegen kam ich drauf.
Hier bei der Mantisse haben wir auch eine Summe.
Wir haben auch Koeffizienten AL.
Eben hießen sie CL, jetzt AL, aber sie haben die gleiche Eigenschaft,
dass sie im zahlenbereich, ganz zahligen Bereich, zwischen 0 und b
minus 1 liegen.
Aber jetzt aufgepasst, wir wollen hier negative Potenzen von b
benutzen.
Und die erste negative Potenz fängt dann hier tatsächlich bei 1 an und
dann geht es bis L.
Jetzt sehen Sie auch, warum das eine Zahl ist, die kleiner sein muss
als 1.
Weil wir da nur vielfach von b hoch minus L aufaddieren mit
Koeffizienten, die kleiner sind, streng kleiner sind als b.
Also diese Sache hier ist klar von der Darstellung her, aber wir
fordern, dass der Betrag von m größer gleich b hoch minus 1 ist.
Was heißt denn das jetzt für diese Darstellung?
Das heißt, das hier ist äquivalent dazu, dass die erste
Nachkommastelle a1 bitte schön nicht 0 sein darf.
Die erste Nachkommastelle ist eine Zahl ungleich 0.
Der Koeffizient darf nicht verschwinden, sonst könnten wir diese
Ungleichung nicht garantieren.
Und das ist eine Art Normierung.
Sehen Sie, durch den Exponenten der Basis kann ich die Zahl sozusagen
hin und her verschieben, das Komma hin und her verschieben oder den
Punkt hin und her verschieben.
Das möchte ich nicht.
Ich möchte eine Art eindeutige Darstellung haben und deswegen fordere
ich, dass die erste Nachkommastelle in jedem Fall die ist, die
ungleich 0 ist.
Also das ist eine Normierung und die führt auf eindeutige Darstellung.
Okay, das L ist hier die Länge der Mantisse.
L ist Länge der Mantisse.
Und das ist natürlich auch eine natürliche Zahl.
Und die ist verantwortlich für
die relative Genauigkeit der Darstellung.
Für relative Genauigkeit der Darstellung.
Das müssen wir uns gleich nochmal ein bisschen genauer anschauen, was
ich damit meine.
Okay, wenn wir uns erst mal Gedanken gemacht haben, wie eine einzige
Zahl repräsentiert wird im Computer, also zumindest die normalisierte
Gleitpunktzahl, können wir die Menge aller Zahlen zusammenfassen und
bekommen dann ja die Menge der Gleitpunktzahlen oder Maschinenzahlen,
sage ich auch synonym dazu.
Das ist eine endliche Menge, wie Sie sich vorstellen können.
Also endliche Menge der Gleitpunktzahlen.
Und denen geben wir den Namen fl wie float.
Und das ist im Grunde genommen nur das Zusammenfassende, was wir oben
alles hingeschrieben haben.
Das sind jetzt Zahlen in der Form plus, minus.
Die haben ein Vorzeichen.
Jetzt quetsche ich aufgrund der besseren Lesbarkeit hier die Basis mit
dem Exponenten hin, damit das hinten jetzt nicht in die Quere kommt
mit der Summe, die wir in der Mantisse noch stehen haben.
Hier haben wir L ist gleich 1 bis L über AL mal B hoch minus L.
So und jetzt kommen all die Dinge, die wir oben beschrieben haben,
jetzt hier zusammen.
E, der Exponent, ist E min plus die Summe über L gleich 0 bis LE minus
1 CL mal BL, B hoch L.
Und die Koeffizienten allesamt, sowohl von der Mantisse als auch vom
Exponenten liegen zwischen 0 und B minus 1.
Okay?
So, das ist die Menge aller darstellbaren Zahlen, die ist endlich.
Und wie Sie sehen können, können wir keine irrationalen Zahlen hier
darstellen, sondern das sind alles rationale Zahlen.
Machen wir hier noch so einen Strich da, wie wir das kennen sollen.
Das ist die Menge der rationalen Zahlen, das sind Teilmenge davon,
endliche Teilmenge.
So, okay.
Irrationale Zahlen können wir nicht darstellen, wie Pi zum Beispiel.
Das ist keine Chance, können Sie so nicht darstellen, weil Sie nur
eine gewisse Menge an Nachkommastellen haben.
Welche Zahlen können wir denn und wie im Computer repräsentieren?
Die erste Voraussetzung ist, dass wegen der Endlichkeit dieser Menge
ich nur bis zu einer gewissen Größe oder Kleinheit überhaupt eine Zahl
im Computer darstellen kann.
Schauen wir uns das mal an.
Also jede Zahl,
können Sie auch die Null anschauen.
Die Null wird ein bisschen anders kodiert, tatsächlich über den
Exponenten, aber das schauen wir uns jetzt nicht im Detail an.
Die Null kann dargestellt werden im Computer, das wäre ja schlimm,
wenn nicht.
Aber jede andere Zahl ungleich Null mit der Eigenschaft, dass der
Betrag von dieser Zahl folgende Größe nicht übersteigt.
So, jetzt gucken wir uns das mal an.
Was ist die größte Maschinenzahl, die ich überhaupt generieren kann?
Das erste wird doch folgendes sein, ich werde den Exponenten so groß
machen, wie es geht.
Also, dass da jetzt irgendwie B hoch E-max auftaucht, ist nicht
überraschend.
Da habe ich alles rausgekitzelt, was hier vorne möglich ist.
Und jetzt die Frage, was kann ich erreichen in der Summe, in der
Mantisse?
Was kann ich erreichen, was am größten ist?
Naja, wenn ich jeden der Koeffizienten a, l maximal b-1 wähle.
Das ist das Größte, was möglich ist.
Wenn Sie sich das im Zehner-System vorstellen, wäre das die 0,999999
und so weiter.
Das ist das Größte, was Sie erreichen können.
Das ist sozusagen die bestmögliche Näherung von der Zahl 1, die Sie
erreichen können.
Die Mantisse ist ja kleiner als 1, aber das Größte wäre die 0,9999
oder im Binären eben 0,1111 und so weiter.
Und das kriegen wir in dieser Summe genau dann hin, wenn wir von der
1, das ja nie erreicht werden kann, tatsächlich hier hinten noch das b
hoch minus l abziehen.
Das ist die größte Mantisse, die Sie darstellen können.
Okay, das ist die größte Maschinenzahl.
Was ist die kleinste Maschinenzahl?
So, die kleinste Maschinenzahl.
Auch hier, wir werden sicher den Exponenten so klein wählen wie
möglich, mit b hoch e-min.
Welche kleinste Mantisse kann ich erreichen?
Aufgepasst, wir haben uns darauf verständigt, dass die Maschinenzahlen
normiert sind.
Ja, b hoch minus 1, genau.
Das ist das Kleinste, was wir erreichen können.
Das heißt, wir multiplizieren das mit b hoch minus 1, das heißt, wir
ziehen einfach hier oben noch eine 1 ab in dem Exponenten.
Das ist die kleinste darstellbare Maschinenzahl.
Also die kleinste positive.
Wir können das natürlich alles noch mit einem Minuszeichen spiegeln
auf die linke Seite des Zahlenstrahls, aber wir interessieren uns
jetzt hier nur für die Positiven.
So, jede solche Zahl, die in diesem Zahlenbereich liegt, auch wenn sie
real ist, kann nach Rundung im Computer dargestellt werden durch eine
Flowzahl.
Also nach einer möglichen Rundung.
Ja, und wie wollen wir runden?
Schauen wir uns das mal an.
Nehmen wir die Zahl mal her und entwickeln sie in dieser Basis.
Das heißt, ich kann das x in jedem Fall, auch wenn es eine irrationale
Zahl ist, selbst wenn es Pi wäre, dann hat sie ein Vorzeichen.
Ich kann sie normieren und im Unterschied zu dem, wie wir es
repräsentieren, muss ich hier eine Entwicklung zulassen, die bis
unendlich geht, die also nicht unbedingt abbricht.
Also jede reelle Zahl lässt sich tatsächlich so schreiben.
Ja, und wir haben tatsächlich die Normierung gefordert.
Das haben wir erreicht hier durch den Exponenten und die Koeffizienten
liegen alle in dem Zahlenbereich, den wir immer haben.
Der einzige Unterschied zu den Maschinenzahlen ist, dass wir hier nur
endliche Summe haben und das können wir natürlich nicht realisieren.
Und jetzt ist relativ klar, was wir jetzt machen.
Machen wir mal hier einen Punkt, damit der Satz da zu Ende geht.
Und schauen jetzt, was machen wir?
Das machen wir wie in der Schule.
Wir gehen an die entsprechende Stelle der Zahl, wo wir abschneiden
wollen, dann gehen wir noch eins weiter und jetzt gucken wir, ob diese
Zahl hinreichend klein ist, dann runden wir ab, schneiden also einfach
die Zahl ab.
Oder wenn diese Zahl hinreichend groß ist, dann addieren wir eine
Zahl, also vergrößern wir die letzte Nachkommastelle.
Können Sie das nachvollziehen?
Also wenn wir jetzt im Zehner-System denken und Sie hätten den 0,74
und Sie wollen nur auf die erste Stelle das Ganze darstellen, dann
schneiden Sie einfach bei 0,7 hinter der 7 ab, weil die 4 wird
abgerundet auf 0.
Hätten Sie 0,76, würden Sie aufrunden oder auch bei 0,75 auf 0,8.
Das haben Sie immer schon so gemacht und genau so machen wir es hier
auch.
Wir definieren eine Flow-Zahl, fl von x, das ist eine, die jetzt in
unserer Menge liegt, eine Gleitpunktzahl, auf folgende Art und Weise.
Wir schneiden einfach ab,
und zwar hinter der elten Nachkommastelle,
falls die darauf folgende Stelle oder Wert, der Koeffizient a l plus
1, naja, wenn der kleiner ist als die Hälfte von der Basis.
Dann runden wir ab und schneiden einfach ab.
Okay, was machen wir in dem Fall, dass das Größe gleich ist?
Wie ich eben schon sagte, wir nehmen die Zahl her, die abgeschnittene,
und addieren aber jetzt in die allerletzte Stelle eine 1.
Das machen wir in dem Fall, wenn der Koeffizient a l plus 1 größer
oder gleich b halber ist.
Das ist das ganz Klassische, auf- und abrunden.
Ich habe es mir ein bisschen einfacher gemacht und das so
hingeschrieben hier.
Ich nehme die abgeschnittene Zahl und addiere, dass dieses Addieren b
hoch minus l bedeutet eigentlich nur, dass ich den
Großeltenkoeffizient a l, also den Koeffizient mit a groß l, dass ich
den um 1 erhöhe.
Jetzt kann das ja in der Darstellung unter Umständen zu ein bisschen
umorganisieren führen.
Da könnte ja eine b minus 1 stehen, also im Dezimalsystem eine 9.
Wenn Sie die 9 erhöhen um 1, müssen Sie diese Übertragung auf die
nächste Nachkommastelle, diese Erhöhung auf die nächste
Nachkommastelle übertragen und so weiter und so fort.
Aber um diesen Formalismus zu ersparen, schreibe ich einfach plus b
hoch minus l.
Gegebenenfalls muss die Zahl neu organisiert werden.
Gegebenenfalls geht auch die Normalisierung verloren.
Gegebenenfalls muss sogar der Exponent modifiziert werden.
Aber es ist nichtsdestotrotz möglich, dies darzustellen als eine Flow
-Zahl.
Können Sie das nachvollziehen?
Okay, jetzt wollen wir uns Gedanken darüber machen, wie genau ist das
denn eigentlich?
Wenn ich also jetzt zum Beispiel die Zahl pi im Computer darstelle,
welchen Fehler mache ich denn da?
Welchen relativen Fehler?
Und das schauen wir uns an, jetzt im folgenden Fall.
Und da werden Sie dann auch erkennen, warum die Länge der Mantisse l
verantwortlich ist für die relative Genauigkeit.
Das wird jetzt deutlich werden, was wir oben schon geschrieben haben.
Gehen wir mal hin.
Wir nehmen die Zahl x her, die wir gerade oben verwendet haben.
Das ist nicht unbedingt eine Maschinenzahl.
Ziehen von dieser Zahl unsere im Computer dafür stehende Zahl, der
Float x ab.
Float x ist jetzt die Approximation im Computer.
Uns ist egal, ob das ein positives oder negatives Vorzeichen hat.
Also nehmen wir den Betrag davon.
Wir wollen den Fehler messen.
Und den wollen wir in Relation stellen zu der Größe x selber.
Das heißt, wir teilen hier nochmal durch den Betrag von x.
Das ist ein relativer Fehler.
Und zwar der relative Fehler in der Darstellung einer beliebigen Zahl
im Computer.
Ihnen ist klar, wenn das schon eine Maschinenzahl ist, dann kommt da
natürlich null raus.
Eine Maschinenzahl wird durch Float auf eine Maschinenzahl abgebildet.
Aber schauen wir uns das mal an, wie das im Allgemeinen funktioniert.
Wie können wir das abschätzen?
Sehen Sie, bei allen Größen x und Float x kommt letztlich dieses b
hoch e vor und kürzt sich somit raus.
Das ist etwas, was durch das Betrachten des relativen Fehlers dieser
Faktor b hoch e aus allen Größen rausfällt.
Das heißt, wir haben unten im Nenner nur noch den Betrag der Mantisse
stehen, wenn wir das kürzen.
Und was ist denn oben?
Wodurch unterscheiden sich x und Float x genau?
Was haben wir gerade gemacht?
Wir haben gerundet.
Und zwar in der l plus ersten Stelle haben wir geschaut, ob der Wert
kleiner als b halber ist oder größer als b halber ist.
Das heißt, die beiden Zahlen unterscheiden sich höchstens um b halber
in der l plus ersten Stelle.
Und der Wert ist b hoch minus minus in Klammern l plus eins.
Also die Unterscheidung ist höchstens um b halber.
Das ist die Entscheidung, ob wir ab- oder aufrunden.
Und in welcher Stelle tun wir das?
In der l plus ersten Stelle.
Und der Wert dieser Stelle ist b hoch minus l plus eins.
Okay.
Die Mantisse.
Eben haben Sie es ja schon deutlich gemacht.
Wir fragen uns jetzt, wann ist die Mantisse am kleinsten?
Wir wollen das weiter abschätzen.
Der Bruch wird größer, wenn ich den Nenner kleiner mache.
Wie klein kann ich den Nenner machen?
Maximal b hoch minus eins.
Das ist der kleinste Wert, den ich erreichen kann in der Mantisse
aufgrund der Normierung.
Ja, b hoch minus eins.
Das heißt, tut mir leid, das sind meine schwitzigen Finger, sehr
sensibel.
Müssen Sie mitleben.
So, jetzt haben wir oben ein paar Exponenten miteinander zu verarzten.
Wir haben b hoch minus l plus eins.
Wenn Sie die Minusklammer auslösen, dann steht da b hoch minus l minus
eins.
Das wird mit dem b vorne multipliziert.
Also bleibt neben dem einhalb nur b hoch minus l übrig.
Und wenn wir das jetzt noch mit dem unteren dort verarzten, haben wir
minus eins minus l halber.
Das b bringen wir hoch in den Zähler durch b hoch eins.
So, diese Größe... also erstmal sollen Sie sehen, wovon hängt jetzt
genau die relative Genauigkeit ab?
Oder dieser relative Fehler bei der Darstellung von reellen Zahlen im
Computer?
Gut, natürlich von der gewählten Basis, aber letztlich eben auch von
der Länge l der Mantisse.
Umso größer l ist, umso mehr Nachkommastellen Sie zur Verfügung
stellen, umso kleiner wird ja diese Größe.
Da steht ja b hoch minus l de facto oben im Zähler.
Das heißt, mehr Nachkommastellen, größere relative Genauigkeit.
Genauso soll es ja auch sein.
Macht ja Sinn.
Diese Größe hat einen Namen und heißt in vielen Fällen abs, das ist
die Maschinengenauigkeit.
Okay, wir kommen auch auf die Maschinengenauigkeit nochmal zurück.
Einerseits wollen wir uns gleich nochmal eine anschauliche Darstellung
der Maschinengenauigkeit herleiten, dass wir auf dem Zahlenstrahl
genau wissen, was die Maschinengenauigkeit ist.
Und zweitens wollen wir das für den Double Precision Fall genau mal
beziffern, wie groß ist denn das abs eigentlich.
Beides werden wir gleich noch machen.
Bevor wir das machen, möchte ich noch eine äquivalente Formulierung
dieser Zeile präsentieren, die wir auch benutzen.
Und das ist folgende.
Äquivalent können Sie sagen, die gerundete im Computer dargestellte
Zahl lässt sich schreiben als die ursprüngliche Zahl mal 1 plus
epsilon mit epsilon im Betrag kleiner gleich der Maschinengenauigkeit.
Warum?
Schauen Sie mal, wenn Sie das hier ausmultiplizieren, ich skizziere
das mal hier unten, dann haben Sie hier x stehen plus epsilon x.
Jetzt können Sie das x auf die andere Seite bringen und durch x teilen
und dann haben Sie eine solche Form float x minus x durch x gleich
epsilon.
Hier sehen Sie wieder diese relative Größe.
Wenn Sie nach dem epsilon auflösen, ist das der relative Fehler, aber
ohne den Betrag.
Und wenn wir das hier oben richtig gemacht haben und Sie jetzt den
Betrag darüber ziehen, dann sehen Sie auch, dass der Betrag von diesem
war epsilon hier kleiner sein muss oder kleiner gleich der
Maschinengenauigkeit.
Also hier, wenn das oben gilt, dann können Sie daraus folgern, dass
der Betrag von epsilon kleiner gleich abs ist.
Oben schreibe ich mal hier hin.
Und umgekehrt, wenn das untere für alle x richtig ist, können Sie das
oben herleiten.
Das ist eine Äquivalenz.
Gut, was wollen wir als nächstes machen?
Geben wir noch einen kleinen Tipp zum Exponentenüberlauf und
Unterlauf.
Was ist damit gemeint hier in dem Kontext?
Wenn ich jetzt eine Zahl habe, die nicht die Null ist und die liegt
eben nicht in dem Zahlenbereich, den wir eben oben angeschaut haben.
Der Zahlenbereich oben garantierte uns ja, dass wir das in dem
Computer durch Rundung darstellen können.
Wenn wir also jetzt betraglich kleiner sind als die kleinste
darstellbare Maschinenzahl, dann haben wir einen Exponentenunterlauf
und Exponentenüberlauf.
Naja, das ist klar, wenn der Betrag von x größer ist als die maximal
zur Verfügung stehende Gleitpunktzahl.
Und die hatten wir eben auch schon oben genau beschrieben.
Maximaler Exponent, maximale Mantisse.
Okay, der Exponentenunterlauf, den kann man noch ein bisschen
auffangen und das wird auch tatsächlich gemacht.
Ich habe ja jetzt eine Art untere Grenze gesetzt, dass wir sagen,
kleinere Zahlen können wir nicht darstellen.
Was man dann technisch macht, ist, dass man die Normierung aufgibt.
Man erlaubt, dass es auch in der ersten Nachkommastelle eine Null ist
und kann so noch kleinere Zahlen darstellen.
Aber das ist eine technische Feinheit.
Okay, so, wie können wir jetzt rechnen im Computer?
Das möchte ich gerne als erstes vormachen.
Wir haben ja die Operation zum Beispiel Plus, Minus, Mal und Geteilt.
Und wie gehen wir jetzt damit um?
Sie können sich vorstellen, dass wenn wir zwei Maschinenzahlen
miteinander verknüpfen, durch was auch immer, durch Plus, Mal, Minus,
Geteilt, dass das Ergebnis nicht unbedingt wieder eine Maschinenzahl
ist.
Also letztlich gar nicht dargestellt werden kann im Computer.
Das heißt, wir müssen am Ende gegebenenfalls wieder runden, um das
Ganze darzustellen.
Und so wollen wir das auch jetzt hier verstehen.
Also für Operationen Kringel.
Und Kringel ist eine Operation, die soll in dem Plus, dem Minus, dem
Mal und dem Geteilt entsprechen.
Und wir gehen jetzt davon aus, dass eine Gleitpunktrealisierung
folgendermaßen definiert ist.
Wir nehmen zwei Maschinenzahlen her,
verknüpfen die miteinander und hier möchte ich ganz gerne die
Konvention treffen, dass wenn wir im Computer etwas errechnen, dass
wir über die Verknüpfung ein kleines Dach machen.
Also ein Plus mit einem Dach heißt, das ist die Addition im Computer.
Ein Unterschied zu der Addition, die wir auf dem Papier durchführen.
Und wie wollen wir eine solche Computerverknüpfung jetzt verstehen?
Wir verknüpfen die beiden Maschinenzahlen mit der gewöhnlichen
Verknüpfung und müssen gegebenenfalls am Ende runden, weil das
Ergebnis nicht unbedingt eine Maschinenzahl ist.
Und weil wir das so definiert haben und am Ende runden und wir eben
gesehen haben, dass die der relative Fehler kleiner ist als die
Maschinenzahl, können wir das Ansatz auch so schreiben.
X verknüpft mit Y kann aufgrund dieses Fehlers, den wir eben
betrachtet werden, verstanden werden, als die tatsächliche Verknüpfung
mal 1 plus Y und Y ist betraglich kleiner gleich der
Maschinengenauigkeit.
Das ist das Schlimmste, mit dem wir rechnen müssen.
Wenn wir Zahlen verknüpfen im Computer, wenn wir am Ende einfach noch
wieder runden müssen, um eine Maschinenzahl zu erhalten, dann ist der
relative Fehler in der ganzen Geschichte kleiner als Y.
Ja, was ist zu sagen zu den Operationen im Computer?
Was Sie vielleicht nicht verwundert, ist, dass die Grächengesetze, die
wir sonst so kennen, gegebenenfalls nicht mehr gelten und so ist es
so, dass die Addition im Computer nicht mehr assoziativ ist.
Nicht assoziativ.
Das kann man anschaulich relativ gut klar machen, wenn Sie zu der 1
etwas dazu addieren, was so klein ist, dass Sie nicht die
nächstgrößere Zahl, bei Weitem nicht die nächstgrößere Zahl,
Maschinenzahl größer als 1 erreichen, wird wieder abgerundet auf 1.
Können Sie das nachvollziehen?
Sie addieren zu 1 etwas ganz, ganz, ganz Kleines, kann nicht
dargestellt werden als Maschinenzahl, wird wieder abgerundet auf die
1.
Also das Szenario ist sehr plausibel.
Jetzt addieren Sie das sehr, sehr, sehr Kleine immer wieder drauf,
dann wird immer wieder abgerundet, immer wieder abgerundet.
Jetzt ändern Sie die Reihenfolge, in denen Sie diese Manten
aufaddieren und addieren das sehr, sehr Kleine erstmal alles zusammen.
Und dann kann es doch so groß sein, dass, wenn Sie es dann zu 1 drauf
addieren, tatsächlich ein anderes Ergebnis rauskommt.
Können Sie das nachvollziehen?
Also, es hängt sehr wohl von der Reihenfolge ab, wie man Dinge
aufaddiert im Computer, also diese Geschichte ist nicht assoziativ.
Okay, jetzt würde ich ganz gerne noch eine anschauliche Interpretation
von der Maschinengenauigkeit Epsilon geben.
Genau da anknüpfen, was ich gerade ansprach.
Also anschauliche
Deutung der Maschinengenauigkeit.
Deutung von Epsilon.
Und dann machen wir genau das, was ich gerade sagte.
Wir nehmen hier den Zahlenstrahl her, zeichnen mal hier die 1 ein.
Die 1 können wir sicher darstellen im Computer.
Wie können wir die 1 darstellen im Computer?
In normalisierter Gleitpunktdarstellung wäre das 0,1.
Dann käme eine 0.
Jetzt kommen hier lauter 0.
Die ganze Mantisse ist mit 0 angefüllt.
Ich zeichne mal noch die letzten beiden, das hat einen guten Grund,
das sehen Sie gleich.
Und jetzt muss ich das Ganze noch mit B multiplizieren, um die 1 zu
erhalten.
Die erste Nachkommastelle steht ja für B hoch minus 1.
Und jetzt multiplizieren Sie es mit dem B hinten durch und erhalten
den Wert 1.
Also das ist die Darstellung der 1 im Computer.
Und die Frage, die sich jetzt stellt, ist, welches ist die nächste
darstellbare Zahl im Computer rechts von 1?
Also die kleinste Maschinenzahl größer 1.
Die kleinste Maschinenzahl größer 1.
Was meinen Sie?
Was kann ich denn hier verändern, damit ich die nächste Maschinenzahl
bekomme?
Die Idee wird doch sein, hier hinten die 0 in der allerletzten Stelle
zu einer 1 zu machen.
Dann habe ich die nächstgrößere Maschinenzahl erreicht.
Also gut, machen wir das mal.
So, das hier ist jetzt 0,1001 mal B, oder?
Gut, so weit, so gut.
Jetzt wollen wir diesen Ausdruck mal wieder über B-Potenzen
hinschreiben.
Und zwar können wir das folgendermaßen schreiben.
Das ist die 1 plus... die 1, die ja kodiert ist in dieser 1,
modifiziert mit dem B.
So, wie können wir die 1, den Wert dieser 1 hier hinten schreiben?
Das ist B hoch minus L mal B, weil wir ja noch das B haben.
Der Wert dieser 1 hier ist B hoch minus L.
Aha, das ist 1 plus B hoch 1 minus L.
Und wenn Sie sich vielleicht noch erinnern an die Definition der
Maschinengenauigkeit, dann ist das tatsächlich 1 plus 2 mal EPS.
Bei der Maschinengenauigkeit hatten wir exakt diesen Ausdruck noch
durch 2 geteilt.
Aha, die nächstgrößere darstellbare Maschinenzahl nach der 1 ist also
1 plus 2 EPS.
So, wann wird jetzt aufgerundet auf 1 plus 2 EPS und wann wird nur
abgerundet auf 1?
Genau, in der Mitte des Intervalls.
Also hier, die Mitte machen wir hier.
Und an welchen Abstand habe ich hier?
Das hier ist genau der Abstand EPS.
Wenn Sie also zu der 1 eine Zahl addieren, die streng kleiner ist als
EPS, was passiert?
Es wird wieder abgerundet auf 1.
Was ist, wenn Sie jetzt die Zahl, die kleiner ist als EPS, mehrfach
auf sich selber addieren?
Dann werden Sie irgendwann das EPS überschreiten und dann können Sie 1
plus diese Zahl und landen bei 1 plus 2 EPS.
Nochmal zu der Assoziativität, die wir eben angesprochen haben.
Schreiben wir das nochmal als mathematische Formel hierhin, als
Endergebnis.
Also, wenn ich zu der 1 im Computer eine Zahl addiere, die positiv ist
oder nicht negativ ist und kleiner ist als EPS, dann wird abgerundet.
Sie können also EPS, die Maschinengenauigkeit, auch verstehen als die
kleinste positive Zahl, die aufaddiert auf 1 eine andere Maschinenzahl
ergibt.
Das ist eine andere Deutung der Maschinengenauigkeit.
Also hier steht 1 plus EPS wird auf 2 EPS gerundet.
1 plus 2 EPS gerundet.
Okay?
Gut, aber denken Sie nicht, die Maschinengenauigkeit wäre irgendwie
die kleinste darstellbare Zahl im Computer.
Das ist bei weitem nicht so.
Es ist die kleinste Zahl, die auf 1 addiert eine andere Maschinenzahl
ergibt.
Das halten wir mal fest.
Es ist aber nicht die kleinste Zahl, die darstellbar ist.
Und das zeige ich Ihnen jetzt mal konkret an einem Beispiel.
Ja, ich nenne das Double Precision.
Fast alle Rechnungen, die wir machen, machen wir in diesem Format.
Und nach dem IEEE-Standard haben wir 8 Byte zur Verfügung, um eine
Zahl darzustellen.
Das entspricht, 1 Byte entspricht 8 Bit.
Das heißt, wir haben 64 Bit.
Die Basis ist hier 2.
Wir haben also nur Nullen und Einsen.
Wir haben also 64 Stellen zur Verfügung, die wir mit Nullen und Einsen
belegen können, um die Zahl zu repräsentieren.
Gut, wie sind die aufgeteilt?
Wir haben einmal ein Vorzeichenbit.
Ja, 0 und 1 repräsentiert dann einfach Plus und Minus.
Das ist einfach.
Jetzt haben wir nur noch 63 zur Verfügung.
Von den 63 werden 11 spendiert für den Exponenten.
Bleiben noch 52 für die Mantisse übrig.
Das heißt, L ist gleich 52.
Schreiben wir das nochmal kurz davor.
L ist gleich 52.
So, was hat das für Konsequenzen in Bezug auf den Zahlenbereich, den
wir darstellen können?
Die kleinste positive darstellbare Zahl, die hatten wir ja eben mit b
hoch e-1 bezeichnet, ist in diesem Kontext ungefähr 10 hoch minus 308.
Aber wenn Sie das in die Zweierpotenz umrechnen, ist das ungefähr 2
hoch minus 1024, irgendwas um den Dreh.
Aber wenn Sie das in die Zehnerbasis umrechnen, 10 hoch minus 308, die
größte Zahl, die Sie darstellen können,
ist ungefähr 10 hoch 308.
Das ist so symmetrisch um die Null herum.
Das sind die Eckdaten.
Was ist mit der Maschinengenauigkeit?
Die Maschinengenauigkeit EPS, er rechnete sich ja als b hoch 1 minus L
halbe.
Da b 2 ist, müsste das doch einfach b hoch minus L sein, hier in dem
Fall.
b gleich 2 und das ist ungefähr in der Zehnerpotenz 2.2 mal 10 hoch
minus 16.
Vielleicht ist Ihnen das schon mal über den Weg gelaufen.
In der Zehnerbasis können Sie also ungefähr 16 Nachkommastellen
repräsentieren im Computer.
Ja, im Binärsystem sind es tatsächlich 52 Nachkommastellen.
Wenn Sie das umrechnen, im Zehnersystem sind es ungefähr 16.
Aber Sie sehen sehr deutlich, die Maschinenzahl ist bei Weitem nicht
die kleinste Zahl, die darstellbar ist, sondern es gibt darstellbare
Zahlen in der Größenordnung von 10 hoch minus 300.
Also bitte nicht denken, weil eine Zahl kleiner ist als die
Maschinengenauigkeit, würde sie auf Null gerundet.
Das ist falsch.
Es können sehr, sehr viele kleinere Zahlen im Computer dargestellt
werden.
Okay, was ist in dem Kontext noch zu erwähnen?
Wenn wir uns die Normierung in Erinnerung rufen, die Normierung sagte,
die erste Nachkommastelle ist immer ungleich Null.
Ja, aber wenn ich noch nur Nullen und Einsen habe, bedeutet das, dass
die erste Nachkommastelle immer eins ist.
Da brauche ich ja gar nicht abzuspeichern, wenn das immer so ist.
Und die Zahl Null wird tatsächlich in diesem Standard nicht über die
Mantisse kodiert, sondern über einen bestimmten Exponenten.
Das heißt, ich kann davon ausgehen, dass die erste Nachkommastelle
immer eins ist.
Und dann brauche ich sie nicht zu speichern und kann die 52 Stellen,
die ich habe, spendieren für die zweite bis zur 53.
Stelle.
Ja, ich erhalte eine höhere relative Genauigkeit in dem Standard.
Also schreiben wir uns das vielleicht mit der Null nochmal kurz hin.
Das wäre der einzige Fall, der uns vielleicht stört.
Die Null wird über einen bestimmten Exponenten kodiert.
Dadurch geht das e-min um eins hoch.
So um den Drehraum ist das.
Ein Exponent ist dafür reserviert.
Das heißt,
wir haben immer a1 gleich 1.
Das ist ja klar, dass das nur bei der Basis b gleich 2 funktioniert,
wo ich nur die Nullen und die Einsen zur Verfügung habe.
Aber da geht das eben.
Und dann ist die Konsequenz, brauche nicht gespeichert zu werden.
Brauche nicht gespeichert zu werden.
Und dann heißt das, dass wir nutzen die 52 Bits für zweite bis 53.
Nachkommastelle.
Das heißt, wir kriegen in diesem Standard eine etwas bessere relative
Genauigkeit.
Wir müssten das, was wir oben im Allgemeinen hergeleitet haben, jetzt
nochmal genauer anschauen.
Die Konsequenz, die ich jetzt hinschreibe, das, was wir gerade oben
gemacht haben, für die kleinste Maschinenzahl, die größer ist als 1,
die ist jetzt nicht mehr 1 plus 2 Apps, sondern 1 plus Apps.
Also hier in diesem konkreten Beispiel oder in diesem Standard ist
hier die 1 und hier ist 1 plus Apps.
Und das ist tatsächlich eine, ja, ich schreibe mal, wie soll ich es
machen?
Float und machen wir mal Index 2 hier an das Float, um zu
signalisieren, die Basis ist 2.
Nur da geht das, diese ganze Idee.
Okay, das wird also schon hier in der Mitte, diesmal ist dieser
Abstand hier Apps, halbe.
Also das führt ständig jedes Semester zu Verwirrungen.
In der allgemeinen Theorie ist die Maschinengenauigkeit die kleinste
Zahl, die auf 1 addiert, eine andere Maschinenzahl ergibt.
In diesem konkreten Beispiel und wenn Sie im Computer rechnen, rechnen
zu 99 Prozent in diesem Format, ist es Epsilon halbe.
Epsilon halbe ist die kleinste Zahl, die Sie auf 1 addiert, eine
andere Maschinenzahl ergibt und zwar 1 plus Apps.
Und das liegt daran, dass wir in der Normalisierung eine zusätzliche
Stelle zur Verfügung haben.
Okay, haben Sie noch Fragen?
Wenn das nicht der Fall ist, würden wir ein bisschen weggehen,
Gleitkommazahlen haben wir jetzt erstmal erledigt.
Das Phänomen von Anfang der Vorlesung ist noch nicht erklärt, kommt
noch.
Machen wir uns jetzt mal Gedanken über Fehlerquellen.
Wo können Fehler auftreten?
So, wir haben in der Regel für unseren Algorithmus Eingabedaten, ein
Input.
Das stecken wir in unser numerisches Verfahren und das numerische
Verfahren sollte ein Resultat ausspucken.
Warum Resultat und nicht Lösung?
Im besten Fall wäre auch das die Lösung des Problems, was wir gerade
lösen wollen, aber wir müssen, das werden wir auf jeden Fall auch
kennenlernen in diesem Semester, immer wieder Situationen, wo wir gar
nicht die Lösung genau berechnen können, sondern auch die Lösung
wieder nur approximativ bestimmen können.
Deswegen nenne ich das Resultat.
Wo können jetzt Fehler auftauchen?
Fehler können natürlich schon ganz hier vorne auftauchen und zwar sind
das Rundungsfehler.
Alleine wenn Sie Zahlen im Computer darstellen wollen, haben wir eben
schon gelernt, das geht gar nicht immer.
Ich muss gegebenenfalls runden und schon haben Sie einen
Rundungsfehler.
Das heißt, Sie können nie davon ausgehen, dass Ihre Eingabedaten
perfekt sind.
Mit Rundungsfehlern müssen Sie immer rechnen.
Gegebenenfalls sind Sie sogar an irgendeiner Messstation und haben
sowas wie Messfehler.
Die sind typischerweise viel größer als die Rundungsfehler und wenn
ich das weiß, kann ich das auch ausnutzen und kann größere Fehler auch
in meinem numerischen Verfahren zulassen.
Aber ich muss davon ausgehen, dass Eingabedaten gestört sind oder mit
Fehlern behaftet sind.
Das numerische Verfahren kann auch Fehler aufweisen.
Wiederum Rundungsfehler.
Zahlen werden verknüpft und das Ergebnis ist keine Maschinenzahl und
es muss wieder gerundet werden.
Eine Sache, die wir auch kennenlernen werden, ist ein
Approximationsfehler.
Ja, letztlich hatten wir das auch schon bei der Anwendung mit der
Näherungsweisenberechnung von Pi.
Ich iteriere, wir haben ja immer wieder Dreiecke verdoppelt, die
Anzahl der Dreiecke verdoppelt und so weiter.
Wir haben uns angenähert und irgendwann, wir haben dann das Pi, wie es
im Computer berechnet war, haben wir natürlich exakt oder das Pi, wie
es im Computer dargestellt ist, konnten wir exakt berechnen.
Okay, aber es ist klar, dass wir die Zahl Pi nur annähern können und
Sie könnten jetzt sagen, nach acht Schritten, das reicht mir.
Dann haben Sie einen Approximationsfehler, weil Sie das Pi nicht
perfekt berechnet haben, aber vorher Ihre Rechnung aufhören, weil Sie
Ressourcen sparen wollen.
Also es gibt viele Algorithmen, die iterativ sich der Lösung nähern
und irgendwann sagen, ist gut genug, reicht mir.
Dann haben Sie per se schon einen Approximationsfehler, weil Sie
vorher aufgehört haben, die Approximation, also Sie haben vorher
aufgehört mit Ihrer Approximation, weil das Ergebnis Ihnen ausreicht,
die Genauigkeit des Ergebnisses.
Also das nennt man Approximationsfehler.
Dazu gibt es noch einen Diskretisierungsfehler.
Es gibt Dinge, die sind kontinuierlich in ihrer Darstellung, zum
Beispiel durch eine Funktion und wir können das nicht widerspiegeln im
Computer.
Wir müssen diskrete Werte annehmen und die kontinuierliche Dynamik
durch diskrete Zeitwerte zum Beispiel approximieren.
Das wäre ein Diskretisierungsfehler.
Das werden wir im Laufe der Vorlesung auch mal kurz anschauen, spielt
aber keine so ganz große Rolle bei uns.
Okay, das hat natürlich alles Auswirkungen auf das Resultat, können
Sie sich vorstellen.
Und wir werden jetzt zwei verschiedene Auswirkungen uns anschauen.
Also die Auswirkung, Auswirkung von Fehlern im numerischen Verfahren
auf das Resultat.
Sehen Sie, wenn ich die Auswirkungen anschaue von Fehlern im
numerischen Verfahren, nicht in den Eingabedaten, sondern in dem
numerischen Verfahren, dann führt das auf die sogenannte Stabilität
des Verfahrens.
Das ist die Frage nach der Stabilität des Verfahrens.
Ja, und es ist natürlich klar, dass wir hier in der numerischen
Mathematik daran interessiert sind, möglichst stabile Verfahren zu
entwickeln.
Rundungsfehler und Approximationsfehler, die innerhalb des Verfahrens
auftreten, sollen bitteschön keine große Auswirkung haben auf das
Resultat.
Und wir nennen einen Algorithmus stabil, wenn das der Fall ist, wenn
die Auswirkung nicht groß ist.
Wir werden das noch ein bisschen präziser formulieren.
Wenn die Auswirkung groß ist, und das war bei dem Beispiel, was ich am
Anfang gebracht habe, da waren Rundungsfehler im Algorithmus so groß,
dass das Resultat stark verfälscht wurde.
Und das ist ein instabiler Algorithmus.
Aber den Grund dafür müssen wir uns auch nochmal genauer anschauen.
Ich weiß nicht, ob wir das heute noch schaffen, aber spätestens am
Freitag.
So, jetzt können wir aber auch auf der anderen Seite die Auswirkungen
von Fehlern in den Eingabedaten untersuchen.
Und das macht die numerische Mathematik auch.
Und die Auswirkungen auf das Resultat.
Da blenden wir aus, dass Fehler in dem numerischen Algorithmus
passieren.
Im Gegenteil, wir tun so, als ob wir die perfekte Lösungsmethode
haben.
Es wird überhaupt kein Fehler generiert beim Lösen.
Das gibt es natürlich nicht, aber es hilft, um die Kondition des
Problems zu untersuchen.
Also das hier führt auf die Kondition des Problems, völlig unabhängig
von dem Algorithmus.
Sehen Sie, wenn schon das Problem so gestaltet ist, dass Störungen in
den Eingabedaten auch so ein ganz anderes Ergebnis führen, was soll
denn dann bitteschön noch der numerische Algorithmus leisten oder
nicht leisten?
Und das machen wir jetzt gerade mal ganz konkret, dass wir uns die
Kondition des Problems genauer anschauen.
Ich male Ihnen das noch mal ganz kurz schematisch hin.
Wir haben Eingabedaten und, naja, die sind eben mit Fehlern behaftet.
Fehler in Eingabedaten.
Hier stören wir ein bisschen.
Fehler nenne ich auch manchmal Störungen an der Stelle.
Jetzt haben wir hier ein optimales Lösungsverfahren.
Optimales Verfahren.
Ich schreibe mal ein bisschen kürzer.
Ja, der Algorithmus ist perfekt.
Der macht überhaupt keine Fehler.
Und trotzdem haben wir jetzt Fehler in der Lösung oder im Resultat.
Fehler in Lösung.
Hier schreibe ich bewusst Lösung, weil wenn wir keine Fehler hätten in
den Eingabedaten, hätten wir durch das optimale Verfahren wirklich die
Lösung des Problems gefunden.
Ich mache erst mal zwei Beispiele, um Ihnen das deutlich zu machen.
Das eine, also ich empfinde das immer ein bisschen als Zauberei.
Die Mathematik kennt keine Zauberei, alles ist erklärbar.
Aber am Anfang ist es doch wirklich sehr überraschend.
Und ich hoffe, ich mache Sie ein bisschen neugierig.
Wir schauen uns ein gleiches System an.
Ein lineares gleiches System werden wir am Freitag noch in Ruhe
machen, ausführlich.
Das hier ist ein ganz einfaches, keine Sorge, ein LGS A X gleich B.
Sowas hätten Sie vielleicht schon in der Schule haben können.
Das ist nämlich ein Zwei-Kreuz-Zwei-System.
Die Matrix A besteht nur aus zwei Zeilen und zwei Spalten.
1, 1, 1, 1, minus Epsilon.
Und dann haben wir noch eine rechte Seite B.
Da haben wir hier stehen 4 und 4 minus Epsilon.
Und von dem Epsilon fordern wir, dass es nicht 0 ist.
Sonst hätten wir hier eine singuläre Matrix.
Das ist auch tatsächlich genau das Problem.
Aber so ist es keine singuläre Matrix.
Aber das ist ein Parameter, der ist wirklich viel, viel kleiner als 1.
Sehr kleine Zahl.
Theoretisch ist die Matrix regulär invertierbar.
Determinante und gleich 0.
Und Sie wissen, wenn Sie eine reguläre Matrix haben, können Sie die
Inverse bilden und dann haben wir die Lösung.
Die Lösung des Problems können wir hinschreiben.
Lösung, die ist x, gleich a hoch minus 1 mal b.
Und die habe ich ausgerechnet.
Das können Sie auch kurz verifizieren.
3, 1.
Setzen Sie es kurz ein, ausmodifizieren.
Klappt.
Glauben Sie es mir.
Ja, das geht.
So, was machen wir jetzt?
Stören.
Wir stören.
Und zwar nur rechte Seite.
Also nicht die Matrix A.
Die Matrix A bleibt in den Eingabedaten, sind die Matrix A und die
rechte Seite B.
Das sind die Eingabedaten.
Und jetzt haben wir ein optimales Lösungsverfahren, theoretisch hier
nämlich die Inverse, die uns das Ergebnis liefert.
Wir werden schon am Freitag sehen, dass wir die Inverse in der Praxis
nicht brauchen.
Aber es ist ein theoretisches optimales Lösungsverfahren.
Und jetzt stören wir mal in der rechten Seite und haben ein neues B
-Schlange.
Das ist eine gestörte Größe.
Das ist die rechte Seite B.
Und in dieser rechten Seite B addieren wir oben ein epsilon und unten
ein minus epsilon.
Was hat das für eine Konsequenz?
Das ist im Grunde genommen B, oder?
Lassen Sie epsilon 10 hoch minus 20 sein oder irgendwas.
Ganz leicht gestört.
Ganz leicht gestört in der oberen und in der unteren Komponente.
Und wenn Sie jetzt x-Schlange ausrechnen, die Lösung des gestörten
Systems, dann ist das wieder die Inverse multipliziert mal die
gestörte rechte Seite.
Und jetzt wird es überraschend.
Obwohl wir die Eingabedaten nur winzig gestört haben, ist die Lösung
nun folgende.
1, 3, plus epsilon.
Können Sie das nachvollziehen?
Ich finde das überraschend.
Einmal haben wir die Lösung 3, 1 und bei einer noch so kleinen
Epsilonstörung der rechten Seite kriegen wir auf einmal die Lösung 1,
3.
Gut, oben noch plus epsilon.
Vertauscht sich komplett.
Die Lösung hat nichts mehr miteinander zu tun.
Dieses Problem an sich ist in dem Sinne schlecht konditioniert.
Kleine Störungen in den Eingabedaten haben extrem große Auswirkungen
auf die Lösung.
Trotz optimalem Lösungsverfahren.
Und wir würden also hier sagen, dieses LGS ist schlecht konditioniert.
Über die Konditionen von linearen Gleichungssystemen werden wir das
eine ganze Vorlesung lang auseinander untersuchen.
Okay, also das ist nur ein kleiner Vorgeschmack.
Jetzt kommt das Beispiel B.
Das ist jetzt schon wichtig im Hinblick auf das motivierende Beispiel
vom Anfang der Vorlesung.
Wir wollen uns mal die Konditionen von einer Summe anschauen.
Kondition von Summe.
Einfach x plus y.
Mehr nicht.
Das scheint doch wirklich einfach zu sein, oder?
Wir nehmen einfach zwei Zahlen her und addieren die.
Wie können wir jetzt stören?
Wir können den Wert x und den Wert y ein bisschen stören.
Wir können an den beiden Werten wackeln und wir untersuchen jetzt eine
relative Störung.
Relative Störung oder Störungen in x und y.
Und zwar machen wir das so.
Wir nennen die gestörte Größe wie oben auch.
Versehen wir mit einer Schlange.
Und das ist x multipliziert mit 1 plus y.
Das haben Sie eben schon mal gesehen.
Wenn ich das so multipliziere mit 1 plus y, dann bedeutet das, dass
ich diese Größe relativ zur eigenen Größe gestört habe im Rahmen von
y.
Und genauso machen wir das mit y.
Das stören wir auch ein bisschen.
Da brauche ich hier eine andere Störung als hier.
Deswegen gebe ich dem oberen den Index x und unten den Index y.
Und wir fordern noch,
dass der Betrag von yx und der Betrag von yy, dass die irgendwie
gedeckelt werden können durch ein gemeinsames y.
Und das ist sehr klein.
Also wie immer betrachten wir kleine Störungen.
Wenn ich was groß störe, dann kann sich das natürlich auch groß auf
die Lösung auswirken und ist nicht sehr interessant.
Die Frage ist immer, wie wirken sich kleine Störungen der Eingabedaten
auf das Ergebnis aus.
Dann schauen wir uns das mal an, wie sich das jetzt auswirkt hier.
Wir nehmen jetzt die gestörten Daten und addieren die, ziehen davon
das perfekte Ergebnis ab, bilden die Differenz, um den Fehler, den
absoluten Fehler davon zu untersuchen, aber wir stellen das wieder in
Relation zu der Größe des Ergebnisses.
Das ist wieder ein relativer Fehler, eine relative Abweichung des
Resultats.
Wenn Sie das jetzt einfach einsetzen, das x-Schlange und das y
-Schlange, wie wir es oben definiert haben, dann fällt relativ viel
weg.
Dann haben wir hier stehen yx mal x plus yy mal y geteilt durch x plus
y.
Aufgepasst, hier steht noch gleich.
Noch habe ich nicht abgeschätzt, sondern bis hierhin habe ich nur
umgeformt.
Jetzt schätze ich mal ab, indem ich oben die Dreiecksungleichung
anwende und die obere Schranke von unseren Ys hier investiere, dann
habe ich hier stehen y mal Betrag x plus Betrag y durch x plus y.
So, was können wir alles lernen aus diesem Beispiel?
Fangen wir mal hinten an.
Wenn x und y das gleiche Vorzeichen haben, dann kürzt sich das hier zu
1.
1, falls x mal y größer 0.
Wenn x und y das gleiche Vorzeichen haben, spielt die
Dreiecksungleichung tatsächlich keine Ungleichung und dann kürzt sich
das alles weg.
Was haben wir dann erreicht?
Wenn wir das lesen, dann können wir, wenn wir kleinstören in den
Anfangsdaten, haben wir eine kleine relative Abweichung im Ergebnis.
Wunderbar, gut konditioniert.
Das Addieren von zwei Zahlen mit gleichem Vorzeichen ist wunderbar
konditioniert.
Was passiert, wenn wir zwei Zahlen addieren, die betraglich fast
gleich groß sind, aber unterschiedliches Vorzeichen haben?
Mit anderen Worten, wir ziehen zwei Zahlen voneinander ab, die fast
gleich groß sind.
Was passiert da?
Schauen Sie mal hier hin.
Dann steht hier eine sehr, sehr kleine Zahl und dann ist dieser
Ausdruck hier gegebenenfalls sehr, sehr groß.
Das ist ein großes Problem in der numerischen Mathematik.
Das ist das Phänomen der Auslöschung.
Das schreiben wir gleich noch eben hin.
Also, wenn Sie zwei fast gleich große Zahlen voneinander abziehen,
kommt es zu dem Phänomen der Auslöschung.
Warum?
Die Zahlen sind fast gleich groß, das heißt, die Nachkommastellen sind
zumindest vorne fast identisch.
Erst weiter hinten unterscheiden Sie sich ein bisschen.
Weiter hinten, die Nachkommastellen sind aber keine vertrauenswürdigen
Stellen, weil da ist schon ein paar mal gerundet worden.
Können Sie nachvollziehen?
In den Rechnungen vorher haben wir gerundet.
Jetzt ziehen Sie diese beiden Zahlen voneinander ab und die
vertrauenswürdigen Nachkommastellen vorne heben sich auf, löschen sich
aus.
Und die fehlerbehafteten Nachkommastellen, die hinten sind, rutschen
nach vorne und machen die Differenz aus.
Großes Problem.
Und das genau ist auch passiert in dem Beispiel.
Also lassen Sie uns noch die zwei Sachen hier hinschreiben.
Falls x mal y größer 0, dann ist das gut konditioniert.
Und wenn x ungefähr minus y ist, dann schreibe ich hierhin
Auslöschung.
Und das ist ein Problem.
Dann kann das Resultat, dann können Fehler, die wir vorher gemacht
haben, hier in yx und yy kodiert, können verstärkt werden.
Und das ist eine Katastrophe.
Und um jetzt den Kreis zu schließen zu dem Beispiel, was ich ganz am
Anfang gebracht habe, gucken Sie sich das mal an.
Diese Gleichung hier, die Sterngleichung, die wir anfangs benutzt
haben.
Sehen Sie, das Gn, die Länge der Grundseiten, wird immer kleiner,
immer kleiner.
Das heißt, die Wurzel aus 4 minus Gn² ist im Grunde genommen
irgendwann 2.
Hier vorne steht auch eine 2.
Das heißt, hier bilden Sie die Differenz von zwei gleichgroßen Zahlen.
Der Fehler, den Sie da machen, wird irgendwann im Bereich von 10 noch
minus 16 liegen.
Und durch die äußere Wurzel kommen wir genau bei der 10 noch minus 9
oder 8 raus, die wir in den Tabellen sehen.
Katastrophe.
Vermeiden Sie also das Auslöschen, das Abziehen von zwei gleichgroßen
Zahlen, wenn es vermeidbar ist.
Danke für die Geduld, dass ich noch zwei Sätze sagen darf.
Schauen Sie die neue, die andere stabilere Variante des Algorithmus
an.
Dort steht im Nenner nur noch ein Plus.
Zwei Zahlen gleichen Vorzeichens werden addiert.
Kein Problem.
Und damit bedanke ich mich für Ihre Geduld und wir sehen uns am
Freitag wieder, wenn Sie wollen.