Suponha que minha célula A1 em uma planilha do Excel contenha o número 3 . Se eu inserir a fórmula
= - A1^2 + A1
em A2, A2 mostra o número 12, quando deve mostrar -6 (ou -9 + 3)
Por que é que? Como posso evitar esse comportamento enganoso?
microsoft-excel
worksheet-function
notation
Rodolfo Oviedo
fonte
fonte
Respostas:
Resposta curta
Para resolver esse problema, basta adicionar um 0 antes do sinal de igual
ou adicione alguns parênteses para forçar a ordem padrão de operações
ou substitua o sinal de menos por sua interpretação comum da multiplicação por -1
Nesse caso específico, onde você tem o termo extra + A1, a melhor solução é a proposta por @ lioness99a:
Explicação detalhada
Sob as convenções do Excel,
é igual a (-3) ^ 2 = 9, enquanto
é igual a 0-9 = -9.
Por que adicionar apenas 0 altera o resultado?
Não precedido por um minuendo, o sinal de menos em -3 ^ 2 é considerado um operador de negação , que é um operador unário (com apenas um argumento) que altera o sinal do número (ou expressão) a seguir. No entanto, o sinal de menos em 0-3 ^ 2 é um operador de subtração , que é um operador binário que subtrai o que segue
-
do que precede-
. De acordo com as convenções do Excel, o operador de exponenciação^
é calculado após o operador de negação e antes do operador de subtração . Consulte "Operadores de cálculo e precedência no Excel" , seção "A ordem na qual o Excel executa operações em fórmulas".A convenção matemática padrão é que a exponenciação é computada antes da negação e subtração ou, mais simplesmente,
^
é computada antes-
. Vergonhosamente, o Excel escolheu convenções diferentes das regras de álgebra, livros escolares, redação acadêmica, calculadoras científicas, Lotus 1-2-3, Mathematica, Maple, linguagens orientadas a computação como Fortran ou Matlab, MS Works e ... VBA (the linguagem usada para escrever macros do Excel). Infelizmente, o Calc do LibreOffice e o Google Sheets seguem a mesma convenção para compatibilidade com o Excel. No entanto, colocar uma expressão na caixa ou barra de pesquisa do Google fornece excelentes resultados. Se você pressionar enter, a ordem dos cálculos será dada usando parênteses. Uma discussão em que um matemático mata os argumentos de um "cientista da computação" defendendo a precedência da negação sobre a exponenciação: http://mathforum.org/library/drmath/view/69058.htmlSoluções alternativas gerais
Se você deseja calcular
adicione um 0 antes do sinal de igual
ou adicione alguns parênteses para forçar a ordem padrão de operações
ou substitua o sinal de menos por sua interpretação comum da multiplicação por -1
Das alternativas acima, prefiro adicionar um 0 antes do sinal de menos, porque é o mais prático. Se a expressão já estiver entre parênteses, evito adicionar parênteses. O uso intenso de parênteses torna as expressões mais difíceis de ler, depurar e gravar.
Se um termo extra for adicionado (ou subtraído sem o problema de energia uniforme),
a melhor solução é colocar o ExtraTerm em primeiro lugar,
Um comentário para outra resposta diz que o único caso em que você deve estar ciente da regra de precedência não padrão é quando um sinal de menos segue um sinal de igual (= -). No entanto, existem outros exemplos, como = exp (-x ^ 2) ou = (- 2 ^ 2 = 2 ^ 2), em que não há um minuendo antes do sinal de menos.
Agradeço a @BruceWayne por propor uma resposta curta, que escrevi no começo.
Você pode estar interessado em De acordo com o Excel, 4 ^ 3 ^ 2 = (4 ^ 3) ^ 2. Essa é realmente a convenção matemática padrão?
fonte
Um pouco mais sucinto que a resposta de Rodolfo, você pode usar:
(Edit: eu totalmente não vi que era uma pergunta / resposta própria.)
fonte
Uma liderança
-
é considerada parte do primeiro mandato.=-3^2
é processado como(-3)^2 = 9
Com um zero no início, ele é tratado como subtração normal.
=0-3^2
é processado como0 - 3^2 = -9
E se você tiver dois operadores, o mesmo acontecerá.
=0--3^2
é processado como0 - (-3)^2 = -9
e=0+-3^2
é processado como0 + (-3)^2 = 9
fonte
Como o Excel está interpretando sua equação como:
(-x) ^ 2 + x
Quando você quisesse:
- (x ^ 2) + x
Para evitar esse tipo de comportamento indesejado, acho que a melhor prática é fazer uso pesado de parênteses para definir seu próprio sistema de prioridade, pois negação não é a mesma que subtração e, portanto, não é coberta pelo PEMDAS. Um exemplo seria como:
(- (x ^ 2)) + x
Pode ser um exagero, mas é assim que garanto que o Excel se comporta da maneira que eu quero.
fonte
x - x^2
. Isso garante que o - seja interpretado como o operador de subtração binária.A expressão
= - A1^2 + A1
é específica para o Excel, portanto, deve seguir as regras do Excel. Ao contrário de outras respostas aqui, não há uma ordem correta de precedência. Existem apenas convenções diferentes adotadas por diferentes aplicativos. Para sua referência, a ordem de precedência usada pelo excel é:Que você pode substituir usando parênteses.
fonte
-
pode ser unário ou binário. Mas isso não implica uma ordem de operações. Outras linguagens acertam: em Python, Ruby, Octave, Awk e Haskell (as cinco primeiras linguagens com um operador de exponenciação que veio à mente),-3 ** 2
sempre avalia-9
. Por quê? Porque essa é a resposta correta.Você pode tê-lo de qualquer maneira:
retornará um 12 , mas:
retornará um -6
Se você acha que retornar 12 viola o bom senso; esteja ciente de que o Planilhas Google faz a mesma coisa.
fonte
=A1-A1^2
também retorna -6Como alternativa, você poderia simplesmente fazer
= A1 - A1^2
Porque
-y + x = x-y
fonte
Outras pessoas responderam "como posso evitar isso?" parte da pergunta. Eu vou lhe dizer por que isso acontece.
Isso acontece porque os computadores pessoais em 1979 tinham capacidade de processamento e memória muito limitada.
O VisiCalc foi introduzido para o Apple II em 1979, dois anos antes do lançamento inicial do PC IBM (no qual a maioria dos computadores desktop e laptop modernos traçam sua ancestralidade direta). O Apple II pode ser adquirido com até 64 KiB (65.536 bytes) de RAM, e o VisiCalc exigia pelo menos 32 KiB para ser executado. Como um pouco de lado aqui, o VisiCalc é amplamente considerado o "aplicativo matador" para o Apple II, e talvez de fato para microcomputadores pessoais em geral.
Quanto menos casos especiais e menos previsão da fórmula forem necessários, mais simples (e consequentemente menor) o código para analisar uma fórmula de planilha pode ser feito. Portanto, faria sentido exigir que o usuário fosse um pouco mais explícito em casos extremos, em troca de poder manipular planilhas maiores. Lembre-se, mesmo com um Apple II de ponta, você tinha apenas algumas dezenas de kilobytes para jogar depois que a memória exigida pelo aplicativo era contabilizada. Com um sistema com pouca memória (48 KiB de RAM não era uma configuração incomum para uma máquina "séria"), o limite era ainda mais baixo.
Quando a IBM introduziu seu PC, foi criada uma porta do VisiCalc para a nova arquitetura. A Wikipedia refere-se a essa porta como "compatível com bug" , portanto, você esperaria ver exatamente a mesma fórmula ao analisar o comportamento, mesmo se o sistema tecnicamente fosse capaz de analisar de forma mais complexa.
A partir de 1982, a Microsoft competiu com o VisiCalc e, posteriormente, com o 1-2-3, com sua planilha de plataforma cruzada Multiplan . Posteriormente, o Lotus 1-2-3 foi introduzido em 1983 especificamente para o IBM PC e rapidamente ultrapassou o VisiCalc. Para facilitar a transição, fazia sentido analisar as fórmulas da mesma maneira que o VisiCalc. Portanto, o limitado comportamento de antecipação seria levado adiante.
Em 1985, a Microsoft introduziu o Excel , originalmente para Macintosh e começando com a versão 2 em 1987 para o PC. Novamente, para facilitar a transição, fazia sentido levar adiante a fórmula de analisar o comportamento com o qual as pessoas já estavam acostumadas desde quase uma década.
A cada atualização do Excel, existia a oportunidade de alterar o comportamento, além de exigir que os usuários aprendessem uma nova maneira de digitar fórmulas, além de arriscar quebrar a compatibilidade com planilhas usadas ou criadas com a versão anterior. Em um mercado ainda muito competitivo, com várias empresas comerciais competindo entre si em cada campo, provavelmente foi tomada a decisão de manter o comportamento que os usuários estavam acostumados.
Avanço rápido para 2019, e ainda estamos presos às decisões de comportamento de análise de fórmulas originalmente tomadas até 1978-1979.
fonte
A expressão
- A1^2
contém dois operadores, a saber, o operador de negação unário-
e o operador de exponenciação binária^
. Com a ausência de parênteses, pode haver duas interpretações. Ou:ou:
O primeiro diz primeiro fazer a exponenciação com operandos
A1
e2
, em seguida, negar isso.O segundo diz primeiro faça a negação no operando
A1
e depois use exponenciação no resultado disso e2
.Como foi dito nos comentários à pergunta, os poderes têm maior prioridade do que sinais negativos em qualquer ambiente são. O que significa que é melhor que um sistema assuma o primeiro.
No entanto, o Excel prefere o segundo.
A lição é que, se você não tiver certeza se o seu ambiente é saudável ou não, inclua o parêntese no lado seguro. Então escreva
-(A1^2)
.fonte
Este não é um problema com o Excel, mas com expoentes e negativos. Quando você pega um número e aumenta para uma potência uniforme, você cancela o sinal negativo.
Você precisa usar parênteses e múltiplos por
-1
fonte
-x^2
onde x é 3 ex^2
onde x é -3.-x^2+x
nunca chegará a 12: wolframalpha.com/input/?i=-x%5E2%2Bx-x ^ 2 + x onde x = 3 Este é um exemplo de equação quadrática A equação pode ser escrita assim: -3 * -3 + 3: A multiplicação tem precedência sobre a adição, então o resultado será escrito da seguinte forma: 9 + 3 : Por que = 9 porque um número negativo xa número negativo fornece um resultado positivo. Isso pode ser verificado usando qualquer calculadora, regra de slides ou qualquer programa de matemática para computadores Resultado final 9 + 3 = 12
fonte
É apenas uma matemática realmente simples.
Regra 1. Mesmo multiplicações de números negativos, produziriam um resultado positivo:
Isso se deve ao fato de que menos se cancelam em pares.
Regra 2. O poder de cada número identifica que esse número será multiplicado por si próprio várias vezes.
E se você pode ver a regra número 1 ..
Regra 3. Multiplicação e Divisão têm prioridade mais alta que adição e subtração.
E há a resposta da sua pergunta:
Combinando as três regras anteriores:
Meu conselho é que você gaste algum tempo todo ano e continue atualizando as regras fundamentais da matemática.
Na verdade, é uma habilidade que você pode manter e manter-se no topo de uma grande parte do mundo, apenas conhecendo matemática básica.
fonte
+-*/
, mas não a operadores unários, como-
ou+
. A precedência do operador de energia é maior do que*
e os/
operadores unários têm precedência ainda maior #