17 votes

Pourquoi 0^0 dans la calculatrice MacOS et iOS donne-t-il des résultats différents selon les versions ?

J'ai vérifié le résultat de 0^0 dans la calculatrice sur différentes versions :

  • iOS 10.3 => 1
  • iOS 11.4 => Erreur
  • MacOS 10.12.6 => 1
  • MacOS 10.13.5 => Pas un chiffre

Quelle est la raison de cette différence ?

22 votes

Je vais devoir m'en tenir à High Sierra alors, car j'adore le pain NaN ;-))

5 votes

0 votes

Également news.ycombinator.com/item?id=8502968 < (apple a arrêté de publier sa version de la bibliothèque mathématique libm)

20voto

undercat Points 300

Alors que 0 est généralement indéfini, certaines branches des mathématiques le font explicitement. définir c'est 1 parce que, comme vous pouvez le voir c'est la valeur vers laquelle converge la fonction y(x) = x à n=0.

De manière moins formelle, notons que 0,5 0.5 \=0.707 ; 0.2 0.2 \=0.725 ; 0.1 0.1 \=0.794 et 0.01 0.01 \=0.955 . Au fur et à mesure que l'on s'approche de 0, le résultat s'approche de 1, ce qui rend assez logique et pratique le fait de définir 0^0 comme 1 dans certains cas .

Ainsi, aucun de ces 3 résultats n'est incorrect en soi et ils reflètent tous des conventions différentes sur la valeur de cette expression indéfinie.

Il y a une bonne Article de Wikipedia expliquant la question. Voir aussi Zéro à la puissance zéro - est-ce que 0=1 ? .

4 votes

Vous voulez dire à x=0, pas à n=0.

2 votes

Je n'ai jamais rencontré auparavant ce raisonnement particulier pour fixer 0^0=1. Après tout, x^y n'a pas de limite comme (x,y)(0,0). Cependant Si vous écrivez un polynôme général sous la forme c_n x^n, où n dans la somme va de 0 à n (le degré du polynôme), il devient essentiel d'avoir 0^0=1, sinon le terme "constant" n'est pas si constant après tout. Voir aussi ici.

0 votes

@HaraldHanche-Olsen C'est un point très perspicace, pensez à écrire une réponse, ou n'hésitez pas à modifier la mienne. Mon intuition venait du fait que la plupart des fonctions de la forme e^{x^ * ln^{x^ + }} convergent vers 1 (sauf pour =0 et peut-être quelques autres cas limites), et que cette classe est fréquemment rencontrée dans les applications d'ingénierie, c'est-à-dire le genre de choses pour lesquelles les gens utiliseront probablement l'application calculatrice, mais je comprends que c'est un peu tiré par les cheveux.

13voto

Michael Kay Points 231

La plupart des implémentations de l'arithmétique à virgule flottante suivent la norme IEEE 754-2008, qui spécifie que pow(0,0) renvoie 1 (voir §9.2.1).

Mais il définit également deux autres fonctions : pown(0,0) = 1 et powr(0,0) = NaN.

Wikipedia le résume comme suit :

La norme à virgule flottante IEEE 754-2008 est utilisée dans la conception de la plupart des bibliothèques à virgule flottante. Elle recommande un certain nombre d'opérations pour calculer une puissance : [20]

pow traite 0 0 comme 1. Si la puissance est un nombre entier exact, le résultat est le même que pour pown. résultat est le même que pour pown, sinon le résultat est le même que pour powr (sauf pour certains cas cas exceptionnels).

pown traite 0 0 comme 1. La puissance doit être un entier exact entier exact. La valeur est définie pour les bases négatives ; par exemple, pown(3,5) vaut 243. powr traite 0 0 comme NaN (Not-a-Number - indéfini). La valeur est également NaN pour les cas comme powr(3,2) où la base est inférieure à zéro. La valeur est définie par epower×log(base).

La variante pow s'inspire de la fonction pow de C99, principalement pour des raisons de compatibilité[21]. utile surtout pour les langages avec une seule fonction puissance. Les variantes pown et powr ont été introduites en raison de l'utilisation conflictuelle des fonctions de puissance et des différents points de vue (comme indiqué dans l'article). fonctions de puissance et aux différents points de vue (comme indiqué ci-dessus)[22].

Bien sûr, cela n'a aucune incidence sur le résultat mathématique correct : comme d'autres l'ont fait remarquer, il y a plus d'une réponse possible, et IEEE a dû prendre une décision arbitraire.

5voto

nohillside Points 82672

Quelqu'un chez Apple a compris que 0^0 est une opération invalide et l'a corrigé.

5voto

Douglas Points 10417

Zéro à la puissance zéro est une contradiction

  • 0 fois un nombre quelconque est 0
  • tout nombre à la puissance 0 est égal à 1

Il devrait générer une erreur. La seule raison pour laquelle vous ne voyez pas d'erreur générée est que la version de Calculator en question n'a pas détecté cette erreur d'entrée.

9 votes

Le site (amateur très rouillé) mathématicien voudrait argumenter que la la limite de 0^x est 0 lorsque x s'approche de 0 et que le la limite de x^x est 1 lorsque x s'approche de 0, donc vous avez une discontinuité qui est la définition même de l'indéterminé et me réchauffe l'oreille de voir NaN sur le seul vrai OS

1 votes

réchauffe mes oreilles - des images de moutons bien au chaud faisant des problèmes de calcul avec leur Sheppard, @bmike :-D

0 votes

Lol - Je ne peux pas corriger cette faute de frappe maintenant - un troupeau chaleureux s'entend mieux à l'oral qu'à l'écrit. De plus, mon cœur est toujours réchauffé par cette question, cette réponse et ce fil de commentaires.

4voto

Il y a une certaine semi-controverse à propos de 0 qui se résume à la fonction x^y ayant une discontinuité à (x,y)->(0,0). C'est une semi-controverse puisque c'est un non-sens mathématique d'interdire une fonction ayant une valeur à une discontinuité.

La pratique générale consiste à intégrer les entiers dans les réels de telle sorte qu'une fonction définie sur les réels corresponde à la même fonction définie sur les entiers chaque fois que la fonction réelle prend des valeurs intégrales. Il est donc inutile de distinguer 0,0^0 de 0,0^0,0 .

Or, x avec l'entier 0 comme exposant est un produit contenant exactement zéro facteur de x. Puisqu'aucun facteur de x n'est contenu dans sa valeur, il n'y a guère d'intérêt à lui attribuer une valeur dépendant de x, et sa valeur en tant que produit vide est assez clairement 1, l'élément neutre pour la multiplication.

Cela a également du sens, car cela ne restreint pas arbitrairement le théorème binomial à des valeurs non nulles. D'une certaine manière, il s'agit d'un argument basé sur la tentative de compléter la fonction x de manière raisonnable à x=0, la rendant définie et continue partout.

Si nous essayons ceci avec la fonction 0^x à la place, la limite à x=0+ peut être 0, mais la définir comme telle ne permet toujours pas de remédier à la discontinuité essentielle puisque la fonction est indéfinie pour x négatif.

Maintenant, les calculatrices ont tendance à calculer x^y comme exp(y*ln(x)). Bien sûr, c'est une mauvaise nouvelle pour x=0. Donc de telles valeurs doivent être explicitement programmées ou vous arriverez à un non-nombre. Pour la programmation explicite, vous devez compter sur l'intuition mathématique du programmeur, et le programmeur typique sera plus guidé par une intuition pseudo-mathématique comme "une fonction doit être continue là où elle est définie" que ne le ferait un mathématicien.

En outre, vous pouvez vous attendre à une avalanche de commentaires de la part des différents utilisateurs, et les mathématiciens purs ne reviendront pas tant que ça aux calculatrices pour leur vision de la vérité mathématique, vous ne pouvez donc pas vous attendre à ce que leur contribution supplante celle des autres.

Le résultat est donc plus démocratique que mathématique, et les majorités démocratiques ont tendance à changer.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X