¿Por qué = -x ^ 2 + x para x = 3 en Excel da como resultado 12 en lugar de -6?

96

Supongamos que mi celda A1 en una hoja de cálculo de Excel contiene el número 3 . Si ingreso la formula

= - A1^2 + A1

en A2, A2 muestra el número 12, cuando debería mostrar -6 (o -9 + 3)

¿Porqué es eso? ¿Cómo puedo evitar este comportamiento engañoso?

Rodolfo Oviedo
fuente
19
Un número negativo al cuadrado es un número positivo. Lo que haría que la fórmula 9 + 3. - (A1) ^ 2 te daría -6.
Ramhound
68
Los poderes de @Ramhound tienen mayor prioridad que los signos negativos en cualquier entorno sano.
Nadie
17
Debería ser - (A1 ^ 2) para obtener -6 ... necesita paréntesis alrededor de la operación, no solo el número. Excel está bien para las matemáticas, pero debe respetar el orden de las operaciones y, en caso de duda, ¡usar paréntesis!
SnakeDoc
13
Esto tiene que ver con el orden de las operaciones y nada que ver con Excel.
YetAnotherRandomUser
11
Para todos los comentaristas que critican las habilidades matemáticas de los OP: en matemática pura estándar, esto debería evaluar inequívocamente a -6. En particular, se entiende que lo negativo siempre significa 0-x (como se indica en la respuesta). La introducción de un unario es un tema nuevo en la informática aplicada, y casi siempre es solo un detalle de implementación. Criticar el OP por no entender esto es como responder una pregunta sobre la confusión con respecto a los errores de coma flotante con "el programa está bien. Solo necesita verificar sus matemáticas. Vea, si escribe estos números en binario entonces ..."
DreamConspiracy

Respuestas:

136

Respuesta corta

Para resolver este problema, simplemente agregue un 0 antes del signo igual

= 0 - A1^2 + A1

o agregue un par de paréntesis para forzar el orden estándar de operaciones

= - (A1^2) + A1

o reemplace el signo menos por su interpretación común de la multiplicación por -1

= -1 * A1^2 + A1

En este caso particular, donde tiene el término extra + A1, la mejor solución es la propuesta por @ lioness99a:

= A1 - A1^2

Explicación detallada

Bajo las convenciones de Excel,

= - 3^2

es igual a (-3) ^ 2 = 9, mientras que

= 0-3^2

es igual a 0-9 = -9.

¿Por qué agregar solo un 0 cambia el resultado?

No precedido por un minuendo, el signo menos en -3 ^ 2 se considera un operador de negación , que es un operador unario (con un solo argumento) que cambia el signo del número (o expresión) que sigue. Sin embargo, el signo menos en 0-3 ^ 2 es un operador de resta , que es un operador binario que resta lo que sigue -de lo que precede -. Según las convenciones de Excel, el operador de exponenciación ^ se calcula después del operador de negación y antes del operador de resta . Consulte "Operadores de cálculo y precedencia en Excel" , sección "El orden en que Excel realiza operaciones en fórmulas".

La convención matemática estándar es que la exponenciación se calcula antes de la negación y la sustracción o, más simplemente, ^se calcula antes -. Vergonzosamente, Excel eligió diferentes convenciones de las reglas de álgebra, libros de texto escolares, escritura académica, calculadoras científicas, Lotus 1-2-3, Mathematica, Maple, lenguajes orientados a la computación como Fortran o Matlab, MS Works y ... VBA (el lenguaje utilizado para escribir las macros de Excel). Desafortunadamente, Calc de LibreOffice y Google Sheets siguen la misma convención para compatibilidad con Excel. Sin embargo, colocar una expresión en el cuadro o barra de búsqueda de Google da excelentes resultados. Si presiona Intro, el orden de los cálculos se dará usando paréntesis. Una discusión en la que un matemático mata los argumentos de un "informático" que defiende la precedencia de la negación sobre la exponenciación: http://mathforum.org/library/drmath/view/69058.html

Soluciones generales

Si quieres calcular

- Anything ^ 2,

agregue un 0 antes del signo igual

0 - Anything ^ 2

o agregue un par de paréntesis para forzar el orden estándar de operaciones

- ( Anything ^ 2 )

o reemplace el signo menos por su interpretación común de la multiplicación por -1

-1 * Anything ^ 2

De las alternativas anteriores, prefiero agregar un 0 antes del signo de menos porque es el más práctico. Si la expresión ya está entre paréntesis, evito agregar paréntesis. El uso intensivo de paréntesis hace que las expresiones sean más difíciles de leer, depurar y escribir.

Si se agrega un término adicional (o se resta sin el problema de potencia par),

- Anything ^ 2 + ExtraTerm,

la mejor solución es colocar el ExtraTerm primero,

ExtraTerm - Anything ^ 2.

Un comentario a otra respuesta dice que el único caso en el que debe tener en cuenta la regla de precedencia no estándar es cuando un signo menos sigue a un signo igual (= -). Sin embargo, hay otros ejemplos, como = exp (-x ^ 2) o = (- 2 ^ 2 = 2 ^ 2), donde no hay un minuendo antes del signo menos.

Gracias a @BruceWayne por proponer una respuesta corta, que escribí al principio.

Quizás te interese Según Excel, 4 ^ 3 ^ 2 = (4 ^ 3) ^ 2. ¿Es esta realmente la convención matemática estándar?

Rodolfo Oviedo
fuente
1
Los comentarios no son para discusión extendida; Esta conversación se ha movido al chat .
DavidPostill
Por favor ver arriba. Todos los comentarios serán eliminados si no son parte de la discusión del chat.
DavidPostill
20

Un poco más sucinto que la Respuesta de Rodolfo, puedes usar:

=-(A1^2)+(A1)

(Editar: totalmente no vi que era una auto pregunta / respuesta).

Bruce Wayne
fuente
1
¡Exactamente! Dependiendo de las reglas de precedencia de cualquier idioma o aplicación, ser lo que crees que debería ser es una receta para los problemas.
jamesqf
2
@jamesqf, pero debe haber algún sentido y límites para esto. Nadie escribe 2+ (3 * 4). Si un lenguaje tiene operaciones aritméticas y alguna regla de precedencia, debe admitir absolutamente todas las convenciones matemáticas estándar. No hay excusa para tal error en Excel.
Zeus
44
@ Zeus: ¿Nadie? Probablemente lo haría, especialmente si tuviera una expresión más complicada o una condición if. Por supuesto, escribiría 3 * 4 + 2 incluso si dejara de lado a los padres.
jamesqf
3
Durante mucho tiempo tuve la sospecha de que tal hábito de uso excesivo de los padres proviene de la sobreexposición (oh, tan frecuente) a C (y sus descendientes sintácticos). Pero C de ninguna manera es un buen ejemplo de seguimiento correcto de las reglas matemáticas, incluida la precedencia (además tiene problemas con las macros). Por el contrario, las personas con exposición inicial a más sistemas / idiomas académicos esperan un diseño correcto y no tienden a hacer concesiones "por si acaso". De ahí verdaderas sorpresas como en el OP.
Zeus
14

Un líder -se considera parte del primer término.

=-3^2 se procesa como (-3)^2 = 9

Con un cero al comienzo, se trata como una resta normal.

=0-3^2 se procesa como 0 - 3^2 = -9

Y si tiene dos operadores, sucederá lo mismo.

=0--3^2se procesa como 0 - (-3)^2 = -9y =0+-3^2se procesa como0 + (-3)^2 = 9

trampero
fuente
4

Porque Excel está interpretando tu ecuación como:

(-x) ^ 2 + x

Cuando quisiste

- (x ^ 2) + x

Para evitar este tipo de comportamiento no deseado, creo que la mejor práctica es hacer un uso intensivo de paréntesis para definir su propio sistema de prioridad, ya que la negación no es lo mismo que la resta, y por lo tanto no está cubierto por PEMDAS. Un ejemplo sería como:

(- (x ^ 2)) + x

Puede ser excesivo, pero así es como garantizo que Excel se comporta de la manera que quiero.

desgarrado
fuente
44
"Ya que PEMDAS no está garantizado en Excel" - No, está absolutamente garantizado en Excel. Cualquier otra cosa sería una locura. PEMDAS no cubre si la negación unaria (¡que es distinta de la resta!) Tiene precedencia sobre la exponenciación.
Konrad Rudolph
1
@routhken El uso intensivo de paréntesis hace que escribir, editar y depurar sea engorroso. Para facilitar esas tareas, verifico la precedencia de los operadores en el software con el que estoy trabajando y utilizo solo los paréntesis necesarios. Además, agrego espacios para mejorar la legibilidad.
Rodolfo Oviedo
@KonradRudolph Edité mi respuesta, gracias por la aclaración.
routhken
1
Yo prefiero usar x - x^2. Esto asegura que - se interprete como el operador de sustracción binaria.
Xalorous
@KonradRudolph Creo que la forma de ver esto es que las hojas de cálculo y los lenguajes de programación de computadoras usan PUEMDAS donde las operaciones unarias se evalúan después de las operaciones entre paréntesis pero antes de las operaciones matemáticas binarias.
Xalorous
3

La expresión = - A1^2 + A1es específica de Excel, por lo que debe seguir las reglas de Excels. Contrariamente a algunas otras respuestas aquí, no hay un orden de precedencia correcto . Hay simplemente diferentes convenciones adoptadas por diferentes aplicaciones. Para su referencia, el orden de precedencia utilizado por Excel es:

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

Que puedes anular usando paréntesis.

Paul Smith
fuente
99
Por supuesto, Excel podría haber elegido + para significar multiplicación y * para significar resta, etc. y cualquiera que necesite usar Excel debería saberlo. Pero hubiera estado mal. El caso en cuestión no es el mismo nivel de error (o tontería), pero definitivamente puede argumentar que Excel definió las prioridades equivocadas.
Mormegil
44
@Mormegil Bien dicho! Una vez que intente = 1 + 2 * 2 y vea que la respuesta es 5 y no 6. se le lleva a suponer que Excel sigue las reglas del álgebra. ¿Cuál es el punto de engañar a las personas?
Rodolfo Oviedo
Hay un orden de precedencia correcto, pero las computadoras tienen operaciones adicionales. El problema aquí es que las computadoras usan '-' para la negación Y para la resta donde la persona que hace álgebra escrita ve discrimina entre negación y resta. Para que la computadora note la diferencia, necesita un conjunto de reglas. En '-x', el '-' es un operador unario (actúa en un operando). En '1-x', el '-' es un operador binario. Entonces, Excel (y otro software de computadora) convierte -x ^ 2 a (-x) ^ 2. El resto del orden de precedencia todavía se aplica como todos lo aprendimos en la escuela primaria.
Xalorous
3
@ Xalorous: Sí, -puede ser unario o binario. Pero eso no implica un orden de operaciones. Otros idiomas lo hacen bien: en Python, Ruby, Octave, Awk y Haskell (los primeros cinco idiomas con un operador de exponenciación que se me ocurrió), -3 ** 2siempre se evalúa -9. ¿Por qué? Porque esa es la respuesta correcta.
wchargin
1
@Xalorous la persona que hace álgebra escrita usa las convenciones de su audiencia combinadas con paréntesis para reducir la ambigüedad. No existe un orden de precedencia correcto , y las reglas del álgebra son en realidad solo convenciones.
Paul Smith
3

Puedes tenerlo de cualquier manera:

=-A1^2+A1

devolverá un 12 , pero:

=0-A1^2+A1

devolverá un -6

Si siente que regresar 12 viola el sentido común; Tenga en cuenta que Google Sheets hace lo mismo.

Estudiante de gary
fuente
1
Parece que el signo menos unario tiene precedencia "demasiado alta".
Andreas Rejbrand
@AndreasRejbrand Parece ser unitario solo si sigue directamente el signo = ............... =A1-A1^2también devuelve -6
Gary's Student
2
Pero en el ejemplo A1 - A1 ^ 2, el signo menos es obviamente binario. (Un operador unario es aquel que toma un solo operando (como el signo menos unario en -5, o el factorial, el signo no, etc.); un operador binario es aquel que toma dos operandos (como multiplicación binaria más, menos, multiplicación, unión, etc.).) Observe que el signo menos puede ser unario incluso si no sigue inmediatamente después del signo igual: 5 + (-4 + 3).
Andreas Rejbrand
@AndreasRejbrand ¡Estoy completamente de acuerdo contigo!
Estudiante de Gary
Solo para defender la reputación de Google, pruebe el cuadro de búsqueda o la barra para ingresar expresiones matemáticas. Obtendrá resultados muy consistentes con las buenas matemáticas, incluso mejor que con Matlab u Octave, por ejemplo, intente 2 ^ 1 ^ 2.
Rodolfo Oviedo
3

Alternativamente, podrías hacer

= A1 - A1^2

porque -y + x = x-y

leona99a
fuente
Esto no explica por qué debería funcionar, y duplica numerosas respuestas anteriores.
Fixer1234
@ fixer1234 Literalmente, nadie más ha dicho eso, y le he dado la razón matemática.
leona99a
1. Muchas respuestas describen convertir esto en una resta explícita. 2. Esa no es la razón matemática. La pregunta es por qué Excel no se comporta de esa manera. La respuesta es que lo negativo no se trata como una resta de Excel.
Fixer1234
Preguntaron cómo prevenir el comportamiento. Les mostré la forma más simple. Y ni una sola respuesta dice lo que tengo ...
leona99a
La mejor solucion. Agregué a mi respuesta con el debido crédito. Si te gustó la PREGUNTA, por favor, vota.
Rodolfo Oviedo
2

Otras personas han respondido "¿cómo puedo evitar esto?" parte de la pregunta Te voy a decir por qué sucede.

Ocurre porque las computadoras personales en 1979 tenían memoria y capacidad de procesamiento muy limitadas.

VisiCalc se presentó para Apple II en 1979, dos años antes del lanzamiento inicial de la PC IBM (a la que la mayoría de las computadoras de escritorio y portátiles modernas rastrean su ascendencia directa). El Apple II se podía tener con hasta 64 KiB (65.536 bytes) de RAM, y VisiCalc requería al menos 32 KiB para funcionar. Como un poco aparte aquí, VisiCalc es ampliamente considerado como la "aplicación asesina" para el Apple II, y quizás de hecho para las microcomputadoras personales en general.

Cuantos menos casos especiales y menos fórmula previa se requiera, más simple (y en consecuencia más pequeño) se puede hacer el código para analizar una fórmula de hoja de cálculo. Por lo tanto, tendría sentido exigir que el usuario sea algo más explícito en los casos de esquina, a cambio de poder manejar hojas de cálculo más grandes. Recuerde, incluso con un Apple II de gama alta, solo tenía unas pocas decenas de kilobytes para jugar después de que se contabilizaba la memoria requerida por la aplicación. Con un sistema de poca memoria (48 KiB RAM no era una configuración poco común para una máquina "seria"), el límite era aún más bajo.

Cuando IBM presentó su PC, se creó un puerto de VisiCalc para la nueva arquitectura. Wikipedia se refiere a este puerto como "compatible con errores" , por lo que esperaría ver exactamente el mismo comportamiento de análisis de fórmulas, incluso si el sistema técnicamente era capaz de análisis más complejos.

A partir de 1982, Microsoft compitió con VisiCalc, y luego 1-2-3, con su hoja de cálculo multiplataforma Multiplan . Más tarde, Lotus 1-2-3 se introdujo en 1983 específicamente para la PC de IBM, y rápidamente superó a VisiCalc en él. Para facilitar la transición, tenía sentido que ambas analizaran las fórmulas de la misma manera que lo hizo VisiCalc. Por lo tanto, el comportamiento de anticipación limitado se llevaría adelante.

En 1985, Microsoft introdujo Excel , originalmente para Macintosh y comenzando con la versión 2 en 1987 para PC. Una vez más, para facilitar la transición, tenía sentido llevar adelante el comportamiento de análisis de fórmulas al que las personas ya estaban acostumbradas desde hace casi una década.

Con cada actualización de Excel, existía la oportunidad de cambiar el comportamiento, pero no solo requeriría que los usuarios aprendieran una nueva forma de escribir fórmulas, sino que también correría el riesgo de romper la compatibilidad con las hojas de cálculo utilizadas o creadas con la versión anterior. En un mercado todavía muy competitivo con varias compañías comerciales que compiten entre sí en cada campo, es probable que se haya tomado la decisión de mantener el comportamiento al que los usuarios estaban acostumbrados.

Avancemos rápidamente hasta 2019, y todavía estamos atrapados con las decisiones de comportamiento de análisis de fórmulas originalmente tomadas a más tardar en 1978-1979.

un CVn
fuente
mathforum.org/library/drmath/view/69058.html y macnauchtan.com/pub/precedence.html#_Aworks informan que Lotus 1-2-3 sigue convenciones algebraicas comunes.
Rodolfo Oviedo
0

La expresión - A1^2contiene dos operadores, a saber, el operador de negación unario -y el operador de exponenciación binaria ^. Con la ausencia de paréntesis, podría haber dos interpretaciones. Ya sea:

-(A1^2)

o:

(-A1)^2

La primera de ellas dice que primero haga el exponenciación con operandos A1y 2, a continuación, hacer la negación sobre eso.

El segundo dice primero hacer la negación en el operando A1, y luego usar exponenciación en el resultado de eso y 2.

Como se dijo en los comentarios a la pregunta, las potencias tienen mayor prioridad que los signos negativos en cualquier entorno sano. Lo que significa que es mejor si un sistema asume el primero.

Sin embargo, Excel prefiere el segundo.

La lección es, si no está seguro de si su entorno es sano o no, incluya el paréntesis para estar seguro. Entonces escribe -(A1^2).

Jeppe Stig Nielsen
fuente
Esto duplica la respuesta aceptada y otras respuestas anteriores.
Fixer1234
-1

Esto no es un problema con Excel, sino con exponentes y negativos. Cuando toma un número y lo eleva a una potencia par, cancela el signo negativo.

-x^2 + x == (-x * -x) + x 
x = 3  => (-3 * -3) + 3
       ==  9 + 3 => 12

Necesitas usar paréntesis y múltiples por -1

-1 * (x^2) + x
nitrodmr
fuente
10
No es así como funcionan las señales. Debería ser: x = 3 => - (3 * 3) + 3 = 6. Excel simplemente no usa la convención algebraica estándar.
Henning
3
@henning Como se mencionó en otro comentario, si bien esta no es la convención "estándar", es una convención, aunque no la más común. Decir que "no es así como funcionan los signos" es, por lo tanto, bastante incorrecto. Más bien, no es así como funcionan los signos en el uso predominante.
Konrad Rudolph el
2
@KonradRudolph Bastante justo. Lo admito, solo soy consciente del uso predominante, que, creo, es lo que causó que OP se confunda.
Henning
66
No, absolutamente es un problema con Excel. Excel usa las reglas incorrectas para la precedencia del operador.
Dawood ibn Kareem
Tenga en cuenta la diferencia entre -x^2donde x es 3 y x^2donde x es -3. -x^2+xnunca llegará a 12: wolframalpha.com/input/?i=-x%5E2%2Bx
Thomas Weller
-2

-x ^ 2 + x donde x = 3 Este es un ejemplo de una ecuación cuadrática La ecuación se puede escribir así: -3 * -3 + 3: La multiplicación tiene prioridad sobre la suma, por lo que el resultado se escribirá de la siguiente manera: 9 + 3 : ¿Por qué = 9 porque un número negativo x un número negativo da un resultado positivo. Esto se puede verificar usando cualquier calculadora, regla de cálculo o cualquier programa de matemáticas de computadora Resultado final 9 + 3 = 12

Lisiado2
fuente
-3

Es solo una matemática realmente simple.

Regla 1. Incluso las multiplicaciones de números negativos arrojarían un resultado positivo:

menos * menos = más

menos * menos * menos = menos

menos * menos * menos * menos = más

Esto se debe al hecho de que las desventajas se cancelan entre sí en pares.

Regla 2. El poder de cada número identifica que este número se multiplicará por sí mismo varias veces.

(2) ^ n, donde n = 2 => 2 * 2 = 4

(-2) ^ n, donde n = 2 => (-2) * (- 2) = 4

Y si puedes ver la regla número 1 ...

(-3) ^ n, donde n = 3 => (-3) * (-3) * (-3) = 9 * (-3) = -27

Regla 3. La multiplicación y la división tienen mayor prioridad que la suma y la resta.

3 * 5 + 2 = 15 + 2 = 17

3 * (5 + 2) = 3 * 7 = 21

Y ahí está la respuesta a tu pregunta:

Combinando las 3 reglas de antes:

-x ^ 2 + x, donde x = 3 => -3 ^ 2 + 3 = 9 + 3 = 12

Mi consejo para ti es pasar un tiempo cada año y seguir actualizando las reglas fundamentales de las matemáticas.

De hecho, es una habilidad que puedes mantener y mantenerte en la cima de una gran parte del mundo, solo conociendo las matemáticas básicas.

Michael John
fuente
99
Cuando escribe "Combinando las 3 reglas anteriores: -x ^ 2 + x, donde x = 3 => -3 ^ 2 + 3 = 9 + 3 = 12" está asumiendo que -x ^ 2 = (-x) ^ 2. No has declarado esa suposición antes. Por lo tanto, su conclusión es injustificada. En realidad, si lee un libro de texto de matemáticas o Wikipedia, notará que no se sigue su suposición implícita. Los libros de texto de matemáticas, artículos científicos, etc., siguen la suposición de que -x ^ 2 = - (x ^ 2)
Rodolfo Oviedo
la regla 3 se aplica a operadores binarios como +-*/, pero no a operadores unarios como -o +. La precedencia del operador de energía es mayor que *y /pero los operadores unarios tienen aún mayor preferencia
phuclv
En respuesta a @RodolfoOviedo, no estás en lo correcto. Hay una gran diferencia entre - (x) ^ 2 y -x ^ 2. Y está bastante claro. No tiene sentido que lo diga. No falte al respeto, señor, pero siento que acaba de intentar regresar con una actitud pasiva agresiva. Lo siento si he dicho algo que te insulta. Solo estoy aquí para ayudar.
Michael John