Conjuntos de Julia

Los conjuntos de Julia, nombrados así en honor al matemático Gaston Julia, son una familia de fractales que se obtienen al estudiar los conjuntos invariantes bajo iteraciones de una función compleja. Al complemento de un conjunto de Julia se le llama conjunto de Fatou en honor al matemático Pierre Fatou.

En términos muy generales se puede decir que el conjunto de Julia de una función racional compleja son aquellos puntos cuyo comportamiento es caótico, es decir que pequeñas perturbaciones provocan cambios drásticos. Mientras que el conjunto de Fatou contiene aquellos puntos cuyo comportamiento es regular.

Una familia muy popular de conjuntos de Julia son los que surgen a partir de polinomios cuadráticos de la forma

\[f_x (z) = z^2 + c\]

donde \(c\) es una constante compleja.

Si esto ya lo sabes y veniste a ver las imagenes coloca el cursor sobre un punto en el conjunto de Mandelbrot para ver el fractal correspondiente en la segunda imagen. Continúa leyendo si quieres entender un poco más sobre el tema.

Iterando una cuadrática

¿Cómo se obtiene un conjunto de Julia?. Bueno, la parte interesante sucede cerca del origen a una distancia menor que 2. Tomemos un punto en el plano complejo, por ejemplo \(c = 0\). Entonces tenemos que

\[f_0 = z^2 + 0 = z^2\]

Ahora pensemos en el conjunto de puntos en el plano complejo que permanecen acotados al aplicar repetidamente la función. Por ejemplo si tomamos -1.

\[\begin{split}f_0(-1) = (-1)^2 = 1 \\ f_0(1) = (1)^2 = 1 \\ f_0(1) = (1)^2 = 1 \\ \vdots\end{split}\]

Geométricamente cuando se eleva al cuadrado un número complejo cuya distancia al origen es menor o igual que uno dicha distancia nunca crece. Para este caso sencillo es fácil ver que el conjunto de Julia es un círculo. (coloca el cursor al centro del primer recuadro y el fractal correspondiente en el segundo será un círculo).

Así que para cada punto en el plano complejo en principio es posible calcular el conjunto de Julia correspondiente. Si elegimos un valor diferente para la constante c dicho conjunto cambia drásticamente y surgen patrones mucho más interesantes. Si además coloreamos los puntos no acotados dependiendo de qué tan rápido crecen con cada iteración tenemos fractales como los que se ven en la segunda imagen.

El conjunto de Mandelbrot

Pero ¿por qué usar el fractal de la primera imagen como guía para generar los fractales de Julia?.

Clasifiquemos los puntos del plano complejo en dos grupos:

  • Coloreamos en negro aquellos cuyo conjunto de Julia correspondiente es conexo.
  • Usamos otro color para aquellos cuyo conjunto de Julia es disconexo, es decir consta de varias partes dispersas en el plano.

Si hacemos esto obtenemos lo que se conoce como Conjunto de Mandelbrot, que se muestra en la primera imagen.

La razón por la cuál la imagen muestra más de dos colores es porque para generarlo se usó una definición alternativa que también involucra iteraciones de una función. El resultado es más bonito

Conjuntos de Julia especiales

Existen varios conjuntos con nombres especiales:

  • El Conejo de Douady, nombrado así en honor al matemático francés Adrien Douady. Este corresponde a los valores de c cercanos al punto (-0.12, -0.75i).
  • La Dendrita, nombrado así por su similitud con las terminaciones ramificadas de las neuronas. Corresponde a los valores de c cercanos al punto (0, i).
  • El fractal de San Marcos por su similitud con la fachada de la Basílica de San Marcos en Venecia. El valor de c para este fractal es (-0.75, 0i);
  • Los Discos de Siegel cuyo nombre hace honor al matemático alemán Carl Ludwig Siegel. La constante para obtener este fractal es (-0.39, -0.58i).

Referencias adicionales

Para más información puedes consultar lo siguiente:

  • Mira éste video narrado por el doctor Adolfo Guillot de la UNAM.
  • Un video de numberphile (en inglés) en el que la doctora Holly Krieger del MIT explica el mismo tema.
  • Un tutorial en el canal train of code en el que Daniel Shiffman explica cómo crear los conjuntos de Julia en Processing y que sirvió de inspiración para el código usado en este post.
  • Para generar los fractales usé la librería p5.js, corriendo en dos canvas simultáneamente. El código está en la carpeta juliaset en GitHub.