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?
microsoft-excel
worksheet-function
notation
Rodolfo Oviedo
fuente
fuente
Respuestas:
Respuesta corta
Para resolver este problema, simplemente agregue un 0 antes del signo igual
o agregue un par de paréntesis para forzar el orden estándar de operaciones
o reemplace el signo menos por su interpretación común de la multiplicación por -1
En este caso particular, donde tiene el término extra + A1, la mejor solución es la propuesta por @ lioness99a:
Explicación detallada
Bajo las convenciones de Excel,
es igual a (-3) ^ 2 = 9, mientras que
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.htmlSoluciones generales
Si quieres calcular
agregue un 0 antes del signo igual
o agregue un par de paréntesis para forzar el orden estándar de operaciones
o reemplace el signo menos por su interpretación común de la multiplicación por -1
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),
la mejor solución es colocar el ExtraTerm primero,
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?
fuente
Un poco más sucinto que la Respuesta de Rodolfo, puedes usar:
(Editar: totalmente no vi que era una auto pregunta / respuesta).
fuente
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 como0 - 3^2 = -9
Y si tiene dos operadores, sucederá lo mismo.
=0--3^2
se procesa como0 - (-3)^2 = -9
y=0+-3^2
se procesa como0 + (-3)^2 = 9
fuente
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.
fuente
x - x^2
. Esto asegura que - se interprete como el operador de sustracción binaria.La expresión
= - A1^2 + A1
es 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:Que puedes anular usando paréntesis.
fuente
-
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 ** 2
siempre se evalúa-9
. ¿Por qué? Porque esa es la respuesta correcta.Puedes tenerlo de cualquier manera:
devolverá un 12 , pero:
devolverá un -6
Si siente que regresar 12 viola el sentido común; Tenga en cuenta que Google Sheets hace lo mismo.
fuente
=A1-A1^2
también devuelve -6Alternativamente, podrías hacer
= A1 - A1^2
porque
-y + x = x-y
fuente
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.
fuente
La expresión
- A1^2
contiene 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:o:
La primera de ellas dice que primero haga el exponenciación con operandos
A1
y2
, 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 y2
.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)
.fuente
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.
Necesitas usar paréntesis y múltiples por
-1
fuente
-x^2
donde x es 3 yx^2
donde x es -3.-x^2+x
nunca llegará a 12: wolframalpha.com/input/?i=-x%5E2%2Bx-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
fuente
Es solo una matemática realmente simple.
Regla 1. Incluso las multiplicaciones de números negativos arrojarían un resultado positivo:
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.
Y si puedes ver la regla número 1 ...
Regla 3. La multiplicación y la división tienen mayor prioridad que la suma y la resta.
Y ahí está la respuesta a tu pregunta:
Combinando las 3 reglas de antes:
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.
fuente
+-*/
, 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