Supposons que ma cellule A1 dans une feuille de calcul Excel contienne le chiffre 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?
microsoft-excel
worksheet-function
notation
Rodolfo Oviedo
la source
la source
Réponses:
Réponse courte
Pour résoudre ce problème, ajoutez simplement un 0 avant le signe égal
ou ajoutez quelques parenthèses pour forcer l'ordre standard des opérations
ou remplacer le signe moins par son interprétation courante de la multiplication par -1
Dans ce cas particulier, où vous avez le terme supplémentaire + A1, la meilleure solution est celle proposée par @ lioness99a:
Explication détaillée
Sous les conventions d'Excel,
est égal à (-3) ^ 2 = 9, tandis que
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) qui modifie le signe du nombre (ou de l'expression) qui suit. Cependant, le signe moins dans 0-3 ^ 2 est un opérateur de soustraction , qui est un opérateur binaire qui soustrait ce qui suit
-
de ce qui précède-
. Selon les conventions d'Excel, l' 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 l' exponentiation est calculée avant la négation et la soustraction ou, plus simplement, elle
^
est calculée 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 Works et ... VBA (the langue utilisée 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.htmlContournements généraux
Si vous voulez calculer
ajouter un 0 avant le signe égal
ou ajoutez quelques parenthèses pour forcer l'ordre standard des opérations
ou remplacer le signe moins par son interprétation courante de la multiplication par -1
Parmi les alternatives ci-dessus, je préfère ajouter un 0 avant le signe de moins car c'est le plus pratique. Si l'expression est déjà entourée de parenthèses, j'évite d'ajouter des parenthèses. L'utilisation fréquente de parenthèses rend les expressions plus difficiles à lire, à déboguer et à écrire.
Si un terme supplémentaire est ajouté (ou soustrait sans le problème de puissance constante),
la meilleure solution consiste à placer l'ExtraTerm en premier,
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 moins.
Merci à @BruceWayne d’avoir proposé une réponse brève, que j’avais écrite au début.
Vous pouvez être intéressé Selon Excel, 4 ^ 3 ^ 2 = (4 ^ 3) ^ 2. Est-ce vraiment la convention mathématique standard?
la source
Un peu plus succint que la réponse de Rodolfo, vous pouvez utiliser:
(Edit: je n'ai tout simplement pas vu que c'était une question / réponse personnelle.)
la source
Un
-
début 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é comme0 - 3^2 = -9
Et si vous avez deux opérateurs, la même chose se passera.
=0--3^2
est traité comme0 - (-3)^2 = -9
et=0+-3^2
est traité comme0 + (-3)^2 = 9
la source
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 fortement la parenthèse 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 je garantis qu'Excel se comporte comme je le souhaite.
la source
x - x^2
. Cela garantit que - est interprété comme un opérateur de soustraction binaire.L'expression
= - A1^2 + A1
est spécifique à Excel et doit donc suivre les règles Excels. Contrairement à d’autres réponses, il n’existe pas d’ ordre de priorité correct . Il existe simplement différentes conventions adoptées par différentes applications. Pour votre référence, l'ordre de priorité utilisé par excel est le suivant:Que vous pouvez remplacer en utilisant des parenthèses.
la source
-
peut être unaire ou binaire. Mais cela ne signifie pas un ordre des opérations. D'autres langues ont cette idée: en Python, Ruby, Octave, Awk et Haskell (les cinq premières langues avec un opérateur d'exponentiation qui leur est venu à l'esprit), sont-3 ** 2
toujours évaluées-9
. Pourquoi? Parce que c'est la bonne réponse.Vous pouvez l'avoir de toute façon:
retournera un 12 , mais:
retournera un -6
Si vous estimez que le retour de 12 viole le bon sens; Sachez que Google Sheets fait la même chose.
la source
=A1-A1^2
renvoie également -6Alternativement, vous pouvez simplement faire
= A1 - A1^2
parce que
-y + x = x-y
la source
D'autres personnes ont répondu "Comment puis-je éviter cela?" une partie de la question. Je vais vous dire pourquoi cela se produit.
Cela se produit parce qu'en 1979, les ordinateurs personnels avaient une capacité de mémoire et de traitement très limitée.
VisiCalc a été introduit pour Apple II en 1979, deux ans avant la publication initiale du PC IBM (auquel la plupart des ordinateurs de bureau et portables modernes retracent leur ascendance directe). L'Apple II peut être utilisé avec jusqu'à 64 Ko (65 536 octets) de RAM et VisiCalc nécessite au moins 32 Ko pour fonctionner. En passant, VisiCalc est assez largement considéré comme l'application "tueur" pour Apple II, et peut-être même pour les micro-ordinateurs personnels en général.
Moins le nombre de cas spéciaux et le nombre de formules pré-requis à rechercher sont importants, plus le code permettant d'analyser une formule de tableur est simple (et par conséquent plus petit). Il serait donc logique d'exiger de l'utilisateur qu'il soit un peu plus explicite dans les cas critiques, en échange de sa capacité à gérer des feuilles de calcul plus volumineuses. N'oubliez pas que même avec un Apple II haut de gamme, vous ne disposiez que de quelques dizaines de kilo-octets après la prise en compte de la mémoire requise par l'application. Avec un système à faible mémoire (48 Ko de RAM n'était pas une configuration inhabituelle pour une machine "sérieuse"), la limite était encore plus basse.
Lorsque IBM a présenté son PC, un portage de VisiCalc vers la nouvelle architecture a été créé. Wikipedia qualifie ce port de "compatible avec les bogues" . Vous vous attendez donc à voir le même comportement d'analyse de formule, même si le système était techniquement capable d'une analyse plus complexe.
À partir de 1982, Microsoft a concouru avec VisiCalc, puis 1-2-3, avec son tableur multiplateforme Multiplan . Plus tard, Lotus 1-2-3 a été introduit en 1983 spécialement pour le PC IBM et a rapidement dépassé VisiCalc. Pour faciliter la transition, il était logique que les deux analysent les formules de la même manière que VisiCalc. Ainsi, le comportement d'anticipation limité serait reporté.
En 1985, Microsoft a introduit Excel sur PC , à l’origine pour Macintosh et à partir de la version 2 en 1987 . Encore une fois, pour faciliter la transition, il était logique de poursuivre le comportement d'analyse syntaxique auquel les gens étaient habitués depuis près d'une décennie.
Avec chaque mise à niveau d'Excel, il était possible de modifier le comportement, mais non seulement les utilisateurs devaient apprendre un nouveau moyen de taper des formules, ils risquaient également de briser la compatibilité avec les feuilles de calcul utilisées ou créées avec la version précédente. Dans un marché toujours très concurrentiel où plusieurs sociétés commerciales se font concurrence dans chaque domaine, il a probablement été décidé de conserver le comportement auquel les utilisateurs étaient habitués.
En 2019, nous sommes toujours aux prises avec les décisions de comportement d'analyse de formule prises au plus tard en 1978-1979.
la source
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. Soit:ou:
Le premier dit d'abord faire l'exponentiation avec des opérandes
A1
et2
, ensuite, faire la négation à ce sujet.Le second dit d’abord faire la négation sur l’opérande
A1
, puis utiliser l’exponentiation sur le résultat de et2
.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 signifie 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 écris
-(A1^2)
.la source
Ce n’est pas un problème avec Excel mais avec des exposants et des négatifs. Lorsque vous prenez un nombre et que vous le montez à une puissance égale, vous annulez le signe négatif.
Vous devez utiliser des parenthèses et plusieurs par
-1
la source
-x^2
où x est 3 etx^2
où x est -3.-x^2+x
n'atteindra jamais 12: wolframalpha.com/input/?i=-x%5E2%2Bx-x ^ 2 + x où x = 3 Voici un exemple d'équation du second degré L'équation peut être écrite comme suit: -3 * -3 + 3: la multiplication a la priorité sur l'addition; le résultat sera donc écrit comme suit: 9 + 3 : Pourquoi = 9 car un nombre négatif x un nombre négatif donne un résultat positif. Ceci peut être vérifié à l’aide d’une calculatrice, d’une règle à calcul ou d’un programme de mathématiques informatiques. Résultat final 9 + 3 = 12
la source
C'est juste un calcul très simple.
Règle 1. Même les multiplications de nombres négatifs produiraient un résultat positif:
Cela est dû au fait que les inconvénients s'annulent par paires.
Règle 2. La puissance de chaque nombre indique que ce nombre sera multiplié par lui-même plusieurs fois.
Et si vous pouvez voir la règle numéro 1 ..
Règle 3. La multiplication et la division ont une priorité plus élevée que l'addition et la soustraction.
Et voici la réponse à votre question:
Combinant les 3 règles précédentes:
Je vous conseille de passer du temps chaque année et de continuer à actualiser les règles fondamentales des mathématiques.
Il s’agit en fait d’une compétence que vous pouvez maintenir et garder au sommet d’une grande partie du monde en ne maîtrisant que les bases de la mathématique.
la source
+-*/
, mais pas aux opérateurs unaires comme-
ou+
. La priorité de l'opérateur électrique est plus élevée que*
et les/
opérateurs unaires ont encore plus de priorité