Importancia de la conjetura de Collatz

Introducción:
La conjetura de Collatz es un problema elusivo en matemáticas con respecto a la unidad de los números naturales cuando se ejecutan a través de una función específica basada en ser impar o par, comenzando específicamente que, independientemente del número inicial, la serie finalmente alcanzará el número 1. La conjetura de Collatz ha sido un problema internacionalmente popular en los círculos matemáticos desde la primera parte del siglo XX, cuando al matemático alemán Lothar Collatz se le atribuye el origen del problema.

Descripción de “la conjetura” :
El enunciado de la conjetura establece –
Toma cualquier número natural n. Si n es par, se divide por 2 para obtener n/2, si n es impar se multiplica por 3 y se suma 1 para obtener 3n+1. Repite el proceso indefinidamente. La conjetura es que no importa con qué número comiences, eventualmente siempre llegarás a 1. 

Entonces, para un número natural n, podemos definir la siguiente función:

T(n) = n/2 n≡0(mod2)
       = (3*n) + 1 n≡1(mod2)

Algo de estudio:
el progreso de la función en iteraciones sucesivas mientras n>1 se puede estudiar y visualizar fácilmente con la ayuda de un gráfico. Para esto, tenemos este código python correspondiente para simular algunas ejecuciones y crear una trama.

Python3

from matplotlib import pyplot as plt
n = int(input())
x = []
x.append(n)
while(n > 1):
    if(n % 2 == 0):
        n = n//2
        x.append(n)
        print(n)
    else:
        n = (3*n) + 1
        x.append(n)
        print(n)
plt.plot(x, '-ok')
plt.show()

El gráfico anterior es para el valor inicial de 100. Puede probar el código de simulación con algunos valores iniciales propios. Como puede ver, el gráfico anterior es bastante caótico. No hay un patrón distinto aparte de que finalmente converge a 1, ya que los valores pueden volverse bastante grandes muy rápidamente. 100 toma 25 pasos para converger, pero otros pueden tomar incluso más o menos. 

Probemos algunos gráficos más, graficando en una cuadrícula semilogarítmica donde el eje y es logarítmico, el eje x permanece lineal. El código Python para el método es:

Python3

from matplotlib import pyplot as plt
import numpy as np
    
y = []
n = 100
y.append(n)
while(n > 1):
  if (n % 2 == 0):
    n = n//2
  else:
    n = (3*n) + 1
  y.append(n)
x = range(0,len(y))
plt.plot(x,np.log(y))
plt.show()

El gráfico para el código anterior es:

Ahora podemos invertir el eje y en otra metodología gráfica, para estudiar el crecimiento desde 1 y crear una gráfica de la siguiente manera:

Ahora, para encontrar algunos «patrones» sobre cuántos pasos se necesitan para que nuestro número de entrada converja a 1, cambiemos el eje x del método gráfico anterior a escala logarítmica. El código de Python para dicho es el siguiente:

Python3

from matplotlib import pyplot as plt
import numpy as np
    
y = []
n = 100
y.append(n)
while(n > 1):
  if (n % 2 == 0):
    n = n//2
  else:
    n = (3*n) + 1
  y.append(n)
x = range(0,len(y))
plt.plot(np.log(x),np.log(y[::-1]))
plt.show()

El gráfico para el código anterior es como se muestra a continuación, donde el eje y es el valor de collatz en log y el eje x es el orden de paso inverso.

Ahora, con el método de gráficos anterior, podemos intentar trazar un montón de series diferentes para estudiar y comparar el crecimiento de cada serie.

Publicación traducida automáticamente

Artículo escrito por fallenvalkyrie y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *