2010-01-21 17 views
24

Questo è uno strano per il quale sono confuso. Di recente ho notato che al prompt GNU Octave, è possibile entrare in zeri negativi, in questo modo:Perché Gnu Octave ha zero negativi?

octave:2> abomination = -0 

E ricorda anche:

octave:3> abomination 
abomination = -0 

Nell'interesse della sanità mentale, lo zero negativo fa uguale a zero regolare. Ma ho anche notato che il segno ha altri effetti. Ad esempio:

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 

Come si può vedere, il segno viene mantenuto attraverso determinate operazioni. Ma la mia domanda è perché. Questo sembra un allontanamento radicale dalla matematica standard, dove lo zero è essenzialmente senza segno. Ci sono delle proprietà matematiche interessanti per averlo? Questo è importante in certi campi della matematica?

FYI: Matlab, a cui è stata modellata l'ottava, non ha zeri negativi. Qualsiasi tentativo di usarli viene considerato come zero regolare.

MODIFICA: Matlab ha zeri negativi, ma non vengono visualizzati nell'output predefinito.

+3

FYI: Octave non è in alcun modo "basato su" Matlab. Octave è modellato su Matlab e progettato per risolvere gli stessi problemi, ma sicuramente non è basato su Matlab. –

+4

"matematica standard" e aritmetica in virgola mobile sono due concetti radicalmente diversi. – ndim

+1

@ Joachim. L'ho risolto, grazie. – BigBeagle

risposta

30

zero firmati fanno parte dei formati IEEE-754 e la loro semantica è completamente specificata da tali formati. Risultano piuttosto utili, specialmente quando si affrontano tagli di rami e trasformazioni complesse del piano complesso (vedere molti degli scritti di W. Kahan sull'argomento per ulteriori dettagli, come il classico "Taglio di sezioni per funzioni elementari complesse, o molto altro ancora"). Ado su Nothing's Sign Bit ").

Versione breve: lo zero negativo è spesso una buona cosa da avere nei calcoli numerici, e i programmi che cercano di proteggere gli utenti dall'incontrarlo spesso li rendono un disservizio. FWIW, MATLAB sembra utilizzare anche lo zero negativo, ma poiché stampa numeri usando la routine printf dell'host, essi visualizzano lo stesso zero positivo su Windows.

Vedere this discussion nei forum MATLAB per ulteriori dettagli sullo zero firmato in MATLAB.

+0

Grazie per il fermo Matlab. Ho aggiunto una nota alla domanda. – BigBeagle

9

I numeri in virgola mobile IEEE-754 hanno anche questa proprietà. Potrebbe tornare utile per limiti e infiniti. Ad esempio, il limite di 1/x con x → + ∞ è 0, ma la funzione avvicina dal lato positivo dell'asse, con x → − ∞ la funzione avvicina dal lato negativo così una forza dare il limite come − 0, in tal caso.

+1

Sì, in alcuni calcoli è importante fare una distinzione tra -Inf e + Inf come il log (0) = - Inf – petantik

+1

Bene, gli infiniti hanno sempre un segno. Non era il mio punto comunque. – Joey

7

Signed Zero

firmata a zero echi la matematica concetto analisi di avvicinamento 0 da sotto come un limite unilaterale, che può essere indicata da x → 0-, x → 0-, ox → ↑ 0. La notazione "-0" può essere utilizzata in modo informale per indicare un numero negativo arrotondato a zero. Il concetto di zero negativo ha anche alcune applicazioni teoriche nella meccanica statistica e altre discipline .

+0

Hmm, non sono sicuro di cosa si possa fare, ma una parte della formattazione è stata persa nella parte di notazione, quindi ora i primi due pezzi sembrano identici. – BigBeagle

Problemi correlati