Wolfram Computation Meets Knowledge

Welche Arten der Computerarithmetik unterstützt die Wolfram Language?

Die Wolfram Language unterstützt drei Arten der Computerarithmetik:

Jede Art hat ihre jeweiligen Vor- und Nachteile. Um zu verstehen, welche Computerarithmetik-Variante man für die schnellsten und genauesten Ergebnisse einsetzt, ist ein wichtiger Teil des Werkzeugkastens eines Wolfram Language-Programmierers. Dieser Artikel soll einen allgemeinen Überblick über die einzelnen Varianten geben, ohne auf alle technischen Besonderheiten einzugehen. Weitere Details finden Sie in der Wolfram Language-Dokumentation, die im Folgenden durchgehend verlinkt ist.

Maschinengenauigkeit

Maschinengenauigkeit wird verwendet, wenn eine Zahl in Gleitkommadarstellung eingegeben wird (z.B. 4,2 oder 1,) oder wenn die Funktion N mit einem einzigen Argument verwendet wird (z.B. N[1/2]). Auf den meisten modernen Rechnern beträgt die Mantissenlänge 16 Stellen (Dezimalstellen nach dem Komma).

Der größte Vorteil der Maschinengenauigkeit ist die Geschwindigkeit. Numerische Berechnungen mit Langzahlarithmetik sind normalerweise wesentlich langsamer als Berechnungen mit Maschinengenauigkeit.

Maschinengenauigkeit liefert zwar schnelle Resultate, eignet sich aber nicht für die Arbeit mit sehr großen oder sehr kleinen Zahlen, bei der Genauigkeit entscheidend ist (verwenden Sie hier besser Langzahlarithmetik), oder wenn ein symbolisches Ergebnis gefragt ist (verwenden Sie besser unendlich genaue Arithmetik).

Beachten Sie außerdem, dass bei Maschinengenauigkeit Rundungsfehler zugunsten der Geschwindigkeit nicht verfolgt werden. Es kann so also zu fehlerhaften Ergebnissen kommen. Zum Beispiel ist Out[1] im Folgenden falsch:

In[1]:= N[Sin[10^50]]
Out[1]= -0.4805

In[2]:= N[Sin[10^50], 20]
Out[2]= -0.78967249342931008271

Die meisten der eingebauten mathematischen Funktionen in der Wolfram Language liefern Ausgaben, die der Präzision der gegebenen Eingabe am besten entspricht. Wenn Sie diese Funktionen mit einer maschinengenauen Eingabe füttern, erhalten Sie eine maschinengenaue Ausgabe. Zum Beispiel:

In[3]:= Sin[4.2]
Out[3]= -0.871576

In[4]:= Precision[%]
Out[4]= MachinePrecision

Ähnlich verhält es sich, wenn Sie Eingaben mit Maschinenpräzision mit Eingaben mit beliebiger oder unendlicher Präzision in einer einzigen Berechnung kombinieren. Das Ergebnis wird in Maschinenpräzision angegeben:

In[5]:= 3 + 4.5
Out[5]= 7.5

In[6]:= Precision@%
Out[6]= MachinePrecision

Numerische Operatoren (NIntegrate, NSum, NDSolve, etc.) geben Ergebnisse standardmäßig in Maschinenpräzision zurück.

Langzahlarithmetik

Wenn Sie Berechnungen mit Langzahlarithmetik durchführen, the Wolfram Language keeps track of precision at all points. Im Allgemeinen versucht die Wolfram Language, Ihnen je nach Genauigkeit Ihrer Eingabe die Ergebnisse mit der größtmöglichen Genauigkeit zu liefern.

Zahlen mit beliebiger Präzision werden meist mit der Funktion N und ihrem zweiten Argument gebildet. Zum Beispiel gibt N[Pi, 20] das numerische Ergebnis von Pi auf 20 Stellen genau an (3.1415926535897932385).

Langzahlarithmetik ist nützlich bei Berechnungen, die ein hohes Maß an Genauigkeit erfordern, wie bei der Arbeit mit sehr großen oder sehr kleinen Zahlen. Berechnungen mit Langzahlarithmetik sind jedoch langsamer als mit Maschinengenauigkeit, daher werden Zahlen mit beliebiger Präzision normalerweise nicht verwendet werden, wenn keine hohe Genauigkeit erforderlich ist.

Wie bei den Zahlen mit Maschinengenauigkeit ist verhält es sich auch bei den Zahlen mit beliebiger Präzision: Wenn Sie integrierte mathematische Funktionen mit Eingaben mit beliebiger Präzision füttern, erhalten Sie Ausgaben mit beliebiger Präzision. Zum Beispiel:

In[1]:= N[7, 30]^2
Out[1]= 49.0000000000000000000000000000

In[2]:= Precision[%]
Out[2]= 29.699

Die Kombination von Eingaben mit Maschinengenauigkeit und mit Langzahlarithmetik ergibt eine Ausgabe mit Maschinengenauigkeit. Infolgedessen werden Fehler nicht nachverfolgt.

Ein effektiver Weg, einen Ausdruck mit beliebiger Präzision auszuwerten, ist die Verwendung von SetPrecision:

In[3]:= SetPrecision[1.9658*(1.23423423/500 + 600/3.9879), 20]
Out[3]= 295.76954069704845551

Sie können numerische Operatoren (NIntegrate, NSum, NDSolve, etc.) zwingen, Langzahlarithmetik zu verwenden, indem Sie die Option WorkingPrecision auswählen.

Arithmetik mit unendlicher Präzision

Arithmetik mit unendlicher Präzision wird verwendet, wenn genaue Eingaben bekannt sind und genaue Ausgaben gewünscht werden, oder wenn Ausdrücke algebraisch manipuliert werden.

Rationalize ist eine nützliche Funktion, um Gleitkommazahlen in eine exakte Zahl zu verwandeln.

Wenn Sie eingebaute mathematische Funktionen mit einer Eingabe mit unendlicher Präzision füttern, erhalten Sie eine Ausgabe mit unendlicher Präzision. Zum Beispiel:

In[1]:= Cos[Pi]
Out[1]= -1

In[2]:= Precision[%]
Out[2]= \[Infinity]

Die Kombination von Eingaben mit unendlicher Präzision und fester Präzision (Maschinengenauigkeit) ergibt eine Ausgabe mit Maschinengenauigkeit.

[English]

Ist dieser Artikel hilfreich?
Ja
Nein

Kommentare?

Danke für Ihr Feedback.

Senden

Support kontaktieren

Egal, ob Sie eine Frage zur Rechnung, Aktivierung oder zu einer technischen Angelegenheit haben, wir sind da, um Ihnen zu helfen.

1-800-WOLFRAM (+1-217-398-0700 für internationale Anrufer)

Kundendienst

Montag–Freitag
8:00–17:00 US Central Time

  • Produktregistrierung oder Aktivierung
  • Kaufinformationen und Bestellung
  • Hilfe beim Installieren und Starten

Erweiterter technischer Support (für berechtigte Kunden)

Montag–Donnerstag
8:00–19:00 US Central Time

Freitag
8:30–10:00 & 11:00–17:00 US Central Time

  • Technischer Priority-Support
  • Produktassistenz von Wolfram-Experten
  • Hilfe beim Programmieren mit der Wolfram Language
  • Erweiterter Support beim Installieren