El último teorema de Fermat: ¿Cómo encontró el equipo de redacción de ‘Los Simpson’ [matemáticas] 3987 ^ {12} + 4365 ^ {12} \ aproximadamente 4472 ^ {12} [/ matemáticas]? ¿Cómo logra engañar a una calculadora?

Este es un extracto de mi libro Redescubriendo las Matemáticas:


Eche un vistazo a la “ecuación” a la izquierda sobre la cabeza de Homero. Es el que Homero parece estar reflexionando mientras piensa “Mmmmmmmmmmmm, donas”.

[matemáticas] 1782 ^ {12} + 1841 ^ {12} = 1922 ^ {12} [/ matemáticas]

¿Es verdadera la ecuación? No busques tu calculadora. Esa ecuación es falsa, pero alcanzar tu calculadora no te ayudará a probarlo. Los valores izquierdo y derecho de la ecuación no son iguales. Son respectivamente:

2541210258614589176288669958142428526657, y

2541210259314801410819278649643651567616.

Un buen programa de computadora me dio estos resultados. Una calculadora de ejecución del molino, que almacena solo los nueve dígitos más a la izquierda de un número, redondea el noveno dígito hacia arriba de 5 a 6 e informa que ambos números equivalen a 2.54121026 × 10

Es decir, desde el punto de vista de la calculadora, ambos números son iguales:

2541210260000000000000000000000000000000.

La calculadora es la herramienta incorrecta aquí. Una manera más inteligente de ver que la ecuación de Homero es falsa es notar que el lado derecho es par mientras que el lado izquierdo es impar. Y, un número impar no puede ser igual a un número par. El lado derecho, [matemáticas] 1922 ^ (12), [/ matemáticas] es un número par porque el producto de los números pares es par. Y el lado izquierdo, [matemática] 1782 ^ (12) + 1841 ^ (12) [/ matemática], es impar porque es la suma de un número par y un número impar (el producto de los números impares es impar). Hay otras formas de deducir la falsedad de la ecuación de Homero. Quizás encontraste el tuyo.

¿Cómo crees que los escritores encontraron una ecuación que estaba tan cerca de tener razón? De hecho, los dos números de 40 dígitos difieren solo después del noveno dígito.

Esos escritores deben tener algo bajo la manga. Pues lo hacen. Parece que se toparon con un artículo de Noam Elkies, un teórico de números de Harvard, que tiene una teoría de estos casi fallidos de Fermat. [1]

Hay muchas formas diferentes de definir una casi falla, pero para que sea simple, digamos que dos números son casi fallidos cuando el primer 20% o más de sus dígitos están de acuerdo. Por ejemplo, los dos números de 40 dígitos

2541210258614589176288669958142428526657, y

2541210259314801410819278649643651567616

comience con los mismos nueve dígitos, es decir, 254121025. Dado que 9/40 es mayor que 20%, estos dos números se consideran casi inciertos.

Aquí hay otro ejemplo de una falla cercana de Fermat que proviene del trabajo de Elkies:

[matemáticas] 13 ^ 5 + 16 ^ 5 = 17 ^ 5 + 12. [/ matemáticas]

Es decir,

371293 + 1048576 = 1419869 = 1419857 + 12

Los números, 1419869 y 1419857, coinciden en los primeros 5 de 7 dígitos, muy por encima del 20% necesario para calificar como casi omisión.

¿Cómo genera Elkies estos casi errores? ¿Cómo los descubrió? Desafortunadamente, leer y apreciar el trabajo de Elkies requiere unos años de cursos de matemática de posgrado. Sin embargo, un artículo de revista profesional de matemáticas con aplicaciones para los dibujos animados del domingo por la noche es una buena manera de reunir a profesionales y legos.


[1] Noam Elkies, “Puntos racionales cerca de curvas y pequeños no nulos [matemática] | x ^ 3-y ^ 2 | [/ matemáticas] a través de la reducción de celosía ”, Lecture Notes in Computer Science; Volumen 1838, Actas del 4º Simposio internacional sobre teoría de números algorítmicos, Springer-Verlag, Londres, 2000, pp. 33-64.

Comencemos con la segunda pregunta: ¿cómo puede una ecuación como esta engañar a la calculadora?

La respuesta es simple: su calculadora solo usa un número fijo de bits para almacenar un número. Esto significa que los resultados calculados no son precisos. En cambio, se redondean a la precisión disponible. Por lo tanto, los resultados que obtienes son aproximados.

A veces, todos sus números se pueden representar exactamente, y luego la calculadora produce un resultado exacto. Por ejemplo, si ingresa 10 , luego *3 y luego /3 , su calculadora saldrá felizmente con 10 nuevamente. A veces esto no es cierto. Por ejemplo, si ingresa 10 , luego /3 y luego *3 , es probable que su calculadora 9.999999999 lugar de 10 , porque el resultado intermedio de 10/3 se redondeó, lo que causó un pequeño error de precisión. (Algunas calculadoras son lo suficientemente inteligentes como para resolver este ejemplo sin error, pero también exhibirán el mismo comportamiento una vez que el cálculo sea demasiado complicado para ellos).

Además, la pantalla de su calculadora solo tiene un tamaño finito, lo que significa que la calculadora solo le mostrará, por ejemplo, los 10 dígitos más significativos del resultado. Por ejemplo, si calcula [matemática] 3987 ^ {12} [/ matemática], su calculadora le dirá que el resultado es algo así como 1.613447461*10^43 . Este no es el resultado exacto. El resultado exacto es 16134474609751291283496491970515151715346481 , pero eso no cabe en su pantalla, por lo que la calculadora le muestra la mejor aproximación que puede mostrar.

En realidad, cuando calculas [math] 3987 ^ {12} [/ math] en una calculadora común, las dos cosas anteriores entrarán en juego. La calculadora primero calcularía un valor aproximado del resultado, hasta su precisión interna. Luego, produciría una versión legible para el ser humano (e incluso más completa) del resultado en su pantalla.


Ahora volvamos a la primera pregunta: ¿Cómo encontrar “soluciones” del último teorema de Fermat que puedan engañar a la calculadora?

Si entendió los párrafos anteriores, ya debería saber una manera muy simple. Aquí está:

[matemáticas] 3987 ^ {12} + 1 ^ {12} = 3987 ^ {12} [/ matemáticas]

¿Esperar lo? Bueno, obviamente no es cierto: el lado izquierdo es 1 mayor que el lado derecho. Pero, ¿qué significa eso para nuestra calculadora? Aquí están los dos números evaluados:

izquierda :: 16134474609751291283496491970515151715346482
derecha: 16134474609751291283496491970515151715346481

El error de precisión es demasiado pequeño. En ambos casos, la pantalla de nuestra calculadora mostrará exactamente lo mismo. La diferencia es tan pequeña que se pierde por completo cuando el resultado se redondea para su presentación.

Incluso podemos ir mucho más lejos con esto y afirmar que

[matemáticas] 3987 ^ {12} + 640 ^ {12} = 3987 ^ {12} [/ matemáticas]

En nuestra calculadora, este lado izquierdo aún mostraría lo mismo que el lado derecho: 1.613447461*10^43 . La diferencia sigue siendo demasiado pequeña para influir en el valor que se muestra al usuario.

Oh, está bien, quieres un ejemplo que realmente no parezca trivial, ¿verdad? Bueno, todavía es fácil buscar tales ejemplos, todo lo que necesita es un programa informático simple que pruebe varias posibilidades e informe cuál es el mejor encontrado. Aquí hay un ejemplo de cómo puede ser eso.

Comenzaremos escribiendo una función que tomará un número x , encontrará la enésima potencia más cercana de un entero positivo e informará el error relativo. Esto es fácil: simplemente calculamos [matemáticas] y = \ lfloor \ sqrt [n] {x} \ rfloor [/ math]. Entonces, sabemos que [matemática] y ^ n \ leq x <(y + 1) ^ n [/ matemática], por lo que una de estas dos enésimas potencias debe ser la más cercana a x .

def get_relative_error (x, n):
y = int (pow (x, 1. / n))
retorno min (x / pow (y, n), pow (y + 1, n) / x) – 1

Ahora, teniendo esta función, solo intentamos algunos pares [math] (a, b) [/ math]. Para cada par calculamos qué tan cerca [matemática] x = a ^ n + b ^ n [/ matemática] se asemeja a una potencia [matemática] n [/ matemática] de un entero, e informaremos las mejores coincidencias:

n = 7
best = float (‘+ inf’)
para un rango (1000,10 ** 6):
para b en el rango (a // 2, a + 1):
err = get_relative_error (a ** n + b ** n, n)
si err mejor = err
print (‘{} {} {: .10f}’. formato (a, b, err))

Como puede ver, en el programa anterior estoy buscando una solución con séptima potencia. Aquí está una de las soluciones que el programa encontró en unos segundos:

[matemáticas] 3964 ^ 7 + 3029 ^ 7 = 4045 ^ 7 [/ matemáticas]

Nuevamente, esta no es una verdadera igualdad, pero está lo suficientemente cerca como para engañar a una calculadora común. Aquí están los valores exactos de ambos lados:

izquierda :: 17718611326408737105861213
derecha: 17718611327634329106953125

Los Simpson y los juegos de palabras de matemáticas … ¡Esa es una gran historia! Realmente recomiendo leer el gran libro de Simon Singh Los Simpson y sus secretos matemáticos.

Hay dos formas de resolver el problema a partir de su pregunta: escriba un programa corto y deje que su computadora busque todas las combinaciones posibles (eso es bastante fácil para números pequeños y suficiente para encontrar la solución de Homero), o haga algunos cálculos matemáticos reales (curvas elípticas) y ahorrar mucho tiempo

Noam Elkies de Harvard ha hecho exactamente eso, y se le ocurrieron todas las “fallas cercanas” de Fermat con [matemáticas] 0

El mejor que encontró fue [matemática] 3472073 ^ {7} + 4627011 ^ {7} [/ matemática], que es igual a [matemática] 4710868 ^ {7} [/ matemática] hasta 21 cifras significativas (el ejemplo de Homero es solo correcto a 10 cifras significativas):

Lado izquierdo: 514880622379082621171 64432659695107942546091268
Lado derecho: 514880622379082621171 45710842129274774286712832

El elenco de Los Simpson está lleno de matemáticos, y este es en realidad un conocido troll matemático.

Entonces, cómo esto engaña a una calculadora es que una calculadora expresa números de ese tamaño como x * 10 ^ n

De esta manera, x se convierte en un no muy redondeado. , y este redondeo engaña a la calculadora.

Para más, mira