Entrada destacada

Distancia media de dos puntos en un cuadrado unitario

martes, 22 de mayo de 2018

Creación de Fractales con Funciones Afines mediante el Juego del Caos


En publicaciones anteriores sobre Transformaciones Afines (17 de Abril de 2018) y El Juego del Caos (24 Abril de 2018) dí los elementos básicos para que podamos construir fractales sencillos, la idea básica es la auto similitud propiedad fundamental de los fractales, la parte se parece al todo y la parte de la parte también se parece al todo y así al infinito.

Vamos a recrear la idea mediante un ejemplo, la construcción del Triángulo de Sierpinski.

Triángulo de Sierpinski

En honor al matemático polaco Waclaw Sierpinski.  Se construye a partir de un triángulo equilátero, aunque no necesariamente, al quitarle el triángulo interior con vértices los puntos medios de los lados del triángulo inicial, con los tres triángulos restantes se repite el proceso sucesivamente hasta el infinito.


Para construirlo por auto similitud, la parte se parece al todo, vemos que el triángulo está construido sobre el cuadrado [0,1]x[0,1]




y lo podemos descomponer en tres partes similares con él


La idea es por medio de funciones afines transformar el cuadrado inicial en cada uno de los cuadrados marcados como 1, 2 y 3 en la figura, para esto utilizamos el aplicativo que tenemos en la publicación de las funciones Afines, obtenemos los siguientes valores:



estos valores los hemos obtenido por ejemplo para el primer cuadrado



Estos valores los guardamos en las siguientes listas, donde p nos indica el porcentaje que corresponde a cada área del total de la figura y ran nos simula un dado que en este caso arroja como resultados {1,2,3} de acuerdo con los porcentajes p calculados según el área de cada región, así, si el cuadrado 1 tuviera el doble de área que el cuadrado 2, tendría el doble de posibilidades de salir como resultado en el dado simulado por ran.

a = {0.5, 0.5, 0.5};
b = {0, 0, 0};
c = {0, 0.5, 0.25};
d = {0, 0, 0};
e = {0.5, 0.5, 0.5};
f = {0, 0, 0.5};
area = {0.25, 0.25, 0.25};
total = Total[area];
p = Table[area[[n]]/total, {n, Length[area]}]
ran := RandomChoice[p -> Range[Length[area]], 1][[1]]

Ahora definimos

fun[n_, {x_, y_}] := {a[[n]] x + b[[n]] y + c[[n]], 
  d[[n]] x + e[[n]] y + f[[n]]}

donde n toma los valores 1, 2 o 3, definiéndonos tres funciones una para cada cuadrado, de acuerdo con los valores dados en la tabla anterior. Estas funciones se denominan un Sistema Iterado de Funciones o IFS por sus siglas en inglés, veamos que cada función es una contracción del cuadrado inicial pues su área es menor que la de dicho cuadrado.

Ya para construir el Triángulo de Sierpinski, definimos la función sig que aplica a un punto {x,y} fun1, fun2 o fun3 dependiendo del resultado del dado ran. Con ayuda del comando NestList aplicamos sig empezando en {1,1} un número de 100000 veces y graficamos los puntos:

sig[punto_] := fun[ran, punto]
ListPlot[NestList[sig, {1, 1}, 100000], PlotStyle -> PointSize[Tiny], 
 PlotRange -> Automatic, Axes -> True]



Este proceso basado en la idea del Juego del Caos se denomina Ping Pong Fractal y se le debe a Michael Barnsley, que corresponde a un proceso de tipo estocástico (probabilístico) y no determinístico para la construcción de fractales.

Los cuadrados no tiene que estar necesariamente dentro del cuadrado inicial pero sí tienen que ser de menor área, por ejemplo con los valores:



obtenemos  la siguiente gráfica:


Ejercicio

Construir el siguiente fractal




Para aprender más sobre Mathematica ingrese aquí sitio de aprendizaje de Wolfram o en mi website ustamathematica.wixsite.com/basicas


No hay comentarios.:

Publicar un comentario