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 $z \rightarrow z ^2 + 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 $z_0$ en el plano complejo. Ahora usaremos la ecuación cuadrática de recurrencia $$z_{n+1}=z_{n}^2+z_0$$ para obtener una sucesión de números complejos $z_n$ with $n=0, 1, 2, \ldots.$ Decimos que los puntos $z_n$ forman la órbita de $z_0,$ y el conjunto de Mandelbrot, denotado por $M,$ se define como sigue:

Si la órbita $z_n$ no tiene a infinito, decimos que $z_0$ pertenece al conjunto $M.$ Si la órbita $z_n$ tiende a infinito, decimos que el punto $z_0$ no pertenece a $M$

Consideremos, por ejemplo, $z_0=1.$ Entonces tenemos \[ \begin{array}{rcl} %\hline %\text{ } & z_{n+1}=z_{n}^2+z_0 \\ %\hline z_0 &=& 1 \\ %\hline z_1 &=& 1^2 + 1 = 2 \\ %\hline z_2 &=& 2^2 + 1 = 5\\ %\hline z_3 &=& 5^2 + 1 = 26 \\ %\hline z_4 &=& 26^2 + 1 = 677 \\ %\hline &\vdots& \end{array} \] Como puedes observar, $z_n$ sólo se hace cada vez más grande. De esta manera $z_0=1$ no pertenece en el conjunto de Mandelbrot. Pero si consideramos valores diferentes para $z_0$ esto no siempre es el caso. Consideremos ahora el valor $z_0=i.$ En este caso obtenemos: \[ \begin{array}{rcl} %\hline % \text{ } &=& z_{n+1}=z_{n}^2+z_0 \\ %\hline z_0 &=& i \\ %\hline z_1 &=& i^2 + i = -1 + i \\ %\hline z_2 &=& (-1+i)^2 + i = -2i+i = -i\\ %\hline z_3 &=& (-i)^2 + i = -1+i \\ %\hline z_4 &=& (-1+i)^2 + i = -i \\ %\hline &\vdots& \end{array} \] 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 $z_0=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 $ z_0 $ en el plano complejo. Dado que la computadora no puede manejar el infinito, será suficiente calcular 500 iteraciones y use el número $ 10 ^ 8 $ (en lugar de infinito) para generar el conjunto de Mandelbrot:

Si la órbita $z_n$ está afuera del disco de radio $10^8,$ entonces $z_0$ no pertenece al Conjunto de Mandelbrot y su color será WHITE. Si la órbita $z_n$ está dentro de este disco, entonces $z_0$ 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 $z_0$ (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)

  

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