⚠️ ¡Precaución! Si puedes ver este mensaje es porque tu pantalla es muy pequeña. Por lo tanto, algunos applets no se mostrarán correctamente. Puedes rotrar tu dispositivo horizontalmente. O haz más grande la ventana de tu nagevador.



El conjunto de Mandelbrot


Esencialmente, el conjunto de Mandelbrot se genera iterando una función sencilla en los puntos del plano complejo. Los puntos que producen un ciclo (el mismo valor una y otra vez) caen en el conjunto, mientras que los puntos que divergen (dan valores cada vez mayores) quedan fuera de este. Cuando se traza en una pantalla de la computadora con muchos colores (diferentes colores para diferentes tasas de divergencia), los puntos fuera del conjunto pueden producir imágenes de gran belleza. La frontera del conjunto de Mandelbrot es una curva fractal de complejidad infinita, cualquier porción esta frontera puede ser ampliada para revelar detalles cada vez más destacados, incluidas réplicas en miniatura del conjunto completo.

El conjunto de Mandelbrot es sin duda el fractal más popular, y quizás el objeto más popular de la matemáticas de todos. Desde que Benoît B. Mandelbrot (1924-2010) lo descubrió en 1979-1980, mientras investigaba el mapeo zz2+c, ha sido duplicado por decenas de miles de personas en todo el mundo.


Construcción del Conjunto de Mandelbrot

El conjunto de Mandelbrot se construye de la siguiente manera. Tomemos un punto inicial z0 en el plano complejo. Ahora usaremos la ecuación cuadrática de recurrencia zn+1=zn2+z0 para obtener una sucesión de números complejos zn with n=0,1,2,. Decimos que los puntos zn forman la órbita de z0, y el conjunto de Mandelbrot, denotado por M, se define como sigue:

Si la órbita zn no tiene a infinito, decimos que z0 pertenece al conjunto M. Si la órbita zn tiende a infinito, decimos que el punto z0 no pertenece a M

Consideremos, por ejemplo, z0=1. Entonces tenemos z0=1z1=12+1=2z2=22+1=5z3=52+1=26z4=262+1=677 Como puedes observar, zn sólo se hace cada vez más grande. De esta manera z0=1 no pertenece en el conjunto de Mandelbrot. Pero si consideramos valores diferentes para z0 esto no siempre es el caso. Consideremos ahora el valor z0=i. En este caso obtenemos: z0=iz1=i2+i=1+iz2=(1+i)2+i=2i+i=iz3=(i)2+i=1+iz4=(1+i)2+i=i Es claro que en este caso al calcular más iteraciones los valores 1+i and i se repetirán. Todos estos son números complejos se encuentran a una distancia menor de 3 del origen. Así que se encuentran en un subconjunto acotado del plano; no tienden a infinito. Así que el número z0=i pertenece al conjunto de Mandelbrot.

Es muy divertido calcular elementos del conjunto de Mandelbrot y trazarlos. El conjunto resultante es infinitamente complicado. Y para ello podemos utilizar el poder de la computadora. En el applet de abajo está definido el punto z0 en el plano complejo. Dado que la computadora no puede manejar el infinito, será suficiente calcular 500 iteraciones y use el número 108 (en lugar de infinito) para generar el conjunto de Mandelbrot:

Si la órbita zn está afuera del disco de radio 108, entonces z0 no pertenece al Conjunto de Mandelbrot y su color será WHITE. Si la órbita zn está dentro de este disco, entonces z0 pertenece al Conjunto de Mandelbrot y su color será BLACK.

Ahora explora las órbitas de iteración en el applet. Observa su comportamiento mientras mueves el punto. Activa la Traza para esbozar el conjunto de Mandelbrot o mueve el deslizador.


El Conjunto de Mandelbrot con múltiples colores

En el applet anterior el conjunto de Mandelbrot se dibuja utilizando un solo punto. Sin embargo, es posible trazarlo considerando una región particular de píxeles en la pantalla. El algoritmo más simple para generar una representación del conjunto de Mandelbrot se conoce como algoritmo de tiempo de escape . Un cálculo se realiza repetidamente para cada punto x, y en la región de la pantalla y con base en el comportamiento de ese cálculo, se elige un color para ese píxel.

En el siguiente applet, se usa el esquema de color HSV y depende de la distancia del punto z0 (en el exterior e interior) al punto más cercano perteneciente a la frontera del conjunto de Mandelbrot. En otras palabras, cuando el número máximo de iteraciones es suficientemente grande, podemos obtener una imagen del conjunto de Mandelbrot con las siguientes propiedades:

  1. Cada pixel que contiene un punto del conjunto de Mandelbrot se colorea en negro.
  2. Cada pixel que no contiene un punto del conjunto de Mandelbrot se colorea usando valores del matiz (o tono) dependiendo de que tan cerca ese punto está del conjunto de Mandelbrot.

Ahora explora el conjunto de Mandelbrot. Puedes acercar o alejar la vista gráfica en diferentes regiones. Cambia el número de iteraciones y observa qué sucede en el gráfico. También puedes activar las órbitas para estudiar su comportamiento.

Teclado:
+ (Zoom In)
- (Zoom Out)
R (Reset vista)
O (Órbita)
I (Info & Frame)

  

😥 Lo siento, pero este applet no funciona en pantallas pequeñas 📱. Rota tu dispositivo de forma horizontal. O cambia el tamaño de tu ventana de tal manera que sea más larga que alta.


Otras lecturas sugeridas

Aunque el conjunto de Mandelbrot se define por una regla muy simple, posee interesantes y complejas propiedades que se pueden ver gráficamente si prestamos mucha atención a las imágenes generadas por computadora. Por ejemplo, una pregunta geométrica que podemos hacer: ¿Es el conjunto de Mandelbrot conexo? Es decir, está compuesto de solo una pieza? Esto resulta ser cierto, y fue probado por Adrien Douady y John H. Hubbard en los 80.

El conjunto de Mandelbrot ha sido ampliamente estudiado y no pretendo cubrir todos sus fascinantes propiedades aquí. Sin embargo, si deseas obtener más detalles, te recomiendo que consultes las obras de B. B. Mandelbrot:

También recomiendo ampliamente estos videos de Numberphile:

Los applets en esta sección fueron hechos con GeoGebra y p5.js. El código fuente está disponible en los siguientes enlaces:

Si deseas aprender a programarlo tú mismo, te recomiendo el siguiente tutorial:

Finalmente, si ya tienes conocimiento básico en programación, entonces podrás traducir el siguiente seudo código en cualquier lenguaje de programación como C++, Python, JavaScript, por mencionar algunos. Para cada pixel en la pantalla realiza la siguiente operación:

{
  x0 = x //co-ordinate of pixel
  y0 = y //co-ordinate of pixel
  
  x = 0
  y = 0
  
  iteration = 0
  max_iteration = 1000
  
  while ( x*x + y*y <= (2*2) AND iteration < max_iteration )
  {
    xtemp = x*x - y*y + x0
    y = 2*x*y + y0
    
    x = xtemp
    
    iteration = iteration + 1
  }
  
  if ( iteration == max_iteration )
  then
    color = black
  plot(x0, y0, color)
  else
    color = iteration
  
  plot(x0, y0, color)
}

El Conjunto de Julia