domingo, 23 de octubre de 2011

El conjunto de Mandelbrot

Selecciona un área con el ratón para ampliarla (click & drag).


Corria el año 1985 cuando cayo en mis manos un ejemplar de Scientific American de ese mismo año. En el, un excelente artículo de A.K. Dewdney me introducia por primera vez en el mundo de los fractales y en especial al conjunto de Mandelbrot. A pesar a la ingente candidad de horas que tuve ‘hechando humo’ a mi pobre Commodore 64 apenas pude visualizar unas toscas imágenes de algún rincon de ese precioso fractal . Este recibe el nombre de Benoit Mandelbrot, matemático que trabajo en los laboratorios de IBM. En realidad se considera el padre de los fractales a Gaston Julia, pero fue Mandelbrot quien puedo hacerlos famosos y accesibles gracias a la aparición de los ordenadores. Podemos decir que un fractal es un objeto semigeométrico cuya estructura básica se repite a diferentes escalas aunque no de manera exacta, sino irregular o fragmentada.

El conjunto de Mandelbrot es un subconjunto de los números complejos que cumple una determinada propiedad. Podemos situar los números complejos en un plano. El plano complejo esta formado por pares de números, el primero real y el segundo imaginario. En la imagen podemos ver un esquema con el resumen de las operaciones entre número complejos que utilizaremos.

Sabemos que un número pertenece al conjunto si el límite de aplicar repetidamente una determinada función sobre el no tiende al infinito. En realidad lo que vamos a hacer es aplicar la función un número finito de veces y ver que 2 situaciones podemos encontrarnos. En el momento que la distancia al centro del plano complejo del resultado sea igual o mayor que 2 podemos concluir que ese punto no pertenece al conjunto, pues ese es el punto de inflexión a partir del cual crecerá hacia el infinito. Si una vez alcanzado el límite de iteraciones su distancia al centro no excede de 2, podemos considerar que pertenece al conjunto.

La función utilizada para determinar si un número pertenece al conjunto es la de la imagen. Inicialmente consideramos z igual a 0 y c, es el número complejo del que estamos calculando su pertenencia al conjunto. Para comprobar la distancia del resultado al centro del plano obviaremos la raiz cuadrada y compararemos con 4, asi nos ahorramos un operación.

Como obtenemos esos magníficos dibujos ? Basta con calcular esta función para cada uno de los puntos en nuestra imagen. A la salida del bucle por alguno de los 2 motivos indicados arriba, coloreamos el punto correspondiente en la imagen según el el número de iteraciones necesarias para salir del bucle y su correspondencia con el color definido.

Os dejo una versión distinta del algoritmo realizada en LISP (Mandelbrot-LISP), aunque sin todas las funcionalidades de la versión flash. Hay que definir el area fijando las variables y la salida es por pantalla en modo caracter.


No hay comentarios:

Publicar un comentario