VIII. PARA LA COMPUTADORA

LA CONSTRUCCI�N de un fractal, la posibilidad de utilizarlo para producir, almacenar, analizar o transmitir una imagen se simplifica considerablemente haciendo uso de la computadora. De hecho, el efecto y la utilidad que ha demostrado tener la geometr�a fractal no se hubieran manifestado sin las facilidades de c�lculo y representaci�n gr�fica que proporciona el trabajo en computadora; parecen estar hechos el uno para el otro. Los fractales se generan a trav�s de procesos en los que una misma operaci�n se repite un sinn�mero de veces, y eso es precisamente lo que una computadora sabe hacer mejor.

La calidad de la visualizaci�n de una estructura fractal en el monitor de una computadora depende de la resoluci�n de la pantalla aunque, en un sentido estricto, jam�s obtendremos una representaci�n exacta que reproduzca el detalle de la figura a toda escala. Sin embargo, la tecnolog�a moderna ya permite generar im�genes cuya resoluci�n va m�s all� de lo que podemos distinguir con nuestros ojos.

La mayor�a de los m�todos desarrollados para construir im�genes fractales se basan en procedimientos muy sencillos que en cualquier lenguaje computacional se expresan en unos cuantos renglones; de ah� la sorpresa que provoca observar la complejidad de la imagen que hacen surgir en la pantalla.

Sin duda alguna, la manera m�s f�cil de entender qu� es un fractal y convencerse de su enorme utilidad, es aceptar el reto de construirlo. Por ello hemos incluido en este cap�tulo un conjunto de instrucciones y programas para la computadora que permiten generar la mayor�a de las figuras de este libro. Si se sabe BASIC, el camino est� pr�cticamente andado, si no, recomendamos copiar directamente los programas y trabajar con ellos. Estamos dispuestos a apostar que no habr� nadie que se arrepienta.

EN EL PA�S DE LAS MARAVILIAS

Conjuntos de Julia

El conjunto de Julia correspondiente a un valor determinado de la constante c se genera computacionalmente a trav�s de la aplicaci�n de la iteraci�n zn+1 = zn2+c a cada uno de los puntos de una red definida en una regi�n adecuada del plano complejo. Para hacerlo es necesario escribir la operaci�n de inter�s en t�rminos de sus partes real e imaginaria. Esto es:

zn+1= (an+1,bn+1)              zn=(an, bn)              c=(Cr, Ci),

donde utilizamos la representaci�n tipo coordenadas para cada t�rmino de la iteraci�n. Al sustituir resulta:

zn+1=zn2 + c= (an, bn) (an, bn) + (Cr, Ci) = (an+1, bn+1)

y si multiplicamos y sumamos:

(an+1,bn+1)= (an2- bn2 + Cr, 2an bn+ Ci).

Cuando se igualan dos n�meros complejos, necesariamente se cumple que sus partes reales y sus partes imaginarias son iguales entre s�, es decir:

Real

an+1 = an2- b2n+ Cr

Imaginaria

bn+1 = 2an bn + Ci

Con esto se logra convertir la iteraci�n de n�meros complejos zn+1 = zn2 + c, en dos iteraciones de n�meros reales que son m�s f�ciles de manejar.

Para iniciar la b�squeda de prisioneros y escapistas es necesario dar los valores de Cr y Ci que se quieran, y seleccionar un punto (ao, bo) para hacer la prueba. Aplicando la iteraci�n sobre �l se analizan las caracter�sticas de la �rbita para determinar la naturaleza del atractor al que se dirige. Es evidente que si el atractor est� en el infinito, jam�s podremos alcanzarlo. Afortunadamente, puede demostrarse (Peitgen, 1984) que si el resultado de una iteraci�n es un n�mero complejo cuya distancia al origen r es mayor que dos, la �rbita se escapar� hacia infinito; la distancia r se calcula a trav�s del teorema de Pit�goras, r= a² + b² (Figura 32). Esto permite distinguir entre puntos prisioneros y escapistas.

[MCT 53]

Figura 32. La distancia R es una medida del tama�o del n�mero complejo z= (a,b) . Por el teorema de Pit�goras, R²=a²+b².

En forma pr�ctica: se aplica el mapeo; se analiza el valor de r, para el numero obtenido; si r>2, el punto no se pinta en la pantalla y se selecciona un nuevo valor inicial; si r<2 se aplica de nuevo el mapeo sobre el resultado y se repite el an�lisis anterior. Si despu�s de un n�mero N de iteraciones (por ejemplo, 100) la distancia al origen de la �rbita (r) sigue siendo menor que dos, se considera que el punto es prisionero (pertenece al cuerpo del conjunto de Julia) y se le grafica con un color que lo distinga. En un lenguaje computacional como el BASIC, el siguiente programa genera en la pantalla de un monitor monocrom�tico el cuerpo del conjunto de Julia asociado a la constante compleja c=(Cr, Ci) que se seleccione:

REM "Conjuntos de Julia"

KEY 0FF: CLS

INPUT "Dame la constante compleja c ", Cr, Ci

CLS: SCREEN 1

WINDOW (-2, -2)-(2, 2)

LINE (-2, -2)-(2, 2), , B

Paso = 200: N =100

Delta = 4/Paso

ao = -2: bo = -2

REM "Se construye una red en el plano complejo"

FOR J = 1 TO Paso

FOR K = 1 TO Paso

a = ao + J * Delta

B = bo + K * Delta

i= 0: RR = O

REM "Se hace la iteraci�n en cada punto"

WHILE (i < N AND RR < 4)

an = a * a - B * B + Cr

B = 2 * a * B + Ci

a = an

RR = a * a + B * B

i = i+1

WEND

REM "Se dibujan los prisioneros"

IF i < N THEN 10

PSET (ao + J * Delta, bo + K * Delta) 10

NEXT K

10 NEXT J

END

 

El detalle de la frontera (conjunto de Julia) de las figuras obtenidas con este programa (Figuras 8 y 9) mejora al incrementar el n�mero de puntos sobre el que se aplica el mapeo (variable Paso), as� como utilizando monitores con m�s alta resoluci�n (SCREEN).

Si se cuenta con una paleta de color; el programa puede modificarse para asignar distintos colores a regiones del plano complejo, fuera del cuerpo del conjunto de Julia, cuyas �rbitas presenten diferente rapidez de escape medida como N-i (valores peque�os de i implican que el l�mite r=2 se rebasa con rapidez al aplicar la iteraci�n). En la siguiente tabla se presentan algunos de los muchos valores de c para los que el conjunto de Julia muestra caracter�sticas interesantes (Peitgen, 1986)

La lista, por supuesto, no agota el n�mero de posibilidades, y es tan s�lo un reto al lector que desee adentrarse en este reino de fantas�a:

c
Figura

(-0.12,0.57)

(0.12,0.66)

(0.12,0.74)

(-0.25,0.74)

(-0.194+0.6557)

(-0.75 + 011)

(-0.745+0.1130)

(-1.25 0)

(-01565+1.0322)

(0.32,0.043)

8(a)

8(b)

8(c)

8(d)

8(e)

8(f)

9(a)

9(b)

9(c)

9(d)


El conjunto de Mandelbrot puede generarse con relativa facilidad si se toman en cuenta dos principios b�sicos:

a) Todo valor de c que pertenece al conjunto genera una �rbita que no se dispara a infinito al aplicar la iteraci�n zn+1=zn2 +c al punto z0(0,0).

b) Toda �rbita de iteraci�n cuya distancia al origen r exceda de dos, escapar� a infinito.

Con base en esto, basta analizar el comportamiento de la iteraci�n cuadr�tica aplicada al punto zo= (0,0) para distintos valores de c, y graficar sobre el plano complejo aquellas c en las que el origen se comporta como prisionero. Esto puede hacerse sistem�ticamente a trav�s de un programa de c�mputo sencillo, cuya estructura en BASIC sea como la siguiente:

REM "Conjunto de Mandelbrot"

KEY 0FF: CLS

SCREEN 1

WINDOW (-2.4, -1.25)-(0.8, 1.25)

LINE (-2.4, 0)-(0.8, 0): LINE (0, -1.25)-(0, 1.25)

LINE (-2.4, -1.25)-(0.8, 1.25), , B

Paso = 200: N = 100

Deltr = 3.2/Paso: Delti = 2.5/Paso

REM "Se seleccionan las constantes c a visitar"

Cr = -2.4

FOR J = 1 TO Paso

Cr = Cr + Deltr

Ci = -1.25

FOR K= 1 TO Paso

Ci = Ci + Delti

ao = O

bo = O

i= O: RR = O

REM "Se hace la iteraci�n en zo = (0, 0)"

WHILE (i < N AND RR < 4)

an = ao * ao - bo * bo + Cr

bo = 2 * ao * bo + Ci

ao = an

RR = ao * ao + bo * bo

i=i+1

WEND

REM "Se dibujan los puntos del conjunto"

IF i < N THEN 10

PSET (Cr, Ci)

NEXT K

NEXT 3

END

 

En este programa se recorre el intervalo de valores de la constante c comprendido entre -2.4 y 0.8 en su parte real, y de -1.25 a 1.25 en su parte imaginaria. Todo valor de c que pertenece al conjunto de Mandelbrot se dibuja en el plano complejo representado en la pantalla. La estructura del conjunto se muestra en la figura 10. De nuevo es importante se�alar que los detalles del conjunto se hacen m�s notorios al incrementar el valor de la variable. Paso (n�mero de valores de c visitados) o la resoluci�n del monitor. Las ilustraciones m�s famosas del conjunto de Mandelbrot se han realizado en monitores de color de alta resoluci�n, asignando diferentes colores a valores de c fuera del conjunto, de acuerdo con la rapidez de divergencia o escape a infinito de sus �rbitas (controlado por la variable i; ver las l�minas).

A diferencia de los conjuntos de Julia, de los cuales existe uno para cada valor del par�metro complejo c, el conjunto de Mandelbrot es �nico. Sin embargo, en �l est� contenida toda la complejidad de cualquier conjunto de Julia imaginable. Por ello, analizar los detalles de su contorno puede ser una experiencia inolvidable. Para demostrarlo, recomendamos aqu� algunas zonas dignas de exploraci�n, e invitamos al lector a hacer sus propios descubrimientos en este mundo fascinante (Peitgen, 1986).

WINDOW
Figura
(-0.670,0.47) -
(-0.365,0.69) 11 (a)
(-0.575,0.585) -
(-0.505,0.635) 11(b)
(-0.750,0.105) -
(-0.740,0115) 11(c)
(-0.7459,0.1119) -
(-0.7444,0.1134) 11(d)
(-0.745538,0.11288) -
(-0.745054,0.113236) 11(e)
(-0.7454356,0.1130037) -
(-0.7454215,0.1130139) 11(f)

En estos casos es necesario modificar un poco el programa anterior para considerar los nuevos l�mites del WINDOW, los valores de inicio de Cr y Ci que correspondan, as� como el tama�o del intervalo por recorrer en el eje real y en el eje imaginario (indicados en las variables Deltr y Delti). En la medida que el WINDOW es m�s peque�o resulta recomendable tomar cada vez valores mayores de N.

UN MUNDO DE IM�GENES

Ping-pong fractal

Los principios en los que se basa el m�todo del ping-pong fractal son realmente sencillos. Para utilizarlo s�lo es necesario construir la tabla del conjunto de transformaciones de afinidad que generan el collage de la figura de base sobre la que se desea trabajar. El resto consiste en establecer un mecanismo de selecci�n azarosa de cada uno de los algoritmos correspondientes, para aplicarlos iteradamente a partir de un punto arbitrario inicial. En un lenguaje simple como BASIC estas ideas pueden plasmarse en un programa corto como el que se lista a continuaci�n, escrito para el caso particular de la hoja de helecho fractal (Figura 15 (b)), cuya tabla de transformaciones se encuentra en el capitulo "Un mundo de im�genes":

REM "Imagen de una hoja de helecho fractal"

CLS: SCREEN 1

WINDOW (-3, 0)-(3.5, 11)

pl = 0.005: p2 = 0.0975:

f = 3.1416/180

x = 0: y = O

d = RND

x = r * COS(A * f) * x - s * SIN (B * f) * y + h

y = r * SIN(A * f) * x + s * COS (B * f) * y + k

PSET(x, y)

n=n+1

IF n > 20000 THEN 5

REM "Se selecciona al azar cada transformaci�n"

IF d < p1 THEN 2

IF d > p1 AND d < p1 + p2 THEN 3

IF d > p1 + p2 AND d < p1 + p2 + p3 THEN 4

r = 0.85: 5 = 0.85: h = 0

k = 1.6: A = -1.5: B = -1.5

GOTO 1

r = 0: s = 0.16: h = 0

k = 0: A = 0: B = 0

GOTO 1

r = 0.3: s = 0.37:h =0

k = 0.44: A = 135:B = -40

GOTO 1

r = 0.3: 5 = 0.34:h =0

k = 1.6: A = 45: B= 45

GOTO 1

END

1
 
2
3
 
4
 
5

Como puede verse, la elecci�n de cada transformaci�n de afinidad se hace de acuerdo con el valor aleatorio de la variable d, considerando la probabilidad de visita de cada �rea pi. Las caracter�sticas del lenguaje de programaci�n utilizado, obligan a manejar las variables angulares A y B en radianes, por lo que se introduce el factor de transformaci�n f. La nitidez de la figura obtenida puede mejorarse ya sea utilizando un monitor de alta resoluci�n o incrementando el n�mero total de iteraciones que en nuestro caso se ha limitado a 20 000.

En caso de contar con una paleta de color, la imagen puede enriquecerse por la asignaci�n de colores o tonos distintos de acuerdo con la frecuencia de incidencia en cierta regi�n de la pantalla.

Debe ser claro que el fractal generado en la computadora no es, en el estricto sentido matem�tico, un verdadero fractal. La posibilidad de tener detalle a toda escala est� restringida por el tama�o de los puntos desplegados en el monitor, de manera que hay un l�mite en la repetici�n de la forma original. Aun as�, el m�todo es muy �til para construir excelentes representaciones del caso ideal.

La estructura de este programa puede servir para reproducir el fractal que se desee, con tal de cambiar los valores de r, s, h, k, A y B que correspondan a cada transformaci�n, las probabilidades de visita pi , y cuando se requiera, incluir las transformaciones de afinidad adicionales que sean necesarias.

JUEGOS NATURALES

Agregaci�n limitada por difusi�n

Para simular el crecimiento de un agregado fractal por el m�todo de agregaci�n limitada por difusi�n (DLA), lo primero que hay que hacer es elegir el tipo de celda con la que se va a trabajar. Si la celda es circular; hay que colocar una part�cula semilla en el origen de una malla regular; si la celda es rectangular, que es el caso que aqu� ilustraremos, se coloca una l�nea de semillas en la base de la malla para representar al electrodo.

El c�lculo se inicia a�adiendo una part�cula en una posici�n aleatoria alejada de la base, y se permite que inicie su movimiento siguiendo una caminata al azar. Si al hacer su recorrido casualmente visita un sitio adyacente a alguna semilla, pasa a formar parte del c�mulo y una nueva part�cula se introduce al sistema. Esta recorre su camino azarosamente hasta toparse y adherirse al agregado en crecimiento. El proceso se repite con un n�mero N de part�culas, estableciendo condiciones a la frontera que aseguran el reemplazo de toda part�cula que en su trayectoria aleatoria rebase los l�mites impuestos al sistema.

El siguiente programa en BASIC permite crecer un agregado fractal en una celda rectangular donde se depositan 900 part�culas:

REM "DLA para una celda rectangular"

KEY 0FF: RANDOMIZE TIMER
CLS: SCREEN 1

WINDOW (-40, -36)-(40, 36)

LINE (-35, -35)-(35, 35), , B

LINE (-30.5, -28.3)-(30.5, -27.7), 3, BF

REM "Condiciones iniciales"

N = 900: Con = 0

WHILE Con <= U

REM "Definici�n de posici�n aleatoria"

x = -30 + INT(61 * RND): y = 28

LINE (x - 0.4, y - 0.4)-(x + 0.4, y + 0.4), , BF

C=0

REM "An�lisis del estado de sitios vecinos"
10
IF (POINT(x + 1, y) <> 0 OR POINT(x - 1, y) <> 0 OR

POINT(x, y + 1) <> 0 OR POINT(x, y - 1) <> 0) THEN

C = 1 ELSE C = O

IF C = 1 THEN 30

LINE (x - 0.4, y - 0.4)-(x + 0.4, y + 0.4), 0, BF

REM "C�lculo de nueva posici�n al azar"

Sel = RND

IF (Sel <= 1/3 AND POINT(x+1, y) = 0) TEEN x = x + 1

IF (Sel >= 1/3 AND Sel <=2/3 AND

POINT(x - 1, y) = 0) THEN x = x - 1

IF (Sel >= 2/3 AND POINT(x, y-1) = 0) THEN y = y - 1

LINE (x - 0.4, y - 0.4)-(x + 0.4, y + 0.4), , BF

REM "Condici�n a la frontera"

IF (x < -33 OR x > 33 OR y < -33 OR y > 33 ) THEN 20

GOTO 10

20

LINE (x - .4, y - .4)-(x + .4, y + .4), 0, BF

GOTO 40

30

Con = Con + 1

40

WEND

END

La agregaci�n por DLA es un proceso relativamente lento, por lo que no hay que desesperar antes de ver completo el dep�sito (Figura 23(b)). El programa anterior puede modificarse con relativa facilidad para trabajar en una celda circular o incluir la posibilidad de que las part�culas reboten antes de adherirse (Talanquer, 1991). Esto es de utilidad para analizar c�mo cambia la estructura y su dimensi�n fractal.

HUELLAS EN EL TIEMPO

Sobrepoblaciones

El comportamiento temporal de la din�mica poblacional que corresponde a la relaci�n:

Ni+1= aNi (1-Ni )

puede generarse f�cilmente en la computadora. Para ello hay que construir un programa en el que, dados los valores del par�metro a y la poblaci�n inicial N0, se calculen las poblaciones sucesivas N1, N2, N3,..., y se grafiquen como funci�n del tiempo. En BASIC (Cort�s, 1992):

REM "Comportamiento temporal de la poblaci�n"

INPUT "Dame el par�metro de crecimiento a (0-4)", a

INPUT "Dame la poblaci�n inicial No (0-1)", No

CLS: SCREEN 2

WINDOW (-5, -0.1)-(105, 1.1)

LINE (0, 0)-(0,1): LOCATE 2, 2: ?"N"

LINE (100, 0)-(0,0): LOCATE 22, 75:?"t"

REM "C�lculo del comportamiento temporal"

FOR i=0 TO 100

LINE -(i, No)

No = a * No * (i - No)

NEXT i

END

Las gr�ficas que se generan son como las de la figura 28 y corresponden a un an�lisis en el que se realizan 100 iteraciones. Para obtener el diagrama de bifurcaciones (Figura 29), la iteraci�n debe hacerse para varios valores sucesivos de a, graficando para cada uno de ellos los distintos valores que alcanza la poblaci�n en las �ltimas iteraciones (si se hacen 100 por ejemplo, basta tomar las �ltimas 25):

REM "Diagrama de bifurcaciones"

INPUT "Dame la poblaci�n inicial No (0-1)", No

CLS: SCREEN 2

WINDOW (2.75, -0.1)-(4.1, 1.1)

LINE (2.8, 0)-(4, 1)9 , B

LOCATE 2, 2: PRINT "N": LOCATE 23, 77: PRINT "a"

REM "C�lculo y representaci�n gr�fica"

FOR a = 2.8 TO 4 STEP 0.002

FOR i = 1 TO 100

No = a * No * (1 - No)

IF i > 75 THEN PSET (a, No)

NEXT i

NEXT a

END

Si se desea utilizar la computadora como microscopio y hacer ampliaciones, basta cambiar los l�mites de la instrucci�n WINDOW, y el intervalo de valores a que se recorre.

AUT�MATA CELULAR

Recordemos que el aut�mata celular cuyo comportamiento nos interesa investigar est� definido en una malla unidimensional en la que cada celda puede tomar uno de dos valores posibles: 0 o 1. La regla de evoluci�n temporal que se ha elegido se resume en una tabla como la siguiente, en la que se establece cu�l ser� el nuevo estado de cada celda, como funci�n de la suma de los valores que ten�an ella y sus dos primeros vecinos en la etapa anterior:

SUMA
0
1
2
3
NUEVO ESTADO
0
1
1
0

El programa de computadora por construir debe entonces analizar cu�nto vale la suma en cada una de las celdas, y con base en ello cambiar su estado. Despu�s de actualizar a todo el sistema se elige un c�digo de color: 1-negro, 0-blanco, por ejemplo, y se dibuja el resultado. El proceso se repite tantas veces como se quiera, desplegando en la pantalla, una tras otra, la estructura que se tiene en cada etapa:

 

REM "Aut�mata celular"

DIM Vieja(105), Nueva(105)

CLS: SCREEN 2

WINDOW (0, -100)-(100, 0)

j = -1

REM "Condiciones iniciales al azar"

FOR i = 1 TO 100

 

Vieja(i) = IIT (2 * RND)

IF Vieja(i) = 1 THEN

 

LINE (i, j)-(i + 1, j + 1), , BF

 

 

10

NEXT i

REM "Nuevos estados"

FOR i = 2 TO 99

 

Sum = Vieja(i) + Vieja(i + 1) + Vieja(i - 1)

IF Sum = 0 THEN Nueva(i) = 0

IF Sum = 1 THEN Nueva(i) = 1

IF Sum = 2 THEN Nueva(i) = 1

IF Sum = 3 THEN Nueva(i) = 0

 

NEXT i

Nueva(1) = Nueva(99)

Nueva(100) = Nueva(2)

j = j - 1

REM "Actualizaci�n"

FOR i = 1 TO 100

 

IF Nueva(i) = 1 THEN

 

LINE (i, j)-(i + 1, j + 1), , BF

 

Vieja(i) = Mueva(i)

 

NEXT i

IF j >= -100 THEN 10

END

Es interesante modificar el programa anterior para alterar las condiciones iniciales o la regla de evoluci�n del aut�mata. Algunos de los patrones que caracterizan al sistema se presentan en la figura 31 y muestran la estructura alcanzada despu�s de 100 etapas.

InicioAnteriorPrevioSiguiente