Mathematik für Informatiker Einführung an praktischen Beispielen aus der Welt der Computer Bearbeitet von Manfred Brill 1. Auflage 2001. Taschenbuch. 447 S. Paperback ISBN 978 3 446 21733 1 Format (B x L): 16,9 x 24 cm Gewicht: 833 g Zu Inhaltsverzeichnis schnell und portofrei erhältlich bei Die Online-Fachbuchhandlung beck-shop.de ist spezialisiert auf Fachbücher, insbesondere Recht, Steuern und Wirtschaft. Im Sortiment finden Sie alle Medien (Bücher, Zeitschriften, CDs, eBooks, etc.) aller Verlage. Ergänzt wird das Programm durch Services wie Neuerscheinungsdienst oder Zusammenstellungen von Büchern zu Sonderpreisen. Der Shop führt mehr als 8 Millionen Produkte. Kapitel 2 Zahlen Warum Informatiker Zahlen kennen müssen Der verschiedenen Zahlensysteme wie rationale und reelle Zahlen müssen auf dem Computer zur Verfügung stehen. Dazu können die Stellenwertsysteme verwendet werden. Insgesamt gibt es Darstellungen für ganze, rationale und reelle Zahlen. Die auf einem Computer zur Verfügung stehenden Zahlen sind endlich, auch wenn es inzwischen sehr viele sind. Für die Repräsentation von Dezimalbrüchen werden Gleitpunktsysteme eingeführt. In diesen Zahlensystemen kommt es zu Ungenauigkeiten bei der Eingabe und bei Berechnungen. Bei der Implementierung von komplexen Algorithmen muss dies berücksichtigt werden. 2.1 Zahlensysteme Die natürlichen Zahlen sind andeutungsweise schon bei der vollständigen Induktion aufgetaucht. In letzter Zeit wird die Zahl 0 zu den natürlichen Zahlen hinzugefügt. In diesem Buch beginnen die natürlichen Zahlen immer bei 1. Als Symbole für natürliche Zahlen benutzen wir meist die Kleinbuchstaben k; m oder n. In der modernen Mathematik werden Begriffe wie die natürlichen Zahlen durch einen Satz von Axiomen definiert. Wir versuchen durch die wesentlichen Eigenschaften einen Begriff eindeutig zu beschreiben. Die natürlichen Zahlen können wir mit den Axiomen von Peano charakterisieren, die Rechengesetze, die wir kennen, sind daraus herleitbar. Definition 2.1: (Peano-Axiome) Die natürlichen Zahlen sind die Zahlen mit den folgenden Eigenschaften: P1: 1 ist eine natürliche Zahl. 34 2 Zahlen P2: Jede natürliche Zahl n besitzt einen Nachfolger n+ . P3: Es gibt keine natürliche Zahl n mit n+ P4: Gilt für m und n die Beziehung m + = = 1 n + . , dann ist m = n. P5: Eine Aussage, die für 1 und für jeden Nachfolger n+ jeder natürlichen Zahl, für die sie richtig ist, gilt, ist richtig für alle natürlichen Zahlen. Die Axiome P1 und P3 sagen aus, dass die Zahl 1 die kleinste“ natürliche Zahl ist, ” aus dem Axiom P2 erkennen wir, dass es keine größte natürliche Zahl geben kann, insgesamt existieren also unendlich viele natürliche Zahlen. Das Axiom P5 bildet die Grundlage der vollständigen Induktion, die wir bereits als Beweisverfahren kennen gelernt haben. Für die natürlichen Zahlen gibt es einen Ordnungsbegriff. Eine natürliche Zahl m ist kleiner als“ n, in Zeichen m < n genau dann, wenn es eine natürliche Zahl k ” gibt mit m + k = n. Analog definieren wir das Zeichen >“. ” Die Addition von natürlichen Zahlen ist abgeschlossen, denn das Ergebnis der Operation n + m ergibt wieder eine natürliche Zahl. Anders verhält es sich bei der Subtraktion n m, denn offensichtlich hat 4 6 keine natürliche Zahl als Ergebnis. Um dieses Malheur zu beseitigen, führen wir die ganzen Zahlen ÿ ÿ : : : ; ÿ3; ÿ2; ÿ1; 0; 1; 2; 3; : : : ein. Zusätzlich zu < und > können wir jetzt das Symbol einführen, n 0 bedeutet, dass n größer oder gleich 0 ist, also nicht negativ. Analog definieren wir das Symbol . ý ü ý Definition 2.2: Den Absolutbetrag einer ganzen Zahl n definieren wir als jnj ûÿ 0 ( = n ÿn jj ý für n 0; für n < 0: ÿ! 4 1 2 3 - 4 Abbildung 2.1: Der Absolutbetrag einer Zahl Beispiele: ÿ ÿ jj 4 ; jÿ6j = 6 = 4 Anschaulich stellt der Absolutbetrag einer ganzen Zahl den Abstand zwischen der Zahl und der Zahl 0 dar, wie Abbildung 2.1 zeigt. 2.1 Zahlensysteme 35 Satz 2.1: Der Absolutbetrag einer Zahl erfüllt jnj ý 0 . Beweis: Wir nutzen aus, dass eine ganze Zahl entweder negativ, positiv oder gleich Null ist. Für n 0 ist ý jnj dieser Fall ist bewiesen. Ist n < 0, dann erhalten wir = n ý 0; jnj ÿn > = 0 : Auch in diesem Fall ist der Beweis vollzogen, der Fall ebenfalls richtig. n = 0 ist wegen 0 ý 0 þ Satz 2.2: Für alle ganzen Zahlen n und m gelten die Eigenschaften jn þ mj jnj þ jmj, Dreiecksungleichung: jn mj ü jnj jmj, jn ÿ mj ü jnj jmj, und jjnj ÿ jmjj ü jn ÿ mj. = + + + Die Division zweier ganzer Zahlen ist nicht abgeschlossen, beispielsweise ist das Ergebnis von 4 : 2 die ganze Zahl 2, das Ergebnis von 4 : 3 stellt allerdings keine ganze Zahl mehr dar. Wir benötigen Brüche oder rationale Zahlen. Wir übernehmen die Rechenoperationen Addition, Subtraktion, Multiplikation und Division sowie die Ordnungsbegriffe von den ganzen Zahlen und erhalten zusätzlich ein inverses Element der Multiplikation: Zu jeder rationalen Zahl q = 0 gibt es eine rationale Zahl q ÿ1 mit q q ÿ1 = 1. Wir können die rationalen Zahlen als Lösung der Gleichung ÿ ÿ 6 þ nþx =m für ganze Zahlen m und n interpretieren, dadurch gelangen wir zu der allgemeinen Darstellung p = m für jede rationale Zahl p. Für den Absolutbetrag erhalten n wir zusätzlich jpj für q = 0: p = q jqj jj 6 Das Element q ÿ1 ist der Kehrwert q1 der ganzen Zahl q . Eine wichtige Eigenschaft der rationalen Zahlen ist die Tatsache, dass sie keine Lücken haben. Für zwei rationale Zahlen p und q mit p < q gibt es immer mindestens eine rationale Zahl r mit p < r < q. Wir können für r zum Beispiel das arithmetische Mittel p+2 q nehmen. Neben den Grundrechenarten kennen wir die Potenzrechnung. Wir definieren für die natürliche Zahl n an als n-faches Produkt von a mit sich selbst: a n = |a þ a þ{zþþþ þ a} : n-mal 36 2 Zahlen þ Für die Potenzen gilt die Regel an am = an+m , und damit können wir den Begriff der Wurzel aus einer Zahl einführen: Wir suchen eine Zahl mit x x = a, die Lösung ist 1 þ p x = a = a: p16 = 4. Obwohl die rationalen Zahlen sich 2; p 2 Wir wissen schon längst, 4 = beliebig nahe kommen können, entspricht nicht jeder Punkt auf dem Zahlenstrahl einer rationalen Zahl. Satz 2.3: Die Zahl p ist keine rationale Zahl. 2 Beweis: Für den Beweis legen wir ein Quadrat der Seitenlänge 1 wie in Abbildung 2.2 mit der Diagonalen auf die Zahlengerade. Jeder Punkt auf der Zahlengerade ent- ÿ 2 ÿ 1 0 1 2 3 4 Abbildung 2.2: Konstruktion der irrationalen Zahl p 2 spricht einer Zahl. Falls die Länge der Diagonalen dieses Quadrats eine rationale 2 ) = 2, denn Zahl ist, muss es zwei natürliche Zahlen m und n geben mit ( m n das Quadrat der Seitenlänge der Diagonale muss nach dem Satz von Pythagoras gleich der Summe der Quadrate der Längen der Katheten sein. 2 Nehmen wir an, dass m und n zwei natürliche Zahlen mit ( m ) = 2 sind, wir n 2 m gehen weiterhin davon aus, dass der Bruch n bereits gekürzt ist. Aus m = 2 n2 erhalten wir m2 = 2n2 . m2 ist also eine gerade Zahl, und damit ist auch m selbst gerade. Es gibt eine natürliche Zahl r mit m = 2r. Setzen wir diese Zahl ein und kürzen den Bruch, erhalten wir 2r2 = n2 ; n2 ist gerade und auch n selbst. Wenn m und n gerade sind, können wir den Bruch mn mit 2 kürzen, was jedoch ausgeschlossen war. Wir haben einen Widerspruch konstruiert, es gibt keine ganzen Zahlen m und n mit 2 = m . þ n p p Zahlen wie 2, die nicht rational sind, nennen wir irrational. Wir können für die Gesamtheit der rationalen und irrationalen Zahlen, die so genannten reellen Zahlen, alle Rechengesetze der rationalen Zahlen übernehmen. Für jede natürliche Zahl n und jede positive reelle Zahl a gibt es eine eindeutig bestimmte positive reelle Zahl b mit bn = a. Dieses b nennen wir n-te Wurzel aus a“ und schreiben ” p 1 b = n a = an : Wir können die Wurzelrechnung als Umkehrung der Potenzrechnung interpretieren. Wenn wir b und n kennen, ist a das Ergebnis der Potenzierung, kennen wir a und n, ziehen wir die Wurzel. Kennen wir die Zahl a und die Zahl b und suchen den Exponenten n, dann betreiben wir Logarithmenrechnung: der Logarithmus einer positiven reellen Zahl a zur Basis b ist derjenige Exponent n, der die Gleichung 2.1 Zahlensysteme b 37 a erfüllt. Wir nennen n ”den Logarithmus von a zur Basis b“ und schreiben n = log a; dabei ist b 6= 1. Für einige spezielle Werte von b gibt es eigene Symbole. Wichtige Basen sind die irrationale Euler’sche Zahl e, die Basis b = 10 und für Informatiker insbesondere b = 2. In Tabelle 2.1 finden wir die entsprechenden Symbole. n = b Tabelle 2.1: Wichtige Logarithmen und ihre Symbole Symbol Basis ld x b ln x b = log x b = 10 =2 e Wir führen an dieser Stelle eine Schreibweise ein, die vielen Neulingen bei der Beschäftigung mit höherer“ Mathematik Schwierigkeiten bereitet. Bei der Defi” nition der Potenz an hatten wir Punkte : : : benutzt; dies ist zwar oft sehr anschaulich, jedoch bei Mathematikern verpönt. Statt dessen führen wir Symbole für eine Summe oder ein Produkt von n Zahlen ein. In der Sprache der Informatik führen wir damit etwas wie Schleifen ein. Definition 2.3: Für die Summe von n Zahlen schreiben wir X n a i = a + 1 a 2 + þþþ + a n ÿ 1 a ; + n P nennen wir Summenzeichen, i Summationsindex, i=1 1 ist die untere und n die obere Summationsgrenze. Für das Produkt von n Zahlen schreiben wir Y n a þa a i = 1 2 þ þþþ þ a ÿ n 1 a ; + n Q nennen wir Produktzeichen, i Multiplikationsindex und die Grenzen Multiplikai=1 tionsgrenzen. Wir zählen die wichtigsten Rechenregeln auf, die eine direkte Konsequenz aus den Rechenregeln für reelle Zahlen sind: X n X n X n X n i=1 a X m a i = i=1 ca i = c i=1 ( i + i=1 a = n þ a; i=1 b)= X n i i + X n X a=a ; n i=1 a; Y n i n a n i + n i=1 i=1 a X Y a i = b; Y n i i=1 a ; m < n; a; i i=1 i i = XX m i=1 j =1 Y Y n ab n a i=1 XX m a ij = b; i i i=1 i=1 n Y n n i=1 i i=m+1 c n a : ij j =1 i=1 38 2 Zahlen Die reellen Zahlen sind bezüglich der Grundrechenarten abgeschlossen. Was stört, ist, dass es nicht gelingt, der Wurzel aus einer negativen Zahl einen Sinn zu geben, es gibt keine reelle Zahl mit x = 1. Dieses Problem tritt auf, wenn wir die Gleichung x2 + 1 = 0 lösen wollen – sie hat keine reelle Lösung. Zu diesem Zweck führen wir die imaginäre Einheit i mit i2 = 1 ein und definieren komplexe Zahlen z als z = x + iy . x nennen wir Realteil, y Imaginärteil von z . Zu z = x + iy bilden wir die konjugiert komplexe Zahl z 0 = x iy . Prinzipiell sind komplexe Zahlen also Paare reeller Zahlen, wir können sie zwar nicht mehr auf einem Zahlenstrahl, aber in der Gauß’schen Zahlenebene darstellen. Es gibt eine Übertragung des Absolutbetrages; wir definieren pÿ ÿ jzj für eine komplexe Zahl z = = p x x + iy. 2 + y 6y 1 ÿ 2 z =1+i - z = ÿ1 ÿ i 1 x Abbildung 2.3: Die komplexe Zahlenebene Die Addition komplexer Zahlen ist definiert durch x + iy) + (u + iv) = (x + u) + i(y + v); ( die Multiplikation durch x + iy) þ (u + iv) = xu + xvi + yui + yvi = (xu ÿ yv ) + i(xv + yu) 2 ( Bei der Division von komplexen Zahlen müssen wir berücksichtigen, dass das Resultat zz12 wieder als komplexe Zahl dargestellt werden muss. Dies erreichen wir, indem wir den Nenner reell machen, was wir durch Erweiterung mit z20 erreichen. Insgesamt erhalten wir x + iy u + iv = xu + xv u +v 2 2 Dies können wir kurz darstellen als z z 1 2 = + i yu ÿ xv u +v 2 2 z z0 jz j 1 2 2 2 Im folgenden Satz fassen wir die wichtigsten Eigenschaften von komplexen Zahlen zusammen, der Beweis kann immer durch Nachrechnen erbracht werden. 2.1 Zahlensysteme 39 Satz 2.4: Für komplexe Zahlen z; z1 ; z2 gilt: zz 0 = jz j , 0 0 0 (z ú z ) = z ú z , 0 0 0 1 )0 = (z z ) = z z ; ( 2 00 (z ) = z . 2 1 1 2 2 1 1 2 2 0 z z1 z z2 0 , Wir entwickeln jetzt eine Darstellung von komplexen Zahlen, die bei der Multiplikation und der Potenzrechnung sehr nützlich ist. Für eine komplexe Zahl z = x + iy = 0 setzen wir r = z und für ÿ den Winkel zwischen der positiven x-Achse und der Linie zwischen dem Punkt (0; 0) und z , dann erhalten wir mit dem Satz von Pythagoras 6 jj x = r cos ÿ; y = r sin ÿ: Damit können wir die komplexe Zahl z darstellen als z = r cos ÿ + ir sin ÿ = r(cos ÿ + r sin ÿ): Diese Darstellung nennen wir Polarkoordinatendarstellung der komplexen Zahl z . 6 z = x + iy y = r sin ÿ ÿ x = r cos ÿ - Abbildung 2.4: Die Polarkoordinatendarstellung komplexer Zahlen Die Zahl r nennen wir Betrag, den Winkel ÿ Argument. Er ist nicht eindeutig bestimmt, durch die Addition von Vielfachen von 2þ erhalten wir diesselbe komplexe Zahl. Deshalb vereinbaren wir die zusätzliche Bedingung þ < ÿ þ , der dadurch eindeutig bestimmten Winkel heißt Hauptargument. Beispiele: ÿ ÿ Die komplexe Zahl z = 1+ p i 3 hat den Betrag r p ÿ ÿ; 3 = 2 sin ÿ; p 1+3 = 2 . Aus 1 = 2 cos erhalten wir das Hauptargument ÿ þ= ÿ tendarstellung z = 2 cos þ3 + i sin þ3 . ÿÿ p = ü þ 3 = 60 Æ und damit die Polarkoordina- p ÿ ÿ Die komplexe Zahl z = 1 i hat den Betrag 2 und aus cos ÿ = sin ÿ = p12 erhalten wir das Hauptargument ÿ = 34þ = 135Æ und damit die Polarkoorþ ÿ dinatendarstellung z = 2 cos ÿ43þ + i sin ÿ43þ . ÿ 40 2 Zahlen Mit Hilfe der Polarkoordinatendarstellung können wir Multiplikation und Division komplexer Zahlen eine geometrische Deutung geben. Multiplizieren wir zwei komplexe Zahlen z 1 = r 1 (cos ÿ i sin ÿ ); z + 1 1 = 2 r ÿ 2 (cos 2 + i sin ÿ 2) in Polarkoordinatendarstellung, erhalten wir zz 1 2 rr = r r = ÿ cos ÿ (cos (ÿ + ÿ 1 2 [cos 1 2 1 2 1 2 ÿ i(sin ÿ ) + i sin (ÿ + ÿ )): sin ÿ 1 sin ÿ 2 1 + 1 cos ÿ 2 + cos ÿ 1 sin ÿ 2 )] 2 Das Produkt zweier komplexer Zahlen erhalten wir also durch Multiplizieren der Beträge und Addition der Argumente. Ganz analog erhalten wir den Quotienten z1 für z2 = 0 zweier komplexer Zahlen durch Division der Beträge und durch die z2 Subtraktion der Argumente. 6 6 Æ 90 iz z - Abbildung 2.5: Multiplikation einer komplexen Zahl mit i Beispiel: Die imaginäre Einheit i hat den Betrag 1 und den Winkel ÿ = þ2 = 90Æ . Multiplizieren wir eine komplexe Zahl z mit i, bleibt der Betrag von z unverändert, das Argument des Produkts ist um 90Æ größer als das von z . Anschaulich entspricht die Multiplikation von z mit i einer Drehung von z um 90Æ entgegen dem Uhrzeigersinn. Für komplexe Zahlen in Polarkoordinatendarstellung können wir die Potenzen z n schnell berechnen. Für eine natürliche Zahl n und eine komplexe Zahl z = r(cos ÿ + i sin ÿ) erhalten wir z n darüberhinaus setzen wir z ÿn = = r n (cos nÿ + i sin nÿ); n . Im Fall r = 1 gilt die Formel von DeMoivre. 1 z Satz 2.5: (Formel von DeMoivre) Für eine natürliche Zahl n und (cos ÿ + i sin ÿ) n = cos ÿþ < ÿ ü þ gilt nÿ + i sin nÿ: Die Umkehrung der Potenzrechnung, das Wurzelziehen, können wir mit dieser Formel auch auf komplexe Zahlen übertragen. Die n-te Wurzel einer komplexen 1 Zahl z ist die Lösung w der Gleichung wn = z , wir schreiben w = z n . Wir schreiben w = ý(cos ü + i sin ü) und z = r(cos ÿ + i sin ÿ) in Polarkoordinatendarstellung, dadurch erhalten wir die Gleichung ý n (cos nü + i sin nü) = r(cos ÿ + i sin ÿ): 2.1 Zahlensysteme 41 Vergleichen wir die Beträge, dann erhalten wir ý = rn; 1 außerdem muss nü = cos ÿ; sin nü = sin ÿ erfüllt sein. Die Winkel ý und nü unterscheiden sich nur durch Vielfache von 2þ : nü = ÿ + 2kþ; k = 0; ú1; ú2; : : : cos oder ÿ 2kþ + ; k = 0; ú1; ú2; : : : : n n Als n-te Wurzel einer komplexen Zahl z = r(cos ÿ + i sin ÿ) erhalten wir damit ý ÿ 2kþ ü p 1 ÿ 2kþ n n z = r cos ( + ) + i sin ( + ) ; k = 0; ú1; ú2; : : : : n n n n k kann zwar unendlich viele Werte annehmen, es gibt allerdings nur für k = 0; 1; 2; þþþ n ÿ 1 unterschiedliche Wurzeln. Damit hat eine komplexe Zahl z genau n verschiedene n-te Wurzeln p ý ÿ 2kþ ) + i sin ( ÿ + 2kþ )ü ; k = 0; 1; 2; þþþ n ÿ 1: 1 z n = n r cos ( + n n n n ü= 6 p 1 +i 6 i 3 - ÿ 2 1 Abbildung 2.6: ÿp 1 z3 i 1 1 ÿ 3 i für z = ÿ8 1 Abbildung 2.7: z 4 für z = 1 Beispiele: ÿ - ÿ ÿ Wir ziehen die dritten Wurzeln aus z = 8. Das Hauptargument ist ÿ der Betrag ist 8. Damit erhalten wir insgesamt drei Wurzeln, nämlich û 2 ý 2 cos þ + i sin þú = 1+ p; i = ÿþ, 3 þ + sin þ) = ÿ2; ü p þ + i sin 5 = 1 ÿ i 3: 3 3 2 (cos cos þ 5 3 p 3 In Abbildung 2.6 erkennen wir, dass die n-ten Wurzeln einer komplexen Zahl auf einem Kreis mit Radius n r um z = 0 liegen, im Abstand von 2nþ . Wollen wir alle n-Wurzeln bestimmen, dann reicht es also, eine zu kennen, wir erhalten die restlichen n 1 durch Drehung um 2nþ gegen den Uhrzeigersinn. ÿ 42 2 Zahlen ÿ Wir ziehen die vierten Wurzeln aus 1. Eine Wurzel ist sicher z = 1 selbst, wir drehen sukzessive um 24þ = þ2 = 90Æ , wir erhalten die Wurzeln 1; i; 1; i. Die n-ten Wurzeln der komplexen Zahl 1 nennen wir Einheitswurzeln, sie verteilen sich auf dem Einheitskreis. ÿ ÿ 2.2 Stellenwertsysteme Jede natürliche Zahl n lässt sich als Summe von Potenzen der natürlichen Zahl 10 darstellen. Beispielsweise ist die Zahl 125 zusammengesetzt als 125 = 1 100 + 2 10 + 5 1, allgemein können wir þ þ n=a 0 10 0 + a 1 1 10 + a 2 2 10 + þþþ X k a + k k 10 = þ a 10 i i i=0 ü ü schreiben, dabei ist 100 = 1 und 0 ai 9, die Darstellung bricht irgendwann bei einer Zehnerpotenz 10k ab, auch wenn für eine große Zahl n dieses k unangenehm groß werden kann. Das Dezimalsystem besteht darin, die Koeffizienten in umgekehrter Reihenfolge aufzuschreiben: n=a a k k ÿ 1 :::a a : 1 0 Etwas schwerer wird dieses Verfahren, wenn wir eine reelle und nicht ganze Zahl x darstellen wollen. Es gibt eine ganze Zahl g mit g < x < g + 1. Diese Strecke auf dem Zahlenstrahl zwischen g und g + 1 teilen wir in 10 gleiche Teile, wir nummerieren diese Teile von links nach rechts mit 0 bis 9 durch. In einem dieser Teile liegt x. In Abbildung 2.8 liegt sie zwischen g = 2 und g + 1 = 3, x liegt im Teilabschnitt i = 2. ÿ - ÿ 2 1 0 1 x 2 3 4 Abbildung 2.8: Konstruktion der Dezimaldarstellung einer reellen Zahl Die Nummer des Teilabschnitts ist dÿ1 = i. Fällt x mit dem linken Endpunkt des Teilabschnitts zusammen, dann ist der Algorithmus beendet. Für x gibt es die Darstellung x = g + dÿ1 10ÿ1 . Im anderen Fall muss x zwischen g + dÿ1 10ÿ1 und g + (dÿ1 + 1) 10ÿ1 liegen. Diese Strecke hat nur noch die Länge 101 , wir können sie aber immer noch in 10 gleiche Stücke teilen und erhalten analog zu dÿ1 eine Zahl dÿ2 . Ist x jetzt gleich dem linken Endpunkt eines Teilstücks, erhalten wir die Darstellung x = g + dÿ1 10ÿ1 + dÿ2 10ÿ2 , oder aber es gilt die Ungleichung þ þ g + dÿ 1 þ 10 þ ÿ þ 1 + dÿ 2 þ 10 ÿ þ 2 < x < g + dÿ 1 þ 10 ÿ 1 dÿ +( 2 + 1) þ ÿ 10 2 2.2 Stellenwertsysteme 43 Dieses Teilen läuft so lange weiter, bis es einmal einen linken Endpunkt gibt, der mit x übereinstimmt. Ist dies nie der Fall, dann bedarf es unendlich vieler Teilungen. Im Fall einer endlichen Zahl von Teilungen ist x = g + dÿ 1 þ 10 ÿ 1 þ dÿ + 2 10 ÿ 2 + þþþ + dÿ k þ ÿ 10 k = ÿ X d ÿ 1 g+ i i 10 i= : k g hat ebenfalls eine Dezimaldarstellung, insgesamt erhalten wir x=x x n ÿ n 1 : : : x x ; dÿ dÿ : : : dÿ : 1 0 1 k 2 Im Fall, dass die Teilungsvorgänge nicht abbrechen, schreiben wir ÿ x=x x n n 1 : : : x x ; dÿ dÿ : : : dÿ : : : 1 0 1 k 2 und nennen das Ergebnis einen unendlichen Dezimalbruch. Wir schreiben im Fall, dass es ein k mit dÿj = 9 für alle j < k gibt, x=x x = x x ÿ ÿ n n 1 n n 1 : : : x x ; dÿ dÿ : : : dÿ 99999 : : : : : : x x ; dÿ dÿ : : : (dÿ + 1); 1 0 1 2 1 0 1 2 k k zum Beispiel 4; 26399999 : : : = 4; 264. Satz 2.6: Der Dezimalbruch einer rationalen Zahl ist endlich oder periodisch und umgekehrt stellt jeder solche Dezimalbruch eine rationale Zahl dar. Genau die irrationalen Zahlen entsprechen den nicht-periodischen unendlichen Dezimalbrüchen. Tabelle 2.2: Einige irrationale Zahlen px p2 3 Dezimaldarstellung 1; 4142136 : : : 1; 7320508 : : : e 2; 7182818 : : : ÿ 3; 1415927 : : : Wir können an dieser Stelle philosophieren, warum ausgerechnet die Zahl 10 für die Darstellung der Zahlen benutzt wird. Ein wesentlicher Faktor ist sicher, dass wir Menschen im Normalfall nun einmal mit 10 Fingern zur Welt kommen. Eine Welt mit achtfingrigen Geschöpfen hätte vielleicht nicht das Dezimalsystem mit seiner Zehnerteilung, sondern eine Teilung in acht Teile, das Oktalsystem eingeführt. Die Vermutung liegt nahe, dass Informatiker scheinbar nur zwei Finger besitzen. Weit gefehlt! Fortgeschrittene Informatiker besitzen sogar insgesamt 16 Finger! Bevor wir uns Geschöpfen mit weniger als 10 Fingern annähern, untersuchen wir eine uralte Rechenmethode für die Multiplikation, die je nach Quelle als abessi” nische Bauernmultiplikation“ oder russische Bauernmethode“ bekannt ist. ” 44 2 Zahlen Nehmen wir an, wir stehen vor der Aufgabe, das Produkt zweier natürlicher Zahlen a b zu berechnen. Dann dividieren wir fortgesetzt den ersten Faktor a durch 2, dabei vernachlässigen wir den Rest und schreiben die Teiler bis zur Zahl 1 untereinander. Daneben, in einer zweiten Spalte, schreiben wir das Doppelte, Vierfache und so weiter des zweiten Faktors b. Gerade Zahlen bringen Unglück!“ sagen ” die abessinischen Bauern. Deshalb streichen wir alle die Zeilen, in denen die erste Spalte eine gerade Zahl enthält. Addieren wir die verbleibenden Zahlen der zweiten Spalte, erhalten wir als Ergebnis das Produkt a b. Testen wir diese Regel doch einmal an Hand des Produkts 21 17: þ þ þ 21 17 10 34 5 68 2 136 1 272 357 Haben die abessinischen Bauern vielleicht doch Recht und die geraden Zahlen bringen Unglück? Wenn diese Methode immer zu einem richtigen Ergebnis führt, warum in aller Welt funktioniert das? Dahinter muss ein rational erklärbarer Grund liegen, wir sind doch nicht abergläubisch! Die Lösung hat etwas mit Stellenwertsystemen zu tun. Wir benutzen eine Zahl b > 1 als Basis des Zahlensystems. Praktisch bedeutsam sind trotz allen Fingerzählens natürlich b = 10. Daneben sind die Werte 2; 8 und 16 wichtig. Wir sprechen vom binären oder dualen, vom oktalen und vom hexadezimalen Zahlensystem. Benutzen wir eine Basis b > 10, gehen die Symbole aus, wir benutzen in diesem Fall zusätzlich zu den Zahlensymbolen 0 bis 9 die Ziffern A; B; C; : : :, also für b = 12 A und B und im Hexadezimalsystem A; B; C; D; E und F . Wir stellen eine natürliche Zahl n in einem Zahlsystem mit Basis b > 1 dar. Für n = 125 und b = 10 hatten wir das schon durchgeführt und n durch Summe von Potenzen der Basis dargestellt. Doch wir hatten etwas gemogelt: Natürlich wussten wir, dass die Dezimaldarstellung von 125 drei Zehnerpotenzen benötigen wird. Für beliebige Basen ist es nicht immer so leicht einzusehen, wie viele Potenzen wir benötigen. Für die natürliche Zahl n gibt es garantiert eine natürliche Zahl k mit b k ÿ 1 ün<b ; k für n = 125 und b = 10 war k = 3. Wir teilen die Zahl n durch bkÿ1 , was in der Regel nicht ohne Rest durchführbar sein wird. Im Beispiel erhalten wir 125 : 100 = 1 100 + 25, allgemein þ n=a Wegen der Division ist 0 üa ÿ k 1 k ÿ 1 þb ÿ k 1 r + < b und 0 ü r k k ÿ: 1 ÿ 1 <b k ÿ 1 2.2 Stellenwertsysteme 45 Mit dem Rest rkÿ1 verfahren wir genauso, wir teilen ihn durch die nächstkleinere Potenz der Basis. Dies ergibt den Koeffizienten akÿ2 und einen Rest rkÿ2 : r k ÿ = 1 a k ÿ 2 þb ÿ k 2 + r k ÿ: 2 Wieder sind auf jeden Fall die Aussagen 0 üa ÿ k < b und 0 ü r k 2 ÿ 2 <b k ÿ 2 richtig. Dieses Verfahren setzen wir so lange fort, bis wir zu einer Gleichung r 1 = a þb 0 0 kommen oder für einen anderen Index bereits keinen Rest bei der Division erhalten: n=a ÿ þb ÿ +r r ÿ =a ÿ þb ÿ +r :::::: r = a þþþ b + r ; r =a : k k 1 k 2 1 1 0 1 2 k 1 k 2 1 k k ÿ; ÿ; 1 2 1 Addieren wir diese Gleichungen, erhalten wir die Darstellung n=a b 0 0 + ab 1 1 + þþþ + a k ÿbÿ; 1 k 1 für n = 10 erhalten wir die Dezimaldarstellung zurück. Durch das Verfahren gelingt es, eine natürliche Zahl durch die k Zahlen a0 ; a1 ; : : : ; akÿ1 zu beschreiben, von denen jede nur einen der Werte 0; 1; : : : ; b 1 annehmen kann. Umgekehrt können wir durch Kenntnis dieser Werte jede Zahl mit Hilfe von etwas Potenzrechnung berechnen. ÿ Satz 2.7: Jede natürliche Zahl n lässt sich als eine Summe von Potenzen einer beliebigen natürlichen Zahl b > 1 in der Form n= ÿ X k 1 ab i i a = ( k ÿaÿ 1 k 2 :::a a ) ; 1 0 b i=0 ü darstellen. Dabei ist die natürliche Zahl k durch die Bedingung bkÿ1 n < bk eindeutig bestimmt. Für die Koeffizienten in der Entwicklung gilt 0 ai < b für alle 0 i k 1, sie lassen sich sukzessive mit Hilfe des Divisionsalgorithmus (rk = n; r0 = 0) ü r i = berechnen. aÿ þbÿ i 1 i 1 + r k ÿ ;i 1 = k; k ÿ 1; : : : ; 1 ü ü ÿ 46 2 Zahlen Die Darstellung von rationalen und irrationalen Zahlen kann für beliebige Basen b > 1 genauso gefunden werden, wie wir das für b = 10 bereits durchgeführt haben. Statt die Strecken immer in 10 gleiche Teile aufzuteilen, müssen wir b gleiche Teile bilden. Auch die Unterteilung zwischen endlichen und unendlichen Dezimalbrüchen bleibt erhalten. Dies gelingt durch den vorgestellten Divisionsalgorithmus, in dem wir für eine rationale Zahl m zuerst m mit Rest durch n dividieren. Wir erhalten die Darstellung n m = gn + r0 mit g > 0 und 0 r0 < n und bilden der Reihe nach ü dÿ n + r ; = dÿ n + r ; :::::: br = dÿ n + rÿ br br 0 = 1 1 1 2 2 i (i+1) (i+1) : Wir teilen fortlaufend das b-fache des Rests ganzzahlig durch den Nenner n. Auf die ganze Zahl g wenden wir den Divisionsalgorithmus an und stellen g dadurch bezüglich der ausgewählten Basis b dar. Wir erhalten eine Dezimaldarstellung der zur Basis b. rationalen Zahl m n Kommen wir auf die abessinischen Bauern und ihre Multiplikationsmethode zurück. Warum funktioniert dies für alle Zahlen n und m? Dazu betrachten wir die Darstellung der beiden Faktoren im Stellenwertsystem mit der Basis b = 2. Den Faktor n können wir darstellen als n= ÿ X r 1 a2; i i i=0 das Produkt ist nm = ÿ X r 1 a (2 m): i i i=0 Dies ist gerade die Summe, wie sie in der zweiten Spalte der abessinischen Multiplikationsmethode steht. Dort haben wir m selbst, das Doppelte von m, das Vierfache von m und so weiter. Auch die Anzahl der Summanden stimmt mit der Anzahl der Zeilen im Schema überein. Dies liegt an der Zahl r und der Methode, wie wir die erste Spalte in der Multiplikationsmethode gebildet hatten.Die Faktoren a0 bis arÿ1 sind entweder 0 oder 1, die Summanden in der Darstellung des Produkts nm mit ai = 0 können wir streichen. Es bleibt zu zeigen, dass die Faktoren ai gerade dann 0 sind, wenn in der i-ten Zeile der Multiplikationsmethode links eine gerade Zahl steht. In der ersten Zeile stehen die Faktoren m und n selbst. Diese Zeile wird genau dann gestrichen, wenn die Zahl n selbst gerade ist. n ist aber genau dann gerade, wenn in der Darstellung zur Basis b = 2 a0 = 0 ist; für diese erste Zeile stimmt die Vermutung. 2.3 Zahlendarstellung im Computer 47 Die Quotienten n2 ; n4 ; :::, die bei der ganzzahligen Division von n durch die Potenzen von 2 entstehen, sind genau die Zahlen in der linken Spalte des Schemas. Für n1 mit n = 2n1 + r1 gilt dann n1 = a1 20 + a2 21 + + arÿ12rÿ2 . n1 ist genau dann gerade, wenn a1 = 0 ist. Mit dem gleichen Argument können wir beweisen, dass die Zahl ni genau dann gerade ist, wenn ai = 0 ist. Also bleiben in der Summendarstellung des Produkts mn genau jene Summanden übrig, für die die Zahlen ni ungerade sind; wir streichen genau diese Zeilen in der Multiplikationsmethode durch. Die abessinischen Bauern sind also nicht abergläubisch, sondern gingen offenbar schon intuitiv mit Dualzahlen um. þþþ 2.3 Zahlendarstellung im Computer Für die Darstellung der ganzen Zahlen im Computer benutzen wir das Dualzahlsystem, also ein Stellenwertsystem mit der Basis b = 2. Es ist klar, dass nur Bitmuster einer festen Länge N benutzt werden können. Damit können wir maximal N 2 verschiedene Zahlen darstellen. Verglichen mit unendlich vielen ganzen Zahlen, ist das recht wenig. Für N = 32, eine weit verbreitete Länge, sind es genau 4 294 967 296 Zahlen. Diese möglichen Bitmuster werden allerdings häufig gar nicht alle zur Zahlendarstellung verwendet, weitere Informationen wie das Vorzeichen müssen schließlich ebenfalls gespeichert werden. Ein Bitmuster dN ÿ1 : : : d1 d0 der Länge N kann im Stellenwertsystem zur Basis 2 interpretiert werden. Damit erhalten wir alle natürlichen Zahlen und die Null durch : : : 000 ù = 0; 000 : : : 001 ù = 1; ::::::::: 111 : : : 111 ù = 2 000 N ÿ : 1 Was ist mit dem Vorzeichen? Wollen wir nicht mehr als N Bits spendieren, dann müssen wir für die Darstellung des Vorzeichens wohl oder übel die Menge der darstellbaren Zahlen einschränken. Dazu gibt es insgesamt drei Methoden: die getrennte Codierung des Vorzeichens, das Einerkomplement und das Zweierkomplement. Bei der getrennten Codierung des Vorzeichens nehmen wir das erste Bit der Darstellung und interpretieren es als Vorzeichen, eine 0 setzen wir mit +, eine 1 mit gleich. Damit erhalten wir die Zahlen zwischen (2N ÿ1 1) bis 2N ÿ1 1. Von Nachteil ist die nicht mehr eindeutige Darstellung der Zahl 0: es gibt plötzlich eine +0 und eine 0. Insgesamt erhalten wir die Darstellungen ÿ ÿ : : : 000 ù = 0 000 : : : 001 ù = 1 000 ÿ ÿ : : : 000 ù = ÿ0 100 : : : 001 ù = ÿ1 100 ÿ 48 2 Zahlen :::::: 011 : : : 111 ù = 2 N ÿ ÿ 1 :::::: 1 111 : : : 111 ù = ÿ(2 N ÿ 1 ÿ 1) Beim Einerkomplement ist die Darstellung der positiven Zahlen identisch mit der oben aufgeführten Darstellung mit getrennter Codierung. Die negativen Zahlen stellen wir dar, indem wir für eine positive Zahl x mit dem Bitmuster dN ÿ1 dN ÿ2 : : : d1 d0 das komplementäre Muster (1 ÿ ÿd N ÿ 1 )(1 ÿd N ÿ 2) : : : (1 ÿ d 1 )(1 ÿd 0) als Darstellung für x verwenden. Auch hier ist die 0 doppelt vorhanden, das erste Bit übernimmt die Rolle des Vorzeichens. Insgesamt erhalten wir die Darstellungen : : : 000 ù = 0 000 : : : 001 ù = 1 :::::: ù 011 : : : 111 = 2 : : : 111 ù = ÿ0 111 : : : 110 ù = ÿ1 :::::: ù 100 : : : 000 = ÿ(2 000 111 N ÿ ÿ 1 N 1 ÿ 1 ÿ 1) Das Zweierkomplement realisiert die positiven Zahlen wie gehabt. Für eine positive Zahl x mit dem Bitmuster dN ÿ1 dN ÿ2 : : : d1 d0 verwenden wir für x die Darstellung +(1 dN ÿ1 )(1 dN ÿ2 ) : : : (1 d1 )(1 d0 ) + (1)2 . Das Zweierkomplement wird durch Bildung des Einerkomplements des Absolutbetrags und anschließende Addition der Zahl (1)2 gebildet. Beispiele: ÿ ÿ ÿ ÿ ÿ Die Darstellung von x net sich als 1)10 mit N = 8 Bit im Zweierkomplement berech- jÿ j 100)10 in einem System mit N = 10 jÿ j 100 : Einerkomplement: +1: 100: ÿ 0000 0001 1111 1110 1111 1111 1 ÿ durch ÿ ÿ = ( ÿ ÿ 1 : Einerkomplement: +1: 1: ÿ ( ÿ Bit ist als Zweierkomplement gegeben 00 0110 0100 11 1001 1011 11 1001 1100 1 100)10 in einem System mit N = 16 Bit wird durch das Zweierkomplement dargestellt als 1111 1111 1001 1100. Wenn die Anzahl der Bits für das Zweierkomplement vergrößert wird, kann die Darstellung leicht berechnet werden. Bei einer negativen Zahl wie 100 werden die führenden Stellen mit 1 aufgefüllt, bei einer positiven Zahl mit 0. ( ÿ 2.3 Zahlendarstellung im Computer 49 Mit der Darstellung als Zweierkomplement erhalten wir eine eindeutige Codierung der Null, dafür ist der Zahlenbereich unsymmetrisch: : : : 000 ù = 0 000 : : : 001 ù = 1 000 : : : 010 ù = 2 :::::: 011 : : : 111 ù = 2 : : : 111 ù = ÿ1 111 : : : 110 ù = ÿ2 :::::: ÿ 100 : : : 001 ù = ÿ(2 ÿ 100 : : : 000 ù = ÿ2 000 111 N ÿ 1 ÿ N 1 N 1 ÿ 1) 1 Beispiel: Im Zweierkomplement wird eine Subtraktion auf eine Addition im Rechenwerk zurückgeführt. Das Ergebnis von (13)10 (21)10 ist offensichtlich ( 8)10 . Dezimal ist dies identisch mit (13)10 + ( 21)10 . Im Zweierkomplement mit N = 5 Bit wird (13)10 durch 01 101 dargestellt, ( 21)10 durch 01 011. Die Addition dieser beiden Bitfolgen ergibt 11 000; dies entspricht der Zahl ( 8)10 im Zweierkomplement! Das Zweierkomplement wird in den Mikroprozessoren von Intel verwendet, mit den Längen N = 16; 32 und 32 werden damit die Datentypen short integer, word integer und long realisiert. Diese Datentypen haben immer eine größte und eine kleinste darstellbare ganze Zahl imax und imin , die je nach Implementierung verschieden sind. ÿ ÿ ÿ ÿ ÿ Tabelle 2.3: Ganzzahlige Datentypen in C und ihre Zahlbereiche Datentyp unsigned short int short int unsigned int int unsigned long int long int imin imax 0 65 535 0 4 294 967 295 ÿ32 768 ÿ2 147 ÿ2 147 32 767 483 648 2 147 483 647 0 4 294 967 295 483 648 2 147 483 647 Durch Multiplikation der Bitfolge vdN ÿ2 dN ÿ3 : : : d1 d0 mit dem Faktor 2ÿk können wir Binärbrüche mit k Stellen nach dem Binärpunkt darstellen, genauso wie das vorher mit Dezimalbrüchen möglich war: vd N ÿd ÿ 2 N 3 :::d d 1 0 ùÿ ùÿ = ( = ( v ÿ d d ÿd 1) 2 v 1) k N ( 02 2 N 0 d 2 + þþþ + d ÿ 2 : : : d :d ÿ : : : d d : + ÿ 3 1 1 k k 1 N 2 1 0 N ÿ 2 ) Diese skalierte Zahlenmenge nennen wir Festpunkt-Zahlensystem. Sie hat den großen Nachteil, dass der Bereich der darstellbaren Zahlen ein für allemal festliegt. Aus diesem Grund werden Zahlendarstellungen für rationale Zahlen benutzt, die variable Darstellungsbereiche zulassen. Dazu halten wir den Skalierungsfaktor nicht fest, sondern geben seine aktuelle Größe mit an. Wir gelangen so zu den Gleitpunkt-Zahlensystemen oder floating point numbers. 50 2 Zahlen Wir zerlegen bei dieser Darstellung die verwendete Bitfolge in drei Teile: in das Vorzeichen v , den Exponenten e und die Mantisse M . Die Aufteilung des Bitfelds ist bei jeder Gleitpunkt-Codierung genau festgelegt. Die Mantisse M ist eine positive reelle Zahl in Festpunkt-Darstellung X ÿ db p M= i i i=1 bezüglich einer festen Basis b mit dem Komma genau vor der ersten Ziffer. Der Exponent ist eine ganze Zahl. Insgesamt ist die dargestellte reelle Zahl x gegeben durch x = (ÿ1) Mb : v e Je nach Wahl der Basis, der Festpunkt-Darstellung der Mantisse und den zulässigen Werten für den Exponenten erhalten wir eine bestimmte Menge von darstellbaren reellen Zahlen. In der Norm IEC 559:1989 für binäre Gleitpunkt-Arithmetiken werden zwei Grundformate festgelegt: das einfach lange Format oder single format mit einer Formatbreite von 32 Bit; davon werden 1 Bit für das Vorzeichen, 8 Bit für den Exponenten und 23 Bit für die Mantisse verwendet. Das doppelt lange Format oder double format mit einer Formatbreite von 64 Bit verwendet 1 Bit für das Vorzeichen, 11 für den Exponenten und 52 für die Mantisse. Tabelle 2.4: Gleitpunkt-Zahlensysteme IEC-Norm, single format IEC-Norm, double format Intel-Mikroprozessoren IBM /390 IBM /390 IBM /390 Taschenrechner b p emin emax 2 24 128 2 53 2 64 ÿ125 ÿ1021 ÿ16381 ÿ64 ÿ64 ÿ64 ÿ98 16 6 16 14 16 28 10 10 1024 16384 63 63 63 100 normalisiert? ja ja ja nein nein nein nein Diese Festlegungen legen die Darstellung einer Zahl x noch nicht eindeutig fest. Die Zahl x = 0; 1 kann in einem dezimalen Gleitpunktsystem mit sechs Mantissenstellen durch 0; 100000 100 oder durch 0; 010000 101 darstellen. Um die Eindeutigkeit zu erzielen, stellen wir die Forderung þ þ d 1 6 = 0 ohne den Umfang der darstellbaren Zahlen einzuschränken. Die so entstandenen Gleitpunktzahlen nennen wir normalisiert. Das single-Format der IEC-Norm sieht eine Charakteristik“ für die Speicherung des Exponenten vor. Damit soll ” sichergestellt werden, dass positive und negative Exponenten immer durch eine positive Charakteristik ausgedrückt werden. Dies wird durch Addition von 127 2.3 Zahlendarstellung im Computer 51 zum Wert des Exponenten erreicht. Die Mantisse m wird normalisiert, sodass sie in Binärdarstellung immer die Form jmj ; XXX : : : XXX = 1 üj j mit X = 0 oder X = 1 hat, damit ist 1 m < 2. Die Stelle 1, das ”hidden bit“ vor dem Komma, kommt stets vor und wird deshalb einfach weggelassen, um Speicherplatz zu sparen. Beispiele: ÿ Die Umwandlung einer Gleitpunktzahl in das IEC single-Format erfolgt in mehreren Schritten. Zuerst wird daraus eine Zahl in Binärdarstellung gemacht. Die Dezimalzahl 15625 entspricht der Binärzahl 1111; 101 20. Durch das Normalisieren der Mantisse wird diese Zahl zu 1; 111101 23 . Durch Auffüllen auf der Mantissenlänge 23 ergibt sich die Mantissendarstellung þ þ m = 11 110 100 000 000 000 000 000: Die Charakteristik ergibt sich im Dezimalsystem als Summe 3 + 127 = 130, die binär durch c = 10 000 010 repräsentiert wird. Das Vorzeichen ist positiv, dies wird durch eine führende 0 im Bitmuster gespeichert. Insgesamt wird 15 625 durch Vz Charakteristik Mantisse 0 ÿ 10 000 010 11 110 100 000 000 000 000 000 dargestellt. Die Umwandlung aus dem IEC single–Format in eine Dezimalzahl ist analog durchzuführen. Das Bitmuster 0 10 000 010 11 110 100 000 000 000 000 000 stellt eine positive Zahl dar. Die Charakteristik entspricht (129)10 , der Exponent ist also 129 127 = 2. Die Mantisse ist m = 1; 110 010, das entspricht dem Dezimalbruch 1; 781 25. Die dargestellte Zahl entspricht insgesamt 2 1; 781 25 2 = 7; 125. þ ÿ Insgesamt ist ein Gleitpunkt-Zahlensystem durch vier ganze Zahlen und eine Aussage charakterisiert: die Basis b, die Mantissenlänge p, der kleinstmögliche Exponent emin , der größtmögliche Exponent emax und die Festlegung, ob wir eine normalisierte Darstellung verwenden. Neuere Implementierungen von C++ benutzen die Klasse numeric limits, mit deren Hilfe wir die Eigenschaften der implementierten Zahltypen abfragen können. Die Gleitpunkt-Zahlensysteme stellen eine endliche Anzahl von Zahlen dar, die eine viel größere Anzahl von reellen Zahlen annähert. Alle irrationalen Zahlen 52 2 Zahlen Tabelle 2.5: Attribute und Funktionen in < numeric limits > Schnittstelle Bedeutung T min() minimal möglicher Wert T max() maximal möglicher Wert int radix Zahlenbasis int digits Ganzzahlen: Anzahl der Bits ohne Vorzeichenbit, Gleitpunktzahlen: Anzahl der Bits in der Mantisse int min exponent kleinster negativer Exponent für Gleitpunktzahlen int max exponent größter Exponent für Gleitpunktzahlen bool is iec559 wahr, falls der Zahlentyp IEC 559 genügt und die endlichen Dezimalbrüche, die eine längere Mantisse benötigen, können nur fehlerbehaftet dargestellt werden. Damit entsteht in einer Berechnung auf dem Computer, in der beispielsweise die Zahl þ auftritt, schon beim Start ein Fehler. Es gibt verschiedene Strategien, Zahlen, die nicht im verwendeten Gleitpunktsystem darstellbar sind, anzunähern. Der am häufigsten angewendete Algorithmus stellt die Rundung auf die vorgegebene Anzahl der Mantissenstellen dar. Beispiele: ÿ ÿ þ Die Gleitpunktzahl 0; 143 86 100 wird in einem System, das nur 4 Stellen für die Mantisse zur Verfügung stellt, durch Runden zu 0; 143 9 100 . Die Näherung 3; 141 59 100 für die irrationale Zahl þ mit 5 Nachkommastellen einer unnormalisierten Mantisse wird zu 0; 314 2 101, falls nur 4 Stellen für die normalisierte Mantisse zur Verfügung stehen. þ þ þ þ Für eine Zahl x = m 10e mit einer normalisierten Mantisse kann die Rundung auf t Mantissenstellen durch m0 ( ;x x x :::x 0; x x x : : : (x = 0 1 2 3 1 2 3 üx ü üx ü v þ m0 þ gesetzt. Die normalisierte t t + 1) 0 t+1 4 5 t+1 9 e beschrieben werden. Anschließend wird x0 = 10 Mantisse m erfüllt sicher m 0; 1. Damit kann der relative Rundungsfehler, der durch die Umwandlung entsteht, durch ý 0 ÿ j x xÿ x j ü þ jmj ü þ ÿ abgeschätzt werden. Die Zahl eps þ ÿ heißt Maschinengenauigkeit. In binärer Darstellung kann dies genau so durchgeführt werden. Ausgehend von der Darstellung x m þ mit ÿ ü m < wird durch 5 = 5 = 2 e 2 m0 = 1 ( 10 (t+1) 5 10 t t 10 1 ;x x x :::x 0; x x x :::x 0 1 1 2 2 3 3 t t + 2 ÿ t x x t+1 = 0 t+1 = 1 2.3 Zahlendarstellung im Computer 53 gerundet. Die Maschinengenauigkeit wird jetzt als eps = 2ÿt definiert. Beispiele: ÿ ÿ Wenn 4 Mantissenstellen und 2 Stellen für den Exponenten zur Verfügung stehen, wird aus der Zahl x = 0; 99997 1099 durch Runden und Normalisieren die Zahl x0 = 0; 000 0 10100 . Diese Zahl ist aber nicht darstellbar, da nur 2 Stellen für den Exponenten vorgesehen sind. Dieser Effekt heißt Exponentenüberlauf und ist sehr unangenehm. Tritt er während der Berechnung auf – x könnte ja das Zwischenergebnis darstellen –, dann bricht der Computer mit einer Fehlermeldung ab. Die Zahl x = 0; 012 345 10ÿ99 wird für 4 Mantissenstellen und 2 Exponentenstellen zu x0 = 0; 123 5 10ÿ100 . Diese Zahl ist ebenfalls nicht mehr darstellbar. Der auftretende Effekt heißt Exponentenunterlauf. Im Gegensatz zum Überlauf wird der Unterlauf in der Regel nicht als Fehler behandelt, die Computer behandeln das Ergebnis individuell. Auf jeden Fall ist Vorsicht geboten, denn es entsteht ein Fehler, der deutlich größer ist, als wenn gerundet würde! þ þ þ þ Die meisten Computer benutzen für die arithmetischen Rechenoperationen ein Register mit der doppelten Mantissenlänge, nach jeder Operation wird dieses Register gerundet, manchmal auch abgeschnitten. Numerische Berechnungen, die eine Vielzahl von Gleitpunktoperationen benötigen, werden leicht instabil, die häufigste Ursache dafür ist die Subtraktion von zwei Zahlen, die in etwa gleich groß sind. Das Ergebnis besitzt eine große Zahl von führenden Nullen im Register, die bei der Abbildung auf die Mantisse dafür sorgt, dass die richtig berechneten Stellen ausgelöscht werden. In der numerischen Mathematik gibt es eine Vielzahl von Algorithmen, die auf Grund von Rundungsfehlern zu einer völligen Katastrophe führen, die Kunst“ der Numerik besteht darin, dies zu erkennen und zu ” vermeiden ([PFTV93, Ueb95]). Beispiele: ÿ Angenommen, es stehen 8 Stellen für eine normalisierte Mantisse für die Addition der drei Zahlen x = 0; 233 712 58 þ 10ÿ ; y = 0; 336 784 29 þ 10 ; z = = ÿ0; 336 778 11 þ 10 4 2 2 zur Verfügung. Das exakte Ergebnis ist x + y + z = 0; 641 371 258 nachdem, wie die Klammern gesetzt werden, ergibt sich x0 + (y0 + z 0 ) = 0; 233 712 58 þ 10ÿ + 0; 618 þ 10ÿ ÿ; = 0; 641 371 26 þ 10 0 0 0 (x + y ) + z = 0; 336 784 52 þ 10 ÿ 0; 336 778 11 þ 10 ÿ: = 0; 641 þ 10 4 3 3 2 3 2 þ ÿ . Je 10 3 54 ÿ ÿ 2 Zahlen In Gleitkommasystemen ist das Assoziativgesetz im Allgemeinen verletzt. Es ist vollkommen klar, dass die Berechung von 2n (2n 1) ab irgendeiner Zahl n als Ergebnis nur noch 0 liefern wird. Es gab in der Vergangenheit sogar Rechnerarchitekturen, die bis n = 56 bei doppelt genauem Format die richtige Antwort 1 ausgaben, aber für n = 57 das Ergebnis 16, was an der Basis b = 16 der Gleitpunktarchitektur lag. Ab n = 58 kam die erwartete 0. Dies ist kein Fehler in der Architektur des Prozessors, sondern liegt in der Näherung der reellen Zahlen durch die reellen“ Zahlenformate auf dem Computer. ” Die äquivalenten Ausdrücke ÿ ÿ 99 ÿ p p 70 2 = 9801 ÿp p 9800 = 1 9801 + p ; = 0 00505063 9800 ::: im Dezimalsystem mit verschiedenen Mantissenlängen 2; 4 und 6 lassen in Tabelle 2.6 den Auslöschungseffekt deutlich werden. Tabelle 2.6: Der Auslöschungseffekt an einem Beispiel p p p 1 Mantissenlänge 99 ÿ 70 2 9801 ÿ 9800 9801+ p p 9800 2 1; 0 0; 0 0; 0050 4 0; 02000 0; 01000 0; 005051 6 0; 00530000 0; 00510000 0; 00505063 2.4 Aufgaben p p 1. Beweisen Sie, dass 3 irrational ist! Wenn Sie die gleiche Beweistechnik für 4 einsetzen, muss der Beweis abbrechen – warum? 2. Berechnen Sie für die Zahlen 4; y3 = 3 und y4 = 1 x = 5 1 ;x X Y X 4 4 x; x; i i=1 3. Berechnen Sie i i=1 1 i i=1 10 ; 3 Y 4 xy i ;x i und i=1 X X 10 4 = 2 2 = 1 xy: i Y i ÿ 2): 10 i + 3) und i=1 (6 i=1 4. Bestimmen Sie die Polarkoordinatendarstellung von i) 2 ; (ÿ8 + i8 1 i i=1 ( (1 + ;x p 1 3) 4 ; (i) 3 : 1 4 = 2 ;y 1 = 1 ;y 2 = 2.4 Aufgaben 55 5. Berechnen Sie die 5-ten Einheitswurzeln und stellen Sie diese in der komplexen Zahlenebene dar. 6. Warum kann das Konstruktionsverfahren für die Dezimalbruchdarstellung einer reellen Zahl nie zu der Situation führen, dass ab irgendeiner Nachkommastelle alle Koeffizienten dj gleich 0 werden? 7. Wenden Sie das Divisionsverfahren auf die natürliche Zahl verschiedenen Basen b = 5 und b = 2 an! n = 674 für die 8. Wandeln Sie die Zahl (745)8 in das System zur Basis b = 3 um! 9. Formal kann mit Darstellungen zu einer Basis b gerechnet werden, wie wir das vom Dezimalsystem gewohnt sind. Prüfen Sie dies an Hand der Beispiele (543)6 + (242)6 = (1225)6 ; (213)6 (132)6 = (41)6 und (153)6 (23)6 = (4443)6 nach! ÿ þ 10. Berechnen Sie die Entwicklung zur Basis 7 von 11. Wandeln Sie die Dezimalzahlen single-Format um! 1 5 und von ; ; ÿ0; 5; ÿ6; 625 1 0 und 2 5 zur Basis 2! ÿ 3456 in das IEC 12. Welche Dezimalzahlen werden durch die IEC single-Format-Bitmuster 1 10 000 000 10 000 000 000 000 000 000 000 1 10 100 000 00 100 000 000 000 000 000 000 dargestellt? 13. Wie viele Zahlen enthält ein normalisiertes Gleitpunkt-Zahlensystem mit den Parametern b; p; emin und emax ? 14. Wie sieht die größte und kleinste darstellbare Gleitpunktzahl in einem normalisierten System mit den Parametern b; p; emin und emax aus? Welche Zahlen ergeben sich für die IEC-Grundformate? 15. Gegeben sind die beiden Rekursionen f 0 = 1 ÿ e;f 1 k+1 = 1 und G N gegeben; N > k; g k = 1 ÿ k + 1)f ( k ÿg k+1 k+1 : Die Rekursion für gk erhalten wir durch Auflösen der Rekursion für f nach fk . Berechnen Sie f30 mit dem Computer und vergleichen Sie das Ergebnis mit g30 . Dabei verwenden Sie für g50 einen beliebigen Startwert zwischen 1010 und 1010 ! ÿ