2010-01-21 16 views
24

Dies ist eine merkwürdige, über die ich verwirrt bin. Ich habe vor kurzem an dem Gnu Octave prompt bemerkt hat, ist es möglich, in negativen Nullen eingeben, etwa so:Warum hat Gnu Octave negative Nullen?

octave:2> abomination = -0 

Und es erinnert es auch:

octave:3> abomination 
abomination = -0 

Im Interesse der Vernunft, negativ Null tun gleich reguläre Null. Aber ich habe auch bemerkt, dass das Zeichen einige andere Effekte hat. Wie diese:

octave:6> 4 * 0 
ans = 0 
octave:7> 4 * -0 
ans = -0 
octave:8> 4/0 
warning: division by zero 
ans = Inf 
octave:9> 4/-0 
warning: division by zero 
ans = -Inf 

Wie man sehen kann, ist das Zeichen durch bestimmte Operationen erhalten. Aber meine Frage ist warum. Dies scheint eine radikale Abkehr von der Standardmathematik zu sein, wo Null im Wesentlichen ohne Vorzeichen ist. Gibt es einige attraktive mathematische Eigenschaften dafür? Spielt das in bestimmten Bereichen der Mathematik eine Rolle?

FYI: Matlab, nach dem die Oktave modelliert wurde, hat keine negativen Nullen. Versuche, sie zu verwenden, werden als normale Nullen behandelt.

EDIT: Matlab hat negative Nullen, aber sie werden nicht in der Standardausgabe angezeigt.

+3

FYI: Octave ist in keiner Weise "basierend auf" Matlab. Octave ist Matlab nachempfunden und wurde entwickelt, um die gleichen Probleme zu lösen, aber es basiert definitiv nicht auf Matlab. –

+4

"Standard Mathematik" und Fließkomma-Arithmetik sind zwei grundlegend unterschiedliche Konzepte. – ndim

+1

@ Joachim. Ich habe das repariert, danke. – BigBeagle

Antwort

30

Die signierte Null ist Teil der IEEE-754-Formate, und ihre Semantik wird vollständig von diesen Formaten angegeben. Sie erweisen sich als sehr nützlich, besonders wenn es um komplexe Verzweigungsschnitte und Transformationen der komplexen Ebene geht (siehe viele von W. Kahans Schriften zu diesem Thema für weitere Details, wie die klassischen "Branch Cuts für komplexe Elementarfunktionen oder Much Ado über Nothing's Sign Bit ").

Kurze Version: negative Null ist oft eine gute Sache in numerischen Berechnungen, und Programme, die versuchen, Benutzer vor der Begegnung zu schützen, tun ihnen oft einen schlechten Dienst. FWIW, MATLAB scheint auch eine negative Null zu verwenden, aber da es Zahlen unter Verwendung der printf-Routine des Hosts ausgibt, wird unter Windows dieselbe positive Null angezeigt.

Weitere Informationen zu signierten Zero in MATLAB finden Sie in den MATLAB-Foren unter this discussion.

+0

Danke für den Matlab-Fang. Ich habe der Frage eine Notiz hinzugefügt. – BigBeagle

9

IEEE-754 Gleitkommazahlen haben diese Eigenschaft auch. Es könnte nützlich sein für Grenzen und Unendlichkeiten. Zum Beispiel kann die Grenze von 1/x mit x → + ∞ 0 ist, aber die Funktion nähert sich von der positiven Seite der Achse, mit x → − ∞ die Funktion von der negativen Seite erreicht so eine Kraft geben Sie das Limit als − 0, in diesem Fall.

+1

Ja, in einigen Mathe ist es wichtig zu unterscheiden zwischen -Inf und + Inf wie dem log (0) = - Inf – petantik

+1

Nun, Unendlichkeiten haben immer ein Vorzeichen. Das war sowieso nicht mein Punkt. – Joey

7

Signed Zero

Null Unterzeichnung hallt die mathematische Analysekonzept von 0 von unten als eine einseitige Grenze nähern, die von x → 0- bezeichnet werden kann, x → 0- oder x → ↑ 0. Die Notation "-0" kann informell verwendet werden, um eine negative Zahl zu bezeichnen, die auf Null gerundet wurde. Das Konzept der negativen Null hat auch einige theoretische Anwendungen in statistische Mechanik und andere Disziplinen.

+0

Hmm, ich bin mir nicht sicher, was gemacht werden kann, aber einige Formatierungen sind im Notationsteil verloren gegangen, so dass nun die ersten beiden Teile identisch aussehen. – BigBeagle

Verwandte Themen