domingo, 24 de abril de 2011

Un viaje por las matemáticas I

 Pues vamos a seguir un poco con el librito de "Matemáticas: 101 preguntas" (Albrecht Beutelspacher, Alianza Editorial, 2011. Hay cosas que te sorprenden. Por ejemplo, ¿alguien ha oído hablar de la conjetura de Collatz? Yo, al menos, no. Es muy sencillo: coges un número natural cualquiera, si es par lo divides por 2 y si es impar lo multiplicas por 3 y le añades 1. Y repites con el número que resulte las mismas operaciones. Va apareciendo una sucesión de números más o menos larga, que indefectiblemente termina en 1. Se le llama también el problema (3n+1), debido a una de las dos operaciones. Por ejemplo, cogemos el número 7, como es impar, 3*7+1=22, ahora como es par, 22/2=11, como es impar, 11*3+1=34, y seguimos: 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1. No falla jamás. La conjetura consiste en que ese extraño comportamiento sucede con todos los números. Hasta ahora se ha probado hasta el orden de un trillón (supongo que con máquinas, claro) y no se ha encontrado ninguna excepción, pero nadie sabe por qué; es decir, nadie ha demostrado que tenga que ser así. Es uno de esos desafíos matemáticos, que esperan ser demostrados algún día. Hay números trampa, que llamo yo; en cuanto tocas números como 40, 60, 64, o múltiplos puros de 2 o de 2 y 5, "tus días están contados", ya no te libras de ser arrastrado a la fosa del 1, por una sucesión, que termina siempre del mismo modo, claro: 10, 5, 16, 8, 4, 2, 1. Son como dos fuerzas antagónicas; al multiplicar por 3 y añadir 1 vas "para arriba", te libras por "unos días" más de ser arrastrado hacia abajo; es la división por 2 la que naturalmente te tira hacia el "sumidero". La serie de números a veces es muy larga y te puedes agotar con la calculadora trabajando como un chino, pero al final sucumbes lo mismo. Se puede hacer un programita muy sencillo en Python, como este que pongo aquí, para facilitar la tarea.

#!/usr/bin/python
n=input('Dame un numero: ')
while n!=1:
if n%2==0:
n=n/2
print n,
else:
n=3*n+1
print n,

Bueno, el programa es tan simple que se puede hacer en cualquier lenguaje, pero creo que en Python resulta más fácil todavía. Trabajando en Linux el programa se copia en un editor, se guarda como prueba.py, por ejemplo, se va a la consola y se pone chmod +x prueba.py, y luego se ejecuta así: ./prueba.py. Ojo con las indentaciones en Python; sustituyen a las llaves de C o al begin/end de Pascal y no las perdona.
 Este sería un ejemplo de un número cualquiera. Perdón que en vez de prueba.py salió pruba.py.






2 comentarios:

  1. Los juegos están buenos, para hacerlos en familia, entre amigos, ya me los he agendado.
    Cariñossssssssssssssssss

    ResponderEliminar
  2. Feliz Pascua de Resurrección, Norma. Esto que propongo aquí de todos modos es más que un juego, es un problema. :-) Pero también sirve para amenizar las reuniones. Saludos.

    ResponderEliminar