Das ultimative Wolfram Language- und Notebook-Erlebnis
Die Original-Umgebung für technische Datenverarbeitung
Multidomänen-Modellierung und -Simulation komplexer Systeme
Weitere mobile Apps
Wir liefern Lösungen für das KI-Zeitalter – durch die Kombination von symbolischer Berechnung, datengesteuerten Erkenntnissen und tiefgreifender technischer Expertise
Wolfram Consulting
Weitere Wolfram-Lösungen
Weitere Lösungen für den Bildungsbereich
Kurse in Informatik, Wissenschaft, Leben und mehr
Lernen, Probleme lösen und Ideen austauschen.
Nachrichten, Ansichten und Einblicke von Wolfram
Ressourcen für
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 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.
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 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]
Kommentare?
Danke für Ihr Feedback.
Egal, ob Sie eine Frage zur Rechnung, Aktivierung oder zu einer technischen Angelegenheit haben, wir sind da, um Ihnen zu helfen.
Montag–Freitag 8:00–17:00 US Central Time
Montag–Donnerstag 8:00–19:00 US Central Time
Freitag 8:30–10:00 & 11:00–17:00 US Central Time