¿Por qué las computadoras apestan en matemáticas?
NoticiasLas computadoras pueden tener dificultades para exhibir un comportamiento inteligente, pero realizar cálculos aritméticos a ciegas es sin duda su fuerte. O es eso?
El fracaso de la calculadora en línea de Google y la aparente incapacidad de Excel para dar respuestas correctas a cálculos simples son problemas bien conocidos entre los programadores, pero estos no son realmente errores en el sentido normal de la palabra. En cambio, son solo una consecuencia del hecho de que las computadoras apestan en matemáticas.
Las computadoras realizan cálculos de manera bastante diferente a los métodos que los humanos usan para hacer aritmética, y eso significa que habitualmente tienen la respuesta incorrecta. Aquí investigamos algunas de las impactantes consecuencias de esta revelación antes de ahondar en la razón por la que las computadoras apestan en matemáticas.
- 10 teorías de conspiración informática examinadas
Cerrar no es lo suficientemente cerca
Para que alguien aún esté convencido de que las computadoras no pueden obtener una aritmética simple, comencemos con algunos ejemplos que puede probar usted mismo..
En primer lugar, la calculadora de Google. Si nunca lo ha probado antes, para saber cómo funciona, vaya a www.google.co.uk, escriba 5 * 9 + (sqrt 9) ^ 3 en el cuadro de búsqueda y haga clic en "Buscar" . Encontrará que regresa con la respuesta correcta: '5 * 9 + (sqrt 9) ^ 3 = 72'.
Ahora probemos otro cálculo. Escriba 599,999,999,999,999 - 599,999,999,999,998. Claramente, esto debería dar una respuesta de 1. Increíblemente, sin embargo, Google responde con esto: '599,999,999,999,999 - 599,999,999,999,998 = 0'. Solo un ejemplo raro y desafortunado, tal vez?
OK entonces, vamos a intentar otro cálculo simple. Escriba = 850 * 77.1 en la celda A1 de un libro de Excel 2007 (no funciona, o debe ser así, en versiones anteriores de Excel). Un poco de aritmética mental sugiere que la respuesta debería estar en la región de 60,000; De hecho, la respuesta correcta es 65.535..
Excel tiene otras ideas. Le dirá que el resultado de esta multiplicación es 100,000, que es superado por un enorme 34,465. Y para demostrar que esto no es un destello en la bandeja, ¿qué tal si usa una selección de calculadoras en línea para calcular 1.0 - 0.9 - 0.1?
Probablemente encontrará que al menos la mitad de ellos tendrá una respuesta de -2.77555756 E-17 - notación científica para -0.0000000000000000277555756. (Si todos los que intentas dan la respuesta correcta, consulta www.calculator.net).
MALAS MATERIAS: Dado que 1.0 - 0.9 - 0.1 es igual a 0, ¿por qué hay tantas calculadoras en línea convencidas de que este valor es la respuesta??
Bien, esta respuesta podría no estar muy alejada de la respuesta correcta de 0, pero ¿por qué la calculadora no puede encontrar la respuesta correcta? Una respuesta que es claramente obvia para cualquier persona que conozca aritmética simple.?
Cómo hacen las computadoras las matemáticas
Aunque las computadoras pueden manejar números enteros (números enteros), para la aritmética de propósito general almacenan números en formato de punto flotante porque es mucho más eficiente en el uso de la memoria..
Tomemos como ejemplo la representación de punto flotante de doble precisión. Utiliza 64 bits para almacenar cada número y permite que se almacenen valores de aproximadamente -10308 a 10308 (menos y más 1 seguido de 308 ceros, respectivamente). Además, se pueden almacenar valores fraccionarios tan pequeños como más o menos 10-308 (que es un punto decimal seguido de 307 ceros y luego un 1).
A modo de contraste, si los mismos 64 bits se usaran para almacenar números enteros, el rango sería −9.223.372.036.854.775.808 a +9.223.372.036.854.775.807, y los valores fraccionarios no pudieron representarse.
El secreto de esta eficacia aparentemente sorprendente es la aproximación. De esos 64 bits, uno representa el signo (por lo tanto, si el valor es positivo o negativo), 52 bits representan la mantisa (es decir, los números reales) y los 11 bits restantes representan el exponente (cuántos ceros hay o dónde está el punto decimal). es).
Entonces, aunque se puede almacenar un rango mucho mayor de números utilizando la notación de punto flotante, la precisión es en realidad menor que la que se puede lograr en formato entero, ya que solo están disponibles 52 bits. De hecho, 52 bits de información binaria representan un número decimal de 16 bits, por lo que cualquier valor que difiera solo en su 17º punto decimal será visto como idéntico.
La situación con Google pensando que 599,999,999,999,999 - 599,999,999,999,998 es igual a 0 es similar, aunque es evidente que la calculadora de Google en realidad usa menos de los 52 bits normales para la mantisa. Que algunas calculadoras den un resultado distinto de cero al cálculo 1.0 - 0.9 - 0.1 puede parecer diferente, ya que parece que no estamos cerca del límite de la aritmética de punto flotante de 64 bits.
Pero eso es olvidar un hecho importante: que las computadoras funcionan en binario. Y aunque 0.1 podría tener solo un dígito significativo en decimal, en la notación binaria la mantisa es una secuencia que se repite. Esto significa que 0.1 nunca puede representarse con precisión en binario, sin importar cuántos bits utilice.