This is documentation for Mathematica 4, which was
based on an earlier version of the Wolfram Language.
View current documentation (Version 11.1)

 Documentation /  Mathematica /  Das Mathematica Buch /  Höhere Mathematik in Mathematica /  Zahlen /

Zahlen mit beliebiger PräzisionFortgeschrittenes Thema: Intervall-Arithmetik

3.1.6 Zahlen mit Maschinengenauigkeit

Immer wenn in einer Berechnung Zahlen mit Maschinengenauigkeit auftreten, wird in der Regel die ganze Berechnung mit Maschinengenauigkeit ausgeführt. Mathematica wird dann als Ergebnis Zahlen mit Maschinengenauigkeit ausgeben.

Immer wenn die Eingabe irgendwelche Zahlen mit Maschinengenauigkeit enthält, führt Mathematica die Berechnung mit Maschinengenauigkeit aus.

In[1]:= 1.4444444444444444444 ^ 5.7

Out[1]=

Zeta[5.6] liefert ein Ergebnis mit Maschinengenauigkeit, deshalb ist das N irrelevant.

In[2]:= N[Zeta[5.6], 30]

Out[2]=

Dies gibt ein Ergebnis mit höherer Präzision.

In[3]:= N[Zeta[56/10], 30]

Out[3]=

Wenn Berechnungen mit Zahlen beliebiger Präzision durchgeführt werden (siehe vorigen Abschnitt), verfolgt Mathematica fortlaufend die Präzision der Ergebnisse und liefert nur jene Stellen, von denen bekannt ist, daß sie innerhalb der Präzision der Eingabe korrekt sind. Führt man Berechnungen mit maschinengenauen Zahlen aus, so liefert Mathematica jedoch immer ein Ergebnis mit Maschinengenauigkeit, gleichgültig, ob alle Stellen des Ergebnisses auf Grundlage der Eingabe tatsächlich als korrekt nachgewiesen werden können oder nicht.

Dies subtrahiert zwei Zahlen mit Maschinengenauigkeit.

In[4]:= diff = 1.11111111 - 1.11111000

Out[4]=

Für das Ergebnis wird Maschinengenauigkeit angenommen.

In[5]:= Precision[diff]

Out[5]=

Hier sind alle Stellen des Ergebnisses.

In[6]:= InputForm[diff]

Out[6]//InputForm= 1.1099999999153454`*^-6

Die Tatsache, daß Sie in Mathematica bei numerischen Berechnungen mit Maschinengenauigkeit Scheinziffern erhalten können, ist in vieler Hinsicht recht unbefriedigend. Mathematica verwendet für Berechnungen feste Präzision im Grunde nur deshalb, weil Berechnungen dadurch effizienter werden.

Mathematica ist so konstruiert, daß Sie soweit wie möglich von den Einzelheiten ihres Computersystems abgeschirmt sind. Beim Umgang mit Zahlen mit Maschinengenauigkeit würden Sie jedoch zuviel verlieren, wenn Mathematica die speziellen Eigenschaften Ihres Computers nicht nutzen würde.

Der wichtige Punkt ist, daß fast alle Computer über eine spezielle Hardware oder Microcode für Gleitpunktberechnungen mit einer bestimmten fixierten Präzision verfügen. Mathematica benutzt diese Eigenschaften bei numerischen Berechnungen mit Maschinengenauigkeit.

Die typische Regel ist, daß in Mathematica alle Zahlen mit Maschinengenauigkeit als „Gleitpunktzahlen mit doppelter Genauigkeit" im zugrundeliegenden Computersystem dargestellt werden. Auf den meisten modernen Computern bestehen solche Zahlen aus insgesamt 64 binären Bits, das ergibt in der Regel für die Mantisse 16 Dezimalstellen.

Der Hauptvorteil, der sich aus der Nutzung der in Ihrem Computer bereits eingebauten Gleitpunktzahlen ergibt, ist die Geschwindigkeit. Numerische Berechnungen mit beliebiger Präzision, die diese Möglichkeiten nicht so direkt nutzen, sind gewöhnlich viel langsamer als Berechnungen mit Maschinengenauigkeit.

Die Nutzung der eingebauten Gleitpunktzahlen bringt aber auch Nachteile mit sich. Dazu gehört, und dies wurde bereits erwähnt, daß alle Zahlen gezwungenermaßen eine feste Präzision haben, unabhängig davon, welche Präzision für sie gerechtfertigt sein mag.

Ein zweiter Nachteil besteht darin, daß die Behandlung von Zahlen mit Maschinengenauigkeit zwischen den einzelnen Computersystemen leicht variieren kann. Bei der Arbeit mit Zahlen mit Maschinengenauigkeit ist Mathematica abhängig vom Gleitpunkt-Arithmetiksystem des jeweiligen Computers. Wenn die Gleitpunkt-Arithmetik auf zwei Computern unterschiedlich durchgeführt wird, können Sie auf diesen Computern bei Berechnungen in Mathematica mit Maschinengenauigkeit leicht unterschiedliche Ergebnisse erhalten.

Eigenschaften von Zahlen mit Maschinengenauigkeit auf einem bestimmten Computersystem

Da auf einem bestimmten Computersystem Zahlen mit Maschinengenauigkeit durch eine definierte Anzahl binärer Bits dargestellt werden, haben Zahlen, die zu nahe beieinander liegen, dasselbe Bitmuster und können deshalb nicht unterschieden werden. Der Parameter $MachineEpsilon liefert den Abstand zwischen 1. und der nächsten Zahl, die eine unterschiedliche Binärdarstellung hat.

Dies gibt den Wert von $MachineEpsilon für den Computer, auf dem diese Beispiele laufen.

In[7]:= $MachineEpsilon

Out[7]=

Obwohl hier 1. ausgedruckt wird, weiß Mathematica, daß das Ergebnis größer als 1 ist.

In[8]:= 1. + $MachineEpsilon

Out[8]=

Subtraktion von 1 ergibt $MachineEpsilon.

In[9]:= % - 1.

Out[9]=

Dies druckt wieder 1. aus.

In[10]:= 1. + $MachineEpsilon/2

Out[10]=

In diesem Fall ergibt die Subtraktion von 1 jedoch 0, da 1 + $MachineEpsilon/2 innerhalb der Maschinengenauigkeit nicht von 1. unterschieden wird.

In[11]:= % - 1.

Out[11]=

Zahlen mit Maschinengenauigkeit haben nicht nur eine beschränkte Präzision, sondern auch eine beschränkte Größe. Wird eine Zahl erzeugt, die außerhalb des durch $MinMachineNumber und $MaxMachineNumber bezeichneten Bereiches liegt, wird Mathematica die Zahl automatisch in die Form mit beliebiger Präzision konvertieren.

Dies ist die größte Zahl mit Maschinengenauigkeit, mit der das Computersystem, das in diesem Beispiel benutzt wird, umgehen kann.

In[12]:= $MaxMachineNumber

Out[12]=

Mathematica konvertiert automatisch das Ergebnis dieser Berechnung in eines mit beliebiger Präzision.

In[13]:= Exp[1000.]

Out[13]=

Zahlen mit beliebiger PräzisionFortgeschrittenes Thema: Intervall-Arithmetik