¿Por qué 0 ^ 0 en la calculadora de macOS e iOS da resultados diferentes en diferentes versiones?

He comprobado el resultado de 0^0 en la calculadora en diferentes versiones:

  • iOS 10.3 => 1
  • iOS 11.4 => Error
  • macOS 10.12.6 => 1
  • macOS 10.13.5 => No es un número

¿Cuál es la razón de la diferencia?

Tendré que quedarme con High Sierra entonces, porque me encanta el pan NaN ;-))
también news.ycombinator.com/item?id=8502968 < (apple dejó de publicar su versión de la biblioteca matemática libm)
¿Estás preguntando para que puedas entender las matemáticas, o estás preguntando para entender por qué Apple ha cambiado su interpretación de 0^0 varias veces? Si es lo primero, hay una respuesta aceptable publicada; si es lo último, entonces eso puede no ser necesariamente responsable.
En la versión 10.11.6 el resultado es 1

Respuestas (5)

Si bien 0⁰ generalmente no está definido, algunas ramas de las matemáticas lo definen explícitamente como 1 porque, como puede ver , este es el valor al que converge la función y(x) = xˣ en n=0.

Menos formalmente, observe que 0.5 0.5 =0.707…; 0,2 0,2 ​​=0,725…; 0,1 0,1 =0,794… y 0,01 0,01 =0,955…. A medida que se acerque a 0, el resultado se acercará a 1, lo que hace que sea bastante lógico y práctico definir 0^0 como 1 en algunos casos .

Por lo tanto, ninguno de estos 3 resultados es incorrecto per se y, en cambio, todos reflejan diferentes convenciones sobre el valor de esta expresión indefinida.

Hay un buen artículo de Wikipedia que explica el problema. Véase también Cero a la potencia cero: ¿es 0⁰=1? .

Te refieres a x=0, no a n=0.
Nunca antes me había encontrado con esa justificación particular para establecer 0^0=1. Después de todo, x^y no tiene límite como (x,y)→(0,0). Sin embargo , si escribe un polinomio general en la forma ∑ c_n x^n, donde n en la suma va de 0 a n (el grado del polinomio), se vuelve esencial tener 0^0=1, o de lo contrario el “ constante” término no es tan constante después de todo. Ver también aquí.
@ HaraldHanche-Olsen Ese es un punto muy perspicaz, considere escribir una respuesta o siéntase libre de editar la mía. Mi intuición surgió del hecho de que la mayoría de las funciones en la forma e^{αx^β * ln^{ξx^γ + μ}} convergerán a 1 (excepto β=0 y tal vez algunos otros casos extremos), y esa clase se encuentra con frecuencia en aplicaciones de ingeniería, es decir, el tipo de cosas para las que la gente probablemente usará la aplicación de calculadora, pero entiendo que es un poco exagerado.
Aunque esta respuesta brinda una buena explicación de cómo se puede definir 0 ^ 0, no explica por qué Apple ha cambiado su interpretación varias veces.
¿Qué rama de las matemáticas podrían ser esas? Ciertamente, las matemáticas convencionales tienen la respuesta como "indefinido", que es absolutamente sinónimo de "NaN".
@DawoodibnKareem Mi comentario anterior, y más concretamente, la pregunta a la que se hace referencia en math.se, debería explicar por qué puede ser útil que 0^0 sea 1. Por supuesto, tal convención tiene un precio: la expresión x^ y es discontinua en (0,0).
No dije que nunca fuera útil; simplemente que nadie lo define así. Los argumentos sobre la teoría de conjuntos en una de las respuestas a esa pregunta realmente no se sostienen: esta es una operación en números definidos analíticamente, no en entidades teóricas de conjuntos. "Indefinido" o "NaN" es realmente la única respuesta defendible.

La mayoría de las implementaciones de la aritmética de coma flotante siguen el estándar IEEE 754-2008, que especifica que pow(0,0) devuelve 1 (ver §9.2.1).

Pero también define otras dos funciones: pow(0,0) = 1 y powr(0,0) = NaN.

Wikipedia lo resume de la siguiente manera :

El estándar de punto flotante IEEE 754-2008 se utiliza en el diseño de la mayoría de las bibliotecas de punto flotante. Recomienda una serie de operaciones para calcular una potencia:[20]

pow trata 0 0 como 1. Si la potencia es un número entero exacto, el resultado es el mismo que para pow, de lo contrario, el resultado es como para powr (excepto en algunos casos excepcionales).

pown trata 0 0 como 1. La potencia debe ser un entero exacto. El valor se define para bases negativas; por ejemplo, pown(−3,5) es −243. powr trata 0 0 como NaN (No es un número, indefinido). El valor también es NaN para casos como powr(−3,2) donde la base es menor que cero. El valor está definido por epower×log(base).

La variante pow está inspirada en la función pow de C99, principalmente por compatibilidad.[21] Es útil principalmente para idiomas con una sola función de potencia. Las variantes pown y powr se han introducido debido al uso conflictivo de las funciones de potencia y los diferentes puntos de vista (como se indicó anteriormente).[22]

Por supuesto, esto no influye en cuál es el resultado matemático correcto: como han señalado otros, hay más de una respuesta posible, y el IEEE tuvo que tomar una decisión arbitraria.

Alguien en Apple descubrió que 0^0 es una operación no válida y lo arregló.

Cero elevado a cero es una contradicción

  • 0 veces cualquier número es 0
  • cualquier número elevado a la potencia 0 es 1

Debería generar un error . La única razón por la que no ve que se genere un error se debe al hecho de que la versión de la Calculadora en cuestión no detectó ese error de entrada.

El matemático (aficionado muy oxidado) querría argumentar que el límite de 0^x es 0 cuando x se acerca a 0 y el límite de x^x es 1 cuando x se acerca a 0, por lo tanto, tiene una discontinuidad que es la definición misma de Indeterminado y calienta mi oído ver NaN en el único sistema operativo verdadero
calienta mi oído : imágenes de ovejas tostadas y calientes haciendo problemas de cálculo con su Sheppard, @bmike :-D
Jajaja, no puedo editar ese error tipográfico ahora: una manada cálida se escucha mejor hablada y no escrita. Además, mi corazón todavía se conmueve con esta pregunta, esta respuesta y este hilo de comentarios.
@Allan, ¿te refieres a orejas calientes y tostadas? Era "escuchado" no "rebaño" :o
Cero elevado a cero no es "una contradicción". Está definido por algunos autores e indefinido por otros autores. La razón por la que algunos autores lo dejan sin definir es que una definición ideal tendría que satisfacer las dos propiedades contradictorias que diste.
@TannerSwett "definido por algunos autores e indefinido por otros autores" no es cómo funcionan las matemáticas. Algunas cosas simplemente no tienen una respuesta numérica; igual que 0/0.
@MrLister "definido por algunos autores e indefinido por otros autores" es precisamente cómo funcionan las matemáticas. En casi todos los contextos, 0^0 = 1 es la definición correcta (por ejemplo, es el número de funciones del conjunto vacío al conjunto vacío). El hecho de que x^y no pueda extenderse continuamente hasta el origen es desafortunado y es la razón por la que algunos educadores del análisis prefieren dejarlo sin definir para evitar confusiones, pero incluso ellos tienen que tomar 0^0 = 1 una vez que llegan a serie de potencias.
@TannerSwett: está definido por algunos autores y no definido por otros autores. Eso explica literalmente lo que es una contradicción.
Todos deben tener en cuenta que la pregunta no es "¿cuál es el límite de f(x)=x^0como x → 0?" sino por qué una versión de la aplicación de calculadora simple da una respuesta de 1 mientras que otra dice "error" y una tercera dice "no es un número". Debemos recordar que aquí no estamos tratando con una calculadora gráfica científica , por lo que los resultados correctos deben ser "NaN" o "Error" en orden de precisión.
@bmike No hay necesidad de involucrar límites. El hecho de que x^y sea discontinuo en (0, 0) no significa que no pueda asignar un valor a 0^0
No es una contradicción , no está definido (si está utilizando un libro de texto en el que en realidad no está definido, en algunas situaciones, lo define).

Existe cierta controversia sobre 0⁰ que se reduce a que la función x^y tiene una discontinuidad en (x,y)->(0,0). Esta es una semicontroversia ya que es una tontería matemática prohibir que una función tenga un valor en una discontinuidad.

Es una práctica general incrustar números enteros en los reales de modo que una función definida en los reales coincida con la misma función definida en los números enteros siempre que la función real asuma valores integrales. Entonces, no tiene mucho sentido distinguir 0.0^0 de 0.0^0.0 .

Ahora x⁰ con el entero 0 como exponente es un producto que contiene exactamente cero factores de x. Dado que su valor no contiene factores de x, no tiene mucho sentido asignarle un valor que dependa de x, y su valor como producto vacío es claramente 1, el elemento neutral para la multiplicación.

Esto también tiene sentido ya que no restringe arbitrariamente el teorema del binomio a valores distintos de cero. En cierto modo, este es un argumento basado en tratar de completar la función x⁰ de manera sensata en x=0, haciéndola definida y continua en todas partes.

Si intentamos esto con la función 0^x, el límite en x=0+ puede ser 0, pero definirlo como tal aún no ayuda a curar la discontinuidad esencial ya que la función no está definida para x negativo.

Ahora las calculadoras tienden a calcular x^y como exp(y*ln(x)). Por supuesto que son malas noticias para x=0. Por lo tanto, dichos valores deben programarse explícitamente o llegará a un número que no es. Para la programación explícita, debe confiar en la intuición matemática del programador, y el programador típico se guiará más por la intuición pseudomatemática como "una función debe ser continua donde esté definida" que un matemático.

Además, puede esperar una ráfaga de comentarios de diferentes usuarios, y los matemáticos puros no volverán tanto a las calculadoras por su visión de la verdad matemática, por lo que no puede esperar que sus aportes inunden los de los demás.

Entonces el resultado es más democrático que matemático, y las mayorías democráticas tienden a cambiar.