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
Construcción del Conjunto de Mandelbrot
El conjunto de Mandelbrot se construye de la siguiente manera.
Tomemos un punto inicial
Si la órbita
Consideremos, por ejemplo,
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
Si la órbita
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
En el siguiente applet, se usa el esquema de color HSV
y depende de la distancia del punto
- Cada pixel que contiene un punto del conjunto de Mandelbrot se colorea en negro.
- 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.
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:
- The Fractal Geometry of Nature. New York: W. H. Freeman, 1983.
- Fractals and Chaos: The Mandelbrot Set and Beyond. New York: Springer-Verlang, 2004.
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)
}