web-dev-qa-db-fra.com

Pourquoi = -x ^ 2 + x pour x = 3 dans Excel donne-t-il 12 au lieu de -6?

Supposons que ma cellule A1 dans une feuille de calcul Excel contienne le numéro 3 . Si j'entre la formule

= - A1^2 + A1

en A2, alors A2 indique le nombre 12, alors qu'il devrait indiquer -6 (ou -9 + 3)

Pourquoi donc? Comment puis-je prévenir ce comportement trompeur?

93
Rodolfo Oviedo

Réponse courte

Pour résoudre ce problème, ajoutez simplement un 0 avant le signe égal

= 0 - A1^2 + A1

ou ajoutez quelques parenthèses pour forcer l'ordre standard des opérations

= - (A1^2) + A1

ou remplacer le signe moins par son interprétation courante de la multiplication par -1

= -1 * A1^2 + A1

Explication détaillée

Sous les conventions d'Excel,

= - 3^2

est égal à (-3) ^ 2 = 9, tandis que

= 0-3^2

est égal à 0-9 = -9.

Pourquoi ajouter seulement un 0 change le résultat?

Non précédé d'un minuend, le signe moins dans -3 ^ 2 est considéré comme un opérateur de négation, qui est un opérateur unaire (avec un seul argument) modifiant le signe du nombre (ou de l'expression) suivant. . Toutefois, le signe moins 0-3 ^ 2 est un opérateur de soustraction, qui est un opérateur binaire qui soustrait le code suivant - de ce qui précède -. Selon les conventions d'Excel, l'opérateur opérateur d'exponentiation^ est calculé après l'opérateur de négation et avant l'opérateur de soustraction. Voir "Opérateurs de calcul et priorité dans Excel" , section "Ordre dans lequel Excel effectue les opérations dans les formules".

La convention mathématique standard est que le exponentiation est calculé avant la négation et la soustraction ou, plus simplement, ^ est calculé avant -. Honteusement, Excel a choisi différentes conventions parmi celles des règles d'algèbre, des manuels scolaires, des écrits académiques, des calculatrices scientifiques, Lotus 1-2-3, Mathematica, Maple, des langages orientés calcul comme Fortran ou Matlab, MS , et ... VBA (le langage utilisé pour écrire les macros d'Excel)}. Malheureusement, Calc de LibreOffice et Google Sheets suivent la même convention de compatibilité avec Excel. Toutefois, l'insertion d'une expression dans le champ de recherche ou dans la barre de recherche de Google donne d'excellents résultats. Si vous appuyez sur Entrée, l'ordre des calculs sera donné en utilisant des parenthèses. Une discussion où un mathématicien tue les arguments d'un "informaticien" défendant la préséance de la négation sur l'exponenciation: http://mathforum.org/library/drmath/view/69058.html

Solutions générales

Si vous voulez calculer

- anything ^ 2,

ajouter un 0 avant le signe égal

0 - anything ^ 2

ou ajoutez quelques parenthèses pour forcer l'ordre standard des opérations

- ( anything ^ 2 )

ou remplacer le signe moins par son interprétation courante de la multiplication par -1

-1 * anything ^ 2

Un commentaire à une autre réponse indique que le seul cas dans lequel vous devez être conscient de la règle de priorité non standard est lorsqu'un signe moins suit un signe égal (= -). Cependant, il existe d'autres exemples, comme = exp (-x ^ 2) ou = (- 2 ^ 2 = 2 ^ 2), où il n'y a pas de minuend avant le signe égal.

Merci à @BruceWayne d’avoir proposé une réponse brève, que j’avais écrite au début.

Vous pourriez être intéressé par Selon Excel, 4 ^ 3 ^ 2 = 4096. Est-ce correct?

132
Rodolfo Oviedo

Un peu plus succint que la réponse de Rodolfo, vous pouvez utiliser:

=-(A1^2)+(A1)

(Edit: je n'ai tout simplement pas vu que c'était une question/réponse personnelle.)

20
BruceWayne

Un - en tête est considéré comme faisant partie du premier terme.

=-3^2 est traité comme (-3)^2 = 9

Avec un zéro au début, il est plutôt traité comme une soustraction normale.

=0-3^2 est traité comme 0 - 3^2 = -9

Et si vous avez deux opérateurs, la même chose se passera.

=0--3^2 est traité en tant que 0 - (-3)^2 = -9 et =0+-3^2 en tant que 0 + (-3)^2 = 9

14
trapper

L'expression = - A1^2 + A1 est spécifique à Excel et doit donc suivre les règles Excels. Contrairement à d'autres réponses ici, il n'y a pas de correct ordre de priorité. Il existe simplement différentes conventions adoptées par différentes applications. Pour votre information, l'ordre de priorité utilisé par Excel est le suivant:

:       Range
<space> intersection
,       union
-       Negation
%       Percentage
^       Exponential
* and / Multiplication and Division
+ and - Addition and Subtraction
&       Concatenation
= < > <= >= <>  Comparison

Que vous pouvez remplacer en utilisant des parenthèses.

3
Paul Smith

Parce qu'Excel interprète votre équation comme suit:

(-x) ^ 2 + x

Quand tu voulais:

- (x ^ 2) + x

Pour éviter ce genre de comportement indésirable, je trouve que la meilleure pratique consiste à utiliser fréquemment des parenthèses pour définir votre propre système de priorité, car la négation n'est pas la même chose que la soustraction et n'est donc pas couverte par PEMDAS. Un exemple serait comme:

(- (x ^ 2)) + x

C'est peut-être exagéré, mais c'est ainsi que je garantis qu'Excel se comporte comme je le souhaite.

3
routhken

Vous pouvez l'avoir de toute façon:

=-A1^2+A1

retournera un 12 , mais:

=0-A1^2+A1

retournera un -6

Si vous estimez que le fait de revenir 12 viole le bon sens; Sachez que Google Sheets fait la même chose.

3
Gary's Student

Alternativement, vous pouvez simplement faire

= A1 - A1^2

parce que -y + x = x-y

2
lioness99a

L'expression - A1^2 contient deux opérateurs, à savoir l'opérateur de négation unaire - et l'opérateur d'exponentiation binaire ^. En l'absence de toute parenthèse, il pourrait y avoir deux interprétations. Non plus:

-(A1^2)

ou:

(-A1)^2

Le premier dit tout d'abord faire l'exponentiation avec les opérandes A1 et 2, puis négation.

Le second indique d’abord faire la négation sur l’opérande A1, puis d’utiliser l’exponentiation sur le résultat de cette opération et sur 2.

Comme il a été dit dans les commentaires sur la question, Les puissances ont une priorité plus élevée que les signes moins dans tout environnement sain. Ce qui veut dire qu’il est préférable que le système assume le premier.

Cependant, Excel préfère le second.

La leçon est que, si vous ne savez pas si votre environnement est sain ou non, incluez la parenthèse pour indiquer votre sécurité. Alors écrivez -(A1^2).

0
Jeppe Stig Nielsen