Perché 0 ^ 0 nella calcolatrice macOS e iOS danno risultati diversi su versioni diverse?

17

Ho controllato il risultato di 0 ^ 0 nella calcolatrice su versioni diverse:

  • iOS 10.3 = > 1
  • iOS 11.4 = > Errore
  • macOS 10.12.6 = > 1
  • macOS 10.13.5 = > Non un numero

Qual è il motivo della differenza?

    
posta mspanc 06.07.2018 - 20:44
fonte

5 risposte

21

Mentre 0⁰ è generalmente indefinito, alcuni rami della matematica lo definiscono definendolo <1 come 1 perché, come puoi vedere , questo è il valore al quale la funzione y (x) = xˣ converge a n = 0.

Meno formalmente, nota che 0.5 0.5 = 0.707 ...; 0,2 0,2 = 0,725 ...; 0.1 0.1 = 0.794 ... e 0.01 0.01 = 0.955 .... All'avvicinarsi di 0, il risultato si avvicina a 1, il che rende abbastanza logico e pratico definire 0 ^ 0 come 1 in alcuni casi .

Pertanto, nessuno di questi 3 risultati è di per sé non corretto e invece riflettono tutte convenzioni diverse sul valore di questa espressione indefinita.

C'è un buon articolo di Wikipedia che spiega il problema. Vedi anche Zero alla potenza zero - è 0⁰ = 1? .

    
risposta data 07.07.2018 - 02:12
fonte
13

La maggior parte delle implementazioni di aritmetica in virgola mobile seguono lo standard IEEE 754-2008, che specifica che pow (0,0) restituisce 1 (vedere §9.2.1).

Ma definisce anche altre due funzioni: pown (0,0) = 1 e powr (0,0) = NaN.

Wikipedia lo riassume come segue :

The IEEE 754-2008 floating-point standard is used in the design of most floating-point libraries. It recommends a number of operations for computing a power:[20]

pow treats 00 as 1. If the power is an exact integer the result is the same as for pown, otherwise the result is as for powr (except for some exceptional cases).

pown treats 00 as 1. The power must be an exact integer. The value is defined for negative bases; e.g., pown(−3,5) is −243. powr treats 00 as NaN (Not-a-Number – undefined). The value is also NaN for cases like powr(−3,2) where the base is less than zero. The value is defined by epower×log(base).

The pow variant is inspired by the pow function from C99, mainly for compatibility.[21] It is useful mostly for languages with a single power function. The pown and powr variants have been introduced due to conflicting usage of the power functions and the different points of view (as stated above).[22]

Naturalmente questo non ha alcuna influenza su quale sia il risultato matematico corretto: come altri hanno notato, c'è più di una risposta possibile, e IEEE ha dovuto prendere una decisione arbitraria.

    
risposta data 07.07.2018 - 10:51
fonte
5

Qualcuno di Apple ha capito che 0 ^ 0 è un'operazione non valida e la risolve.

    
risposta data 06.07.2018 - 20:51
fonte
5

Zero alla potenza di zero è una contraddizione

  • 0 volte qualsiasi numero è 0
  • qualsiasi numero alla potenza 0 è 1

È dovrebbe generare un errore. L'unico motivo per cui non vedi un errore generato è dovuto al fatto che la versione di Calcolatrice in questione non ha intercettato per quell'errore di input.

    
risposta data 06.07.2018 - 20:52
fonte
4

C'è qualche semicontroversia su 0⁰ che si riduce alla funzione x ^ y che ha una discontinuità in (x, y) - > (0,0). Questo è un semicontroversio dal momento che è un'assurdità matematica proibire a una funzione di avere un valore in una discontinuità.

È pratica generale incorporare interi nei reali in modo tale che una funzione definita sui reali corrisponda alla stessa funzione definita sugli interi ogni volta che la funzione reale assume valori interi. Quindi non ha molto senso distinguere 0.0 ^ 0 da 0.0 ^ 0.0.

Ora x⁰ con l'intero 0 come esponente è un prodotto che contiene esattamente zero fattori di x. Poiché nessun fattore x è contenuto nel suo valore, non ha senso assegnargli un valore che dipende da x, e il suo valore come prodotto vuoto è chiaramente 1, l'elemento neutro per la moltiplicazione.

Questo è anche un buon senso poiché non limita arbitrariamente il teorema binomiale a valori diversi da zero. In un modo, questo è un argomento basato sul tentativo di completare la funzione x⁰ sensibilmente su x = 0, rendendolo definito e continuo ovunque.

Se proviamo questo con la funzione 0 ^ x, il limite di x = 0 + può essere 0, ma definirlo come tale non aiuta ancora a curare la discontinuità essenziale poiché la funzione non è definita per x negativo.

Ora i calcolatori tendono a calcolare x ^ y come exp (y * ln (x)). Ovviamente questa è una cattiva notizia per x = 0. Quindi tali valori devono essere programmati esplicitamente o arriverete a non-un-numero. Per la programmazione esplicita, devi fare affidamento sull'intuizione matematica del programmatore, e il tipico programmatore sarà più guidato dall'intuizione pseudomatematica come "una funzione deve essere continua dove definita" rispetto a un matematico.

Inoltre, puoi aspettarti una raffica di commenti da parte di utenti diversi, ei matematici puri non torneranno ai calcolatori per la loro visione della verità matematica tanto, quindi non puoi aspettarti che i loro input sommergano quello degli altri.

Quindi il risultato è democratico più che matematico e le maggioranze democratiche tendono a cambiare.

    
risposta data 07.07.2018 - 22:39
fonte

Leggi altre domande sui tag