jueves, 22 de abril de 2021

Generación Fractal

“A principios del 2019 conocí unas   imágenes “generadas informáticamente” que resultaban ser hermosas, con diseños que se repetían recursivamente. Recabando  información e investigando el tema, entendí  que se trataba de fractales, y que no solo eran” imágenes bonitas” sino que además estaban muy  relacionadas con la matemática, razón por la cual quise continuar profundizando. Pero las explicaciones encontradas  a través de diversos recursos, hacían referencia a algunos conjuntos más “sencillos” (y no por eso menos interesantes), pero que no se parecían a los diseños tan bonitos que esperaba; estos últimos aparecían junto con conceptos matemáticos bastante más engorrosos, algoritmos aplicados que no sabía, el cómo ni por qué eran utilizados, en fin, un montón de palabras pero sin una aplicación concisa-entendible, capaz de relacionar teoría y práctica, más aun que ésta práctica se base en el cálculo y se relacione estrictamente con imágenes generadas a través de una computadora.

 Motiva esto el mostrar un posible camino que nos permita llegar a la creación de estas imágenes, recurriendo al conocimiento matemático necesario para provocarlas, pero preocupados más bien por su aprovechamiento, y no tanto en su profundización. En el caso de los alumnos de enseñanza media, esta actividad puede ser útil para ver aplicaciones de algunos contenidos curriculares como ser: sucesiones y series, convergencia- divergencia, el conjunto de los números complejos, (sus expresiones y operaciones, en particular potencia en C), polinomios en C, polinomios  de variable real como una acotación de polinomio de variable compleja, y ceros de este polinomio.

Por otra parte los estudiantes más avanzados podrán profundizar mucho más en estos mismos conceptos, vinculando materia específicas como algebra y geometría, didáctica de la matemática, calculo numérico -historia de la matemática, y de manera interdisciplinar con TIC”.

En la medida que avancemos en el escrito trataremos  los contenidos matemáticos vinculados, e  iremos viendo a la par cómo trabajar con ellos en un software libre.

¿Qué es un fractal?

Sabemos que un fractal es un objeto geométrico, cuyo patrón se autorreplica infinitamente a escalas menores capaces de producir formas y superficies novedosas que escapan de los dominios de la geometría clásica. ¿Pero como gozar de su belleza?, tan solo verlos no es suficiente, ¿ cómo podemos generarlos?.
Dado que los fractales se basan en la repetición constante de patrones geométricos auto afines, es decir  que una porción de ellos es idéntica al todo, en la obtención de los mismos, convergen belleza, arte, matemáticas y tecnología.
Normalmente un fractal se construye mediante una fórmula o función que se va iterando tantas veces como uno desee,(entendiéndose por iteración al proceso por el cual una ecuación se repite sucesivamente).
Si entramos en formalidades, Mandelbrot definió un fractal como “un conjunto cuya dimensión de Hausdorf Besicovitch es estrictamente mayor que su dimensión topológica”. Dado que estos conceptos son un tanto engorrosos por ser avanzados, nos dan una idea suficiente para pensar en figuras que tienen área finita y perímetro infinito. Ejemplo de ello son el conjunto de cantor , el triangulo de sierpinsky, el copo de nieve de koch, el conjunto de julia y el ya nombrado conjunto de mandelbrot.

Mi primer fractal

Ya estamos en condiciones de iniciar nuestro dibujo de una imagen fractal. Comenzaremos eligiendo una función adecuada y sencilla, para que los cálculos internos que deba realizar el programa no sean demasiado exigentes. Luego veremos el criterio de asignación de color a cada punto, utilizando la función elegida.

Puede haber muchísima variedad en la función que uno elija para generar una imagen fractal, pero las que se agrupan bajo el título de fractales de Newton son bastante sencillas  y responden a una expresión de la forma:

                           z (n+1)= z n- ( p z n / p ' z n)

Aquí p es una función polinómica compleja, y se cumple la curiosidad de que los puntos atractores (aquellos candidatos a ser puntos de convergencia de la sucesión que se obtiene al iterar muchas veces la función, sobre un punto determinado), son precisamente las raíces de p. Pongamos por ejemplo que utilizamos el polinomio p (z)=z3 -1. Tendremos pues tres raíces complejas, candidatas a ser atractores de cada punto del plano. De modo que implícitamente estamos considerando algunas regiones: los complejos que, luego de varias iteraciones, converjan hacia la primera raíz, pertenecerán a la primera región. Análogamente con la segunda y tercera raíces. Y si identificáramos cada región con un color, estaríamos casi estableciendo un criterio para pintar todos los puntos del plano.

¿De qué color pintamos cada punto?

Lo importante es ver cómo va quedando armado el procedimiento. Dado un punto, iteraremos varias veces (ya decidiremos cuántas) la función sobre él. Atendiendo a la imagen obtenida luego de las iteraciones, observaremos a cuál punto a tractor se ha acercado, y en función de esa distancia lo pintaremos. Veamos cómo hacerlo en GeoGebra.

Consideremos un número complejo A1 variable (asociado, inevitablemente, a la celda A1). Por ejemplo, escribamos A1=2+3i. Necesitaremos también definir los tres puntos atractores, que al ser las raíces del polinomio ya mencionado, coinciden con las tres raíces cúbicas de la unidad. Los llamaremos A, B y C, y para hacerlo más sencillo los introduciremos utilizando la notación polar, como sigue: A= (1; 0) B= (1; 2 pi/3) C= (1; 4 pi/3.

 
Ahora debemos iterar la función sobre el punto A1, para analizar su comportamiento. Aprovecharemos la hoja de cálculo, e iremos calculando las sucesivas iteraciones en la fila 2, hasta alcanzar un número que nos preestablezcamos (10, por ejemplo). En la celda B1 ingresaremos la expresión de la función: =A1– (A1^3 –1)/ (3 A12). Para continuar iterando la función no es necesario volver a escribirla, basta copiar la fórmula hacia las celdas de la derecha, para que GeoGebra actualice las variables en la fórmula. Para ello, seleccionando la celda B2, arrastramos desde el pequeño cuadrado azul que se ve en el extremo inferior derecho de la celda, hasta alcanza la columna K1. Habrán aparecido también todos los puntos resultantes de cada iteración representados en la vista gráfica. Si movemos el punto A2, veremos moverse toda la lista de puntos, y también podremos apreciar cómo se acercan a uno u otro atractor dependiendo de la posición de A1. Nuestra pantalla se verá así:



Las imágenes fractales más “profesionales” tienen en cuenta varias cosas para asignar el color de cada punto: no sólo a qué atractor corresponden, sino también la velocidad de convergencia (es decir, cuántas iteraciones son necesarias para que se acerquen al atractor menos de una distancia estipulada). En nuestro trabajo no nos detendremos en la velocidad de convergencia, simplemente asignaremos el color en función de la cercanía a cada atractor luego de varias iteraciones. Nos ayudará el hecho de haber elegido un polinomio con tres raíces (tres atractores, A, B y C), ya que asignaremos un color a cada uno. Para que sea evidente a qué región pertenece el punto (A1, en nuestro ejemplo), buscaremos asignar el color dinámico de tal manera que cuanto más cercano esté el punto (K1, en nuestro ejemplo) de un atractor, la intensidad de la componente de color correspondiente sea mayor; y si está alejado, que la componente se vaya anulando. Fijemos ideas pensando que al atractor A asociaremos el color rojo. Estamos necesitando una función que, según la posición del punto K1 sea cercana a A, ofrezca una imagen cercana a 1; mientras que cuanto más se aleje de A, será más cercana a 0. Aprovechando algunas herramientas del análisis real, elegiremos la función dada por Rojo(A1) = e–dist(A,K1), que en la sintaxis de GeoGebra quedará expresada como exp(-Distancia[A,K1]). (NOTA: esta función cumple con las pretensiones planteadas). Con esta idea, podemos completar los cuadros del color dinámico de A1 de esta manera: Rojo = e–dist(A, K1), Verde = e–dist (B, K1), Azul = e–dist(C, K1). De nuevo, si activamos el trazo del punto A1 y lo agitamos pacientemente por la pantalla, veremos la imagen fractal ira apareciendo. 

 IMAGEN FRACTAL GENERADA CON GEOGEBRA CLASSIC VERSION 5.0


 ¡Hemos creado una imagen fractal! Aunque, a decir verdad, está un poco desprolija. ¿Habrá una manera más sencilla de colorear cada punto?

 

Automatizar el trabajo:

Replicaremos el trabajo arriba expuesto a partir de la celda A2, realizado el primer paso, Dejaremos a la vista sólo el punto A2, y ocultaremos el resto para evitar confusiones. Asimismo, reduciremos el tamaño de A2 al mínimo, para que la imagen final sea de una buena resolución. Luego, definiremos el parámetro a que será la abscisa de nuestra hilera de puntos. Lo definimos como un deslizador en el intervalo [-3, 3] (esto puede variarse a gusto, de acuerdo con el tamaño de la imagen que quiera lograrse), con un incremento del 0.02 y una velocidad de 0.2. Aprovechando a, definimos en la celda A1 el punto (a, 3). Basta mover el deslizador para constatar que el nuevo punto A1 se mueve en simultáneo. Este punto A1 será un extremo de nuestra hilera: a partir de él, y hacia abajo, iremos colocando los nuevos puntos. El primero en agregarse será A2, que lo redefinimos escribiendo A2=A1+ (0,-0.03), lo cual puede interpretarse como una suma de complejos. Obsérvese que esta forma de definir A2 lo hace depender de a indirectamente, y al mover el deslizador, se desplaza A2. Toda la fila 2 de la hoja de cálculo tiene la información necesaria para que el punto A2 funcione correctamente, y además, éste se ha ubicado “un poquito más abajo” del punto A1. Si copiamos la fila 2 en las filas subsiguientes, obtendremos los puntos que necesitamos uno debajo del otro, y se heredarán las propiedades definidas. Seleccionando el rango desde A2 hasta K2, y tomando desde el cuadro azul del extremo inferior derecho, extendamos la selección hasta la línea 200 (puede ser más o menos, según se desee). Ya está casi listo. Si movemos el deslizador a, irá apareciendo el fractal; pero si activamos la animación automática del deslizador (con clic derecho sobre él), la imagen se irá formando lentamente.

ASI DEBIERA QUEDAR:

 

 Los pequeños coeficientes utilizados se pueden modificar, y eso hará variar la calidad y el tamaño de la imagen resultante.


 Ahora que hemos logrado un archivo en GeoGebra capaz de dibujar una imagen fractal, es el momento de guardarlo, para comenzar a “jugar” con él y así obtener muchísimas nuevas imágenes. Para ello deberemos ir variando algunos de los parámetros componentes. Podemos cambiar el polinomio inicial, ofreciendo nuevos puntos atractores (aunque se simplifica bastante la tarea si se consideran polinomios de tercer grado, de modo que haya sólo tres atractores, uno por color). También podemos alterar el polinomio inicial multiplicando el segundo término de la función generadora por un coeficiente (complejo); esos pequeños retoques pueden provocar grandes variaciones en las imágenes. Otro ajuste puede estar en el criterio de asignación de color, abriendo aquí la posibilidad a lo que sea que la imaginación permita concebir. Si se logra idear una función que asigne las componentes de color teniendo en cuenta el tema de los atractores, podemos lograr imágenes muy llamativas. 



No hay comentarios:

Publicar un comentario