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

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

Konvertierung zwischen verschiedenen ZahlenformenZahlen mit beliebiger Präzision

3.1.4 Numerische Präzision

Mathematica kann mit Gleitpunktzahlen umgehen, die eine beliebige Anzahl von Stellen haben (siehe Abschnitt 1.1.2). Im allgemeinen versteht man unter der Präzision einer Gleitpunktzahl die Anzahl ihrer Dezimalziffern, die in Berechnungen als signifikant angesehen werden. Die Genauigkeit einer Gleitpunktzahl ist die Anzahl dieser Dezimalziffern, die rechts vom Dezimalpunkt erscheinen. Präzision ist also ein Maß für den relativen Fehler einer Zahl, während Genauigkeit ein Maß für den absoluten Fehler ist.

Präzision und Genauigkeit reeller Zahlen

Hier ist eine Gleitpunktzahl.

In[1]:= xacc = 431.123145333555141444

Out[1]=

Dies gibt die Gesamtzahl der Ziffern, die eingegeben wurden, um die reelle Zahl zu bezeichnen.

In[2]:= Precision[xacc]

Out[2]=

Dies gibt die Anzahl der Stellen rechts vom Dezimalpunkt.

In[3]:= Accuracy[xacc]

Out[3]=

Wenn Sie N[ausdr, n] benutzen, versucht Mathematica, den Ausdruck ausdr mit einer Genauigkeit von n Stellen zu evaluieren. Und solange Ihre Eingabe genügend Präzision hat, wird Mathematica normalerweise auch zu einem Ergebnis mit der angeforderten Präzision gelangen.

Dies verlangt, daß Pi^25 mit einer Präzision von 30 Stellen evaluiert wird.

In[4]:= N[Pi^25, 30]

Out[4]=

Das Ergebnis hat tatsächlich eine Präzision von 30 Stellen.

In[5]:= Precision[%]

Out[5]=

Numerische Evaluierung

Wenn Sie N[ausdr] benutzen, ohne die Präzision der benutzten Zahlen explizit anzugeben, verwendet Mathematica Zahlen mit Maschinengenauigkeit.

Im allgemeinen unterscheidet Mathematica zwei Arten Gleitpunktzahlen: Zahlen mit beliebiger Präzision und Zahlen mit Maschinengenauigkeit. Zahlen mit beliebiger Präzision können jede beliebige Anzahl Stellen haben, und Ihre Präzision wird während der Berechnungen angepaßt. Zahlen mit Maschinengenauigkeit haben dagegen eine feste Stellenzahl und ihre Präzision bleibt während der Berechnungen unverändert.

Wie weiter unten noch detaillierter besprochen werden wird, nutzen Zahlen mit Maschinengenauigkeit direkt die numerischen Möglichkeiten Ihres zugrundeliegenden Computersystems. Deshalb werden Berechnungen mit ihnen schnell ausgeführt. Jedoch sind Zahlen mit Maschinengenauigkeit wesentlich weniger flexibel als solche mit beliebiger Präzision.

Dies evaluiert Pi mit Maschinengenauigkeit.

In[6]:= N[Pi]

Out[6]=

Die Maschinengenauigkeit des Computers, auf dem dieses Beispiel erzeugt wurde, beträgt 16 Dezimalziffern.

In[7]:= Precision[%]

Out[7]=

Dies liefert die Maschinengenauigkeit des Computers.

In[8]:= $MachinePrecision

Out[8]=

Zahlen mit Maschinengenauigkeit

Wenn eine Gleitpunktzahl eingegeben wird, muß Mathematica entscheiden, ob sie als Zahl mit Maschinengenauigkeit oder mit beliebiger Präzision behandelt wird. Wird nichts anderes angegeben, so wird Mathematica, wenn weniger als $MachinePrecision Stellen eingegeben wurden, die Zahl als Zahl mit Maschinengenauigkeit, und wenn mehr Stellen eingegeben wurden, als Zahl mit beliebiger Präzision behandeln.

Eingabeformen für Zahlen

Wenn Mathematica Zahlen ausdruckt, versucht es normalerweise, sie in einer Form zu geben, die so leicht wie möglich lesbar ist. Aber wenn Sie Zahlen nehmen wollen, die von Mathematica ausgedruckt werden, und sie dann später als Eingabe für Mathematica verwenden wollen, müssen Sie sicherstellen, daß keine Information verlorengeht.

In der Standardausgabeform druckt Mathematica eine Zahl wie diese mit sechs Stellen.

In[9]:= N[Pi]

Out[9]=

In der Eingabeform druckt Mathematica alle ihm bekannten Stellen.

In[10]:= InputForm[%]

Out[10]//InputForm= 3.141592653589793

Hier ist eine Zahl beliebiger Präzision in der Standardausgabeform.

In[11]:= N[Pi, 20]

Out[11]=

In der Eingabeform zeigt Mathematica explizit die Präzision der Zahl an und liefert extra Stellen, um sicherzustellen, daß die Zahl korrekt rekonstruiert werden kann.

In[12]:= InputForm[%]

Out[12]//InputForm= 3.141592653589793238462643383279503`20

Jetzt zeigt Mathematica die Präzision nicht explizit an.

In[13]:= InputForm[%, NumberMarks->False]

Out[13]//InputForm= 3.1415926535897932385

Kontrolle über das Drucken der Zahlen

Der Wert von $NumberMarks liefert die Voreinstellung der NumberMarks-Option bei InputForm sowie bei Funktionen wie ToString und OpenWrite. Durch Einstellung von $NumberMarks können Sie deshalb global die Form ändern, in der Zahlen in InputForm gedruckt werden.

Damit wird Mathematica vorgabemäßig in der Eingabeform immer Zahlenmarken enthalten.

In[14]:= $NumberMarks = True

Out[14]=

Sogar eine Zahl in Maschinengenauigkeit wird jetzt mit einer expliziten Zahlenmarke gedruckt.

In[15]:= InputForm[N[Pi]]

Out[15]//InputForm= 3.141592653589793`

Bei ausgeschalteter NumberMarks-Option verwendet InputForm für wissenschaftliche Schreibweise immer noch *^.

In[16]:= InputForm[N[Exp[600], 20], NumberMarks->False]

Out[17]//InputForm= 3.7730203009299398234*^260

Bei numerischen Berechnungen läßt es sich manchmal nicht vermeiden, daß man am Ende zu Ergebnissen gelangt, die weniger genau sind als gewünscht. Besonders bei numerischen Ergebnissen, die sehr nahe bei Null sind, wird man möglicherweise annehmen wollen, daß die Ergebnisse exakt Null sind. Mit der Funktion Chop können Gleitpunktzahlen, die nahe bei Null liegen, durch die exakte ganze Zahl 0 ersetzt werden.

Entfernen von Zahlen nahe bei Null

Diese Berechnung ergibt einen kleinen Imaginärteil.

In[17]:= Exp[ N[2 Pi I] ]

Out[19]=

Mit Chop können Sie den Imaginärteil entfernen.

In[18]:= Chop[%]

Out[20]=

Konvertierung zwischen verschiedenen ZahlenformenZahlen mit beliebiger Präzision