Después del post del triángulo de Sierpinski, me estuve preguntando cómo se calculaban computacionalmente otro tipo de fractales como el famoso de Mandelbrot, y resulta ser bastante simple:
Fractal de Mandelbrot
Toma un punto en el plano complejo, \(z = a + bi\), y mételo en la fórmula \(f_c = z² + c \),coges lo que te de la fórmula y lo vuelves a meter en ella, lo vuelves a meter... así indefinidamente.
Ahora bien si el punto que te va dando la función converge a un valor del plano cualquiera, lo pintas de negro, y si no converge (si diverge a infinito) le das un color distinto, de esta forma las cuentas imitan este patrón:
Para este fractal la fórmula es \(f_c = z² + c \) , pero ¿ qué pasa si variamos la fórmula?
Hoy vamos a buscar fractales con las fórmulas más comunes:
Mandelbrot cuadrado
\[f_c = z² + c \]
Barco quemándose
\[f_c = ( |Re(z)| + i . |Im(z)| )² + c\]
Tricornio (fractal de Mandelbar)
Mandelbrot Cúbico
\[f_c = z³ + c\]
Mandelbrot Perlin
\[f_c = z⁴ + c\]
Fractal de Newton
\[f_c = z - p(z)/p'(z)\]
con p(z) = z3 − 1
Fractal Phoenix
\[z_{n+1} = z_{n}² + k . z_{n-1} + c\]
Buscando fotos y simuladores para el artículo he descubierto un motor de fractales muy chulo (si teneis Linux) os recomiendo XaoS, os permite hacer zoom todo lo que queráis dentro del fractal y tiene muchos famosos.
Quizás en algún momento de tu vida te as encontrado por internet este dibujo:
Por si no te suena, es el triángulo de Sierpiński, y a parte de en tu feed de Instagram aparece de manera insospechada en varios rincones de las matemáticas bastante curiosos.
Hoy vamos a ver un par de formas de construirlo desde la manera más normalita a la más insospechada.
Primero de todo vamos a dibujarlo directamente, a mano (si tienes un papel a mano te recomiendo probar a dibujarlo tú mismo).
En primer lugar, dibuja un triángulo equilátero, localiza los puntos medios de sus lados y únelos. Eso es una iteración, después hacemos lo mismo con cada uno de los 3 trianguiltos que han aparecido en la figura, luego seguimos y lo hacemos a los 9 ... en algún momento dejaremos de dibujar (aunque sea por aburrimiento), pero si tuvieramos paciencia infinita o los comandos prohibidos de Belarmino para C llegaríamos a que la figura iguala en el infinito al fractal, el triángulo de Sierpiński.
Construcción Directa
Empezamos con un triángulo, marcamos los puntos medios de cada lado y los unimos, en la siguiente iteración hacemos lo mismo con 3 triangulitos de los 4 triangulitos que han aparecido, iterando este proceso se revela el patrón siguiente:
Esta es la forma más normalita de encontrarse el fractal, pero también hay otra forma de construirlo directamente, que es haciendo copias de sí mismo:
Construcción por duplicado
Hasta aquí si ya conocías la forma o el fractal te puede haber resultado curioso o te puede haber dado un poco igual, pero ahora vienen las sorpresas, pues este triángulo al parecer sale hasta de entre las pierdras.
Método probabilístico
Dibuja un triángulo y coloca un punto en él, donde quieras (dentro, fuera, en un borde...), ahora selecciona al azar un número entre 1 y 3, fíjate en el vértice correspondiente y une tu punto con él. Ahora pinta el punto medio entre tu punto y el vértice, has completado la primera iteración. Ahora toca realizar lo mismo con el punto que acabas de dibujar y seguir indefinidamente.
Esto son las primeras iteraciones lentas para ilustrar el proceso:
Ahora bien, de esta sopa de puntos no debería emerger ningún patrón, recuerdo que cogemos los vértices al azar, pero no, resulta que si ponemos más puntos...
¡Aparece el mismísimo triángulo de Sierpiński! Esta manera de obtener el triángulo descoloca un poco la primera vez que la ves, porque del puro azar sale un patrón tan ordenado que parece hasta mentira.
Ahora bien, vamos a rizar el rizo ¿si llenamos siguiendo estas pautas otro polígono nos aparecerá algún fractal similar? Vamos a verlo.
Cuadrado:
No tiene pinta
Pentágono:
Podría servir
(Para esta última animación he calculado 30k frames, y los bordes no están muy perfilados, supongo que el patrón sigue pero es un poquito acto de fé)
Hexágono:
De nuevo volvemos a no tener suerte, pero la imágen final me despierta la duda de si las uniones de los vértices con el centro no pueden ser alcanzadas por los puntos y las vemos medio-sombreadas por puntos cercanos o es simplemente una cuestión probabilística.
Heptágono:
En este último caso vemos que el centro queda bastante despoblado, pero dudo mucho que eventualmente se perfile un heptñagono o un círculo en el centro, seguramente este hueco sí sea una cuestión probabilística.
El triángulo de Sierpiński aparece en mil sitios, desde el número de lados que tienen los polígonos regulares que puedes construir con compás pasando por el binario hasta la paridad de los números en el triángulo de Pascal.
Como curiosidad, el triángulo tiene dimensión \(log_2(3))\, desde luego en otro sentido de dimensión que el "numero de elementos de una base del espacio".
Para estas y más formas de redescubrir el triángulo de Sierpiński, os dejo estos videos que están bastante chulos.
Si en algún momento de vuestra vida os ha dado por mirar la entrada de wikipedia sobre constantes matemáticas (que me jugaría un brazo a que no) os habréis dado cuenta de una que resalta a la vista que, en la posición 89 claramente viene la constante de Feigenbaum, que resulta tener una relación muy curiosa con un modelo similar al de Lotka-Volterra, el mapa logístico.
Las ecuaciones de Lotka-Volterra son ecuaciones diferenciales, que tienen en cuenta variaciones infinitesimales en las variables, pero antes de llegar a ellas surgieron modelos discretos, esto es, que se iteraban paso a paso en vez de considerar la evolución como un contínuo.
En este contexto surge el mapa logístico, una herramienta para modelar poblaciones y estudiar el comportamiento constante, cíclico o caótico de sistemas dinámicos.
La ecuación tiene la siguiente pinta:
\[x_{n+1} = \lambda x_n (1 - x_n)\]
Esto significaría que, la cantidad de conejos en la siguiente iteración $x_{n+1}$ variará de acuerdo con el parámetro $\lambda$ y la cantidad de conejos al momento de iteración $x_n$.
Gráficas
Veamos cómo se comportan estas gráficas si variamos $\lambda$.
En primer lugar, si $\lambda \in (0,1)$ la sucesión es convergente a 0:
Después cuando $\lambda \in (1,3)$ vemos que la poblacion se establece en torno a un valor fijo $\frac{\lambda-1}{\lambda}$, sabemos esto gracias a la iteración de punto fijo.
Luego cuando $\lambda \in (3,3.57)$ las cosas empiezan a complicarse, observamos bifurcaciones de periodo doblante, o sea, que aparecen figuras de este estilo que se dividen en 2 sucesivamente:
Por último si estamos entre los 3.57 y 4 empieza el comportamiento caótico, una nube de puntos sin correlacion aparece en la gráfica.
Por último, veamos cómo varían los puntos respecto al $\lambda$ con un video:
Ahora bien, ¿qué tiene que ver Feigenbaum con esto?
La constante de Feigenbaum, \( \delta \approx 4.6692 \), es la razón que describe cómo cambian las distancias entre los valores de \( \lambda \) en los que ocurren las bifurcaciones por duplicación de período.
En otras palabras, la diferencia entre el valor de \( \lambda \) donde se bifurca de un ciclo de período 1 a un ciclo de período 2, y el valor donde se bifurca de un ciclo de período 2 a un ciclo de período 4, está gobernada por esta constante. A medida que el sistema se aproxima al caos, estas distancias se reducen, y la razón entre las diferencias consecutivas tiende a \( \delta \).
La constante de Feigenbaum se obtiene del cociente:
Esto significa que, aunque el caos aparece entre los valores de \( \lambda \) aproximadamente entre 3.57 y 4, esta relación nos indica dónde aparecerán las bifurcaciones, lo me parece bastante chulo.