Si acabas
de entrar en Fractint ya tendrás al conjunto de Mandelbrot como imagen
por defecto en tu pantalla. Si no es así, selecciónalo en formula
fractal como mandel o bien selecciona Fractals/Reset All Options. Este es el aspecto que
presenta:
Como ya sabemos, Fractint interpreta
cada punto (x,y) de la pantalla como un número complejo: c=x+i*y. Toma
un z0=0 y un pixel
c. Computa z1=z02+c. E itera zn+1=zn2+c.
Por defecto en el menú de opciones
básicas, Fractint itera la ecuación maxiter
= 150 veces. Podemos cambiar este parámetro pulsando " X" y cambiando el valor en el menú.
El conjunto de puntos cuyo
módulo es menor que 2 después de 150 iteraciones (o maxiter ) forman el conjunto de Mandelbrot: el color
azul central. Todos los contornos rugosos y más allá
(el exterior a bandas en la imagen), son puntos que exceden el valor 2 después
de 149 iteraciones (el contorno más cercano al conjunto de Mandelbrot
mismo, 148 iteraciones el siguiente, etc.).
En realidad Fractint testa
que x2+y2 sea menor que 4. De modo que se
evita extraer la raíz cuadrada para calcular el módulo. Así
computa más rápido. Al valor 4 se le conoce como bailout value (en este caso el 0 por defecto corresponde
a 4). Cuando la iteración alcanza este valor se detiene. Podemos cambiarlo
en las opciones del menú Z. A esta forma
de computar el fractal se le denomina de tiempo de escape. Por tiempo de
escape se entiende el número de iteraciones necesarias para superar
el bailout value (4 en
este caso). Para el conjunto M estamos detectando las órbitas de los puntos del plano complejo
que no escapan a un círculo centrado en (0,0) de radio 2. Si en maxiter iteraciones, la órbita
(valores de las iteraciones sucesivas) no nos conduce a valores del módulo
mayores que 2 pintamos el punto con color Inside
Color. El valor por defcto es el azul (número
1).
Observa en la imagen la diferencia
al iterar 150 o 10.000 veces. A medida que hacemos zoom en la imagen un número
menor de iteraciones desdibuja el resultado "real". Lo ideal es alcanzar
un compromiso entre número de iteraciones (tiempo de cómputo)
y resolución. Fractint utiliza maxiter
para determinar que si en ese número de
iteraciones la órbita no ha escapa entonces jamás lo hará.
Pero eso no tiene por qué ser cierto, depende de la velocidad de escape.
Justamente los puntos frontera son los más delicados en este sentido.
Un punto que no escape en 150 iteraciones puede llegar a hacerlo en 10000.
maxiter = 150
|
maxiter=10000
|
|
|
|
|
|
|
Hagamos
hincapié en que el conjunto de Mandelbrot es la zona interior pintada
en azul. Las barrocas bandas multicolores que contornean a M no pertenecen
a él.
Para
verlo con claridad, en el menú X coloca Outside en Color (eso hará que no dependa del tiempo de escape como
ocurre cuando la opción está en Iter ) y fija el color que
quieras para el interior y el exterior en: Inside
Color y Outside
Color. De hecho, los programadores de Fractint desarrollaron estas
opciones al recibir la carta de una profesora. En ella expresaba su deseo
de ver solamente el conjunto de Mandelbrot y no las franjas exteriores, para
dejar bien claro a sus alumnos qué era exactamente el conjunto M.
En el siguiente ejemplo hemos puesto valores 0=negro y 255=blanco respectivamente.
En esta imagen se aprecia la
complejidad de la frontera del conjunto de Mandelbrot. Mitsuhiro Shishikura
probó en 1991 que la dimensión fractal del borde es 2. Aún
nadie ha demostrado que el conjunto sea localmente conexo y, suponiéndolo,
no se conoce tampoco el valor exacto del área. Aunque a base de computación
se sabe que es 1,50659177 ...
Habrás
observado que si sigues las instrucciones anteriores el resultado que obtienes
es:
Donde no aparecen todos los filamentos
de la figura que os mostramos. Da más iteraciones en el menú
X. Por ejemplo: maxiter=15000. Para corregirlo
además has de acceder al menú de opciones
extendidas pulsando la tecla Y . Ahí encontrarás
la opción Distance Estimator a 0. Colocalá a 1 y voilà:
El método simplemente hace de
un pixel de ancho los puntos de los filamentos que de otra manera no serían
exhibidos. Aún así perdemos la lanza de la izquierda. Para remediarlo
vuelve al menú X y escoge Passes/2-Pass.
¿Por qué ahora
sí aparece la lanza? Existen varios algoritmos a la hora de dibujar
(opción Passes) la imagen fractal escogida
en Formula Fractal: Single-pass (1-Pass), Dual-pass
(2-Pass), Solid-guessing (S-Guess), Boundary Tracing (B-Trace) o Tesseral. En principio, si eres un purista, deberías
utilizar uno de los dos primeros métodos que trabajan dibujando punto
a punto a partir de la iteración. Por defecto Fractint escoge Solid-guessing que es más rápido pintando,
pues estima colores de un pixel por interpolación de su vecinaje ya
computado por iteración. Por ese motivo la punta de lanza se hacía
invisible. Cada uno de los restantes métodos utiliza algún
tipo de interpolación que aumenta la velocidad de dibujo pero que
puede introducir resultados que no son estrictamente reales. Si quieres comprobar
la cantidad de imagen que estos algoritmos dejan sin calcular accede a la
opción Fill Color del menú X, asigna un valor (color) y así
utilizarán ese color fijado en todos los puntos interpolados. Aquí
te presentamos B-trace y Tesseral con Fill Color=25.
Para más información consulta la ayuda on-line o el help de
Fractint.
Recordemos que el conjunto M es como
un catálogo infinito de todos los conjuntos J de ecuacion fc(z)=z2+c. Fractint nos ofrece una forma
sencilla de observar el conjunto de Julia asociado a cada punto del conjunto
M. Simplemente sitúa el puntero del ratón en un punto del gráfico
y pulsa el botón derecho. Inmediatamente aparecerá el conjunto
J con valor c igual a la coordenada en que estabas situado. Para determinar
exactamente las coordenadas en las que te encuentras ves a View/Coordinate Box. En la
tabla de abajo te presentamos cuatro ejemplos con los color interno a 0 y
externo a 255 como vimos anteriormente.
Coordenadas (0,0)
|
Coordenadas (0.25,0)
|
Coordenadas (-1.22,
0)
|
Coordenadas (-0.11,-0.63)
|
@ El conjunto de Mandelbrot
es conexo. Utiliza el zoom y la paleta de color que encuentres más
adecuada para comprobarlo con aquellas zonas que parecen isoladas. Comprobarás
que en realidad no lo están.
|
@ ¿Quieres printar un conjunto de Mandelbrot
tamaño gigante? Accede a la página de M. Romera del Instituto
de Física Aplicada del Consejo Superior de Investigaciones Científicas.El
libro sobre sitemas dinámicos es...
|
@ Observa que maravillas de conjuntos de Mandel,
de Julia y cuencas de Newton.
|
@ Explora el efecto que produce variar el número de
iteraciones en la coloración del conjunto de Mandelbrot. Aquí
tienes maxiter=10. ¿Puedes explicar el por qué de la variación
de los colores en el contorno?
|
|
@ En la
versión para Windows de Fractint no existe la opción para ver
órbitas, pero en la versión para DOS sí. Si has instalado
esta versión puedes comprobarlo pulsando la tecla O. Aparecerá entonces
una pequeña ventana con una espiral formada por puntos. Se tratan
de los sucesivos valores que toma z al ser iterada. El z inicial concreto
que aparece hace referencia al punto donde tienes situado el puntero de ratón.
La tecla C dibuja
círculos en vez de puntos y la tecla L los une através de líneas. De hecho en la
versión de DOS puedes explorar los conjuntos J con mayor comodidad.
Apretando la barra espaciadora aparece una ventanilla semejante a la de órbitas,
pero que esta vez muestra el conjunto J asociado al punto señalado
por el ratón. Para ver el conjunto J ocupando toda la pantalla pulsa
de nuevo la barra. Y para volver al conjunto M pulsa una vez más.
Ya que estamos, otra
opción interesante que tampoco está presente en la versión
para Windows es la de ciclo de color. Si apretas la tecla C la paleta de colores predeterminada
para la imagen que tienes en pantalla irá rotando. El efecto es verdaderamente
impresionante. Puedes aumentar la velocidad de rotación con las flechas
de teclado arriba/abajo. Las teclas +/- invierten el sentido de giro. Apreta
la barra espaciadora si quieres congelar la imagen y Esc para salir del modo
de rotación de colores. |
@ Observa que
en la opción Outside del menú
X existen otras opciones: Real, Imag, Mult, Summ. Cada una de ellas (representadas
sucesivamente en esta columna) asigna el color a cada pixel de la pantalla
mediante un algoritmo diferente al de tiempo de escape de Ite. Estas opciones pueden proporcionar efectos de
profundidad interesantes en algunos fractales que representados clásicamente
no poseen un interés estético especial. Experimenta con mapas
de color distintos. ¿Puedes explicarnos como funcionan?
|
@ Escoge lambda en Fractal Formula.
En menú Z pon Real
Part of Parameter= 0.5. Pon el interior en color azul (1) y el exterior
a color negro (0). El resultado es la primera imagen. Ahora vayamos al menú
de opciones extendidas Y. Pica en Finite Attractor
. El resultado es la segunda imagen. Fractint nos muestra los distintos puntos
atractores del conjunto prisionero con sus cuencas de atracción coloreadas.
|
@ Decomposition. En la
pantalla de opciones básicas X nos encontramos
con esta opción . Es una manera de colorear el resultado de nuestras
iteraciones de acuerdo con el cuadrante del plano complejo en que se encuentra
el valor complejo final de nuestra iteración.
Si usamos el valor 4 como parámetro
se asigna a cada cuadrante un color diferente. Si escogemos 2 (descomposición
binaria), puntos en cuadrantes alternos poseen el mismo color. El parámetro
de descomposición determina el número de secciones en las que
se divide el plano complejo. Aquí tienes ejemplos del conjunto M en
mapa painjet.map con valor decomposition =2,
4 y 8 respectivamente.
|
| @ El algoritmo descrito anteriormente es lento. Existe
una alternativa que se denomina el algoritmo inverso o Julia inverso. Repitamos
otra vez lo visto. La ecuación básica que estamos iterando
es:
zn+1 =zn2 +c.
Donde c está fijada y especifica un conjunto J
particular. Lo que queremos saber es si el z inicial del plano complejo
es atraído por el (0,0) o repelido al infinito (de hecho podemos tomar
al infinito como un punto atractor y decir: "atraído por el infinito".
Así en el lenguaje de sistemas dinámicos, que ya empleamos
al hablar del método de Newton, estamos hablando de cuencas de atracción.
Estamos determinando cuáles son las cuencas de atracción del
(0,0) (el llamado conjunto prisionero) y del infinito (conjunto de escape).
Los restantes puntos que no pertenecen a la cuenca de uno u otro conforman
el conjunto J propiamente dicho.
El truco del algoritmo inverso consiste
en invertir la ecuación que estamos iterando. Eso la convierte en:
zn+1 = sqrt(zn -c).
Y para esta ecuación iterada, lo que antes eran
puntos atractores, se convierten en repulsivos y la frontera se convierten
en atractor. Así el propio conjunto J se convierte en el atractor de
la iteración. Y bajo este proceso se nos dibujará directamente
el contorno.
Lamentablemente, ciertas partes del conjunto
J poseen cuencas de atracción ostensiblemente mayores que otras. Y
así, por este método, algunos puntos serán redibujados
muchas veces. Existe un problema añadido y es que cada vez que realizamos
la raíz cuadrada obtenemos dos posibles resultados (si el valor no
es degenerado). Fractint sortea estos problemas con variantes distintas.
Roger Bagula y Paul Bourke utilizan
el algoritmo inverso para generar estas estrellas de Julia:
|
|