2010-01-21 5 views
24

Ceci est un étrange que je suis perplexe. J'ai récemment remarqué à l'invite Gnu Octave, il est possible d'entrer dans des zéros négatifs, comme ceci:Pourquoi Gnu Octave a-t-il des zéros négatifs?

octave:2> abomination = -0 

Et il se souvient, elle aussi:

octave:3> abomination 
abomination = -0 

Dans l'intérêt de la santé mentale, zéro négatif ne égal zéro régulier. Mais j'ai aussi remarqué que le signe a d'autres effets. Comme ceux-ci:

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 

Comme on peut le voir, le signe est préservé grâce à certaines opérations. Mais ma question est pourquoi. Cela semble être un changement radical par rapport aux mathématiques standard, où zéro est essentiellement sans signe. Y a-t-il des propriétés mathématiques attrayantes pour cela? Est-ce important dans certains domaines des mathématiques?

FYI: Matlab, dont l'octave est modélisée, n'a pas de zéros négatifs. Toute tentative d'utilisation est traitée comme des zéros réguliers.

EDIT: Matlab a des zéros négatifs, mais ils ne sont pas affichés dans la sortie par défaut.

+3

FYI: Octave n'est en aucun cas "basé sur" Matlab. Octave est calqué sur Matlab et conçu pour résoudre les mêmes problèmes, mais il n'est certainement pas basé sur Matlab. –

+4

"mathématiques standard" et l'arithmétique à virgule flottante sont deux concepts radicalement différents. – ndim

+1

@Joachim. J'ai réparé ça, merci. – BigBeagle

Répondre

30

Les zéro signés font partie des formats IEEE-754 et leur sémantique est complètement spécifiée par ces formats. Ils s'avèrent très utiles, en particulier lorsqu'il s'agit de coupes de branches complexes et de transformations du plan complexe (voir de nombreux écrits de W. Kahan sur le sujet pour plus de détails, comme les classiques "Coupes de branches pour des fonctions élémentaires complexes"). Ado à propos de Nothing's Sign Bit ").

Version courte: le zéro négatif est souvent une bonne chose à faire dans les calculs numériques, et les programmes qui essaient de protéger les utilisateurs de la rencontrer leur font souvent du tort. FWIW, MATLAB semble utiliser le zéro négatif également, mais comme il imprime des nombres en utilisant la routine printf de l'hôte, ils affichent la même chose que le zéro positif sur Windows.

Voir this discussion sur les forums MATLAB pour plus de détails sur le zéro signé dans MATLAB.

+0

Merci pour la prise Matlab. J'ai ajouté une note à la question. – BigBeagle

9

Les nombres à virgule flottante IEEE-754 ont également cette propriété. Il pourrait être utile pour les limites et les infinis. Par exemple, la limite de 1/x avec x → + ∞ est égal à 0, mais la fonction se rapproche du côté positif de l'axe, avec x → − ∞ la fonction se rapproche du côté négatif si l'un de la force donnez la limite − 0, dans ce cas.

+1

Oui, dans certains maths, il est important de faire une distinction entre -Inf et + Inf comme le log (0) = - Inf – petantik

+1

Eh bien, les infinis ont toujours un signe. Ce n'était pas mon point de toute façon. – Joey

7

Signed Zero

Signé zéro écho le concept d'analyse mathématique de l'approche 0 de ci-dessous comme une limite à sens unique, ce qui peut être désigné par x → 0-, x → 0-, ou x → ↑ 0. La notation "-0" peut être utilisée de façon informelle pour indiquer un nombre négatif qui a été arrondi à zéro. Le concept de zéro négatif a également quelques applications théoriques en la mécanique statistique et d'autres disciplines .

+0

Hmm, je ne sais pas ce qui peut être fait, mais un peu de formatage a été perdu dans la partie notation, alors maintenant les deux premières pièces semblent identiques. – BigBeagle

Questions connexes