Fractal Dragon de Heigway - MatLab
Fractal Dragon de Heigway - MatLab
Fractal Dragon de Heigway - MatLab
Se analizara de forma grca el origen del fractal, se crearan las correspondientes matrices de transformacin que dan origen al mismo y posteriormente se implementara una iteracin para el calculo de dicho fractal de forma computacional y
posteriormente su visualizacin .
Deiner L. Zapata Silva
[email protected]
ndice
1. CONOCIMIENTOS PREVIOS
1.1. Rotacin . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.1. Rotacin con respecto al origen . . . . . . . .
1.1.2. Rotacin con respecto a un punto P (x, y) . .
1.2. Escalamiento de un segmento de recta con razn 1 : r
2. DRAGN DE HEIGHWAY
2.1. Anlisis . . . . . . . . . . . .
2.1.1. Construccin . . . . .
2.2. Implementacin con MatLab
2.2.1. Ejecutando el cdigo .
3. TRIANGULO DE SIERPINSKI
3.1. Anlisis . . . . . . . . . . . .
3.1.1. Construccin . . . . .
3.2. Implementacin en MatLab .
3.2.1. Ejecutando el Cdigo
4. CURVA DE KOCH
4.1. Anlisis . . . . . . . . . . . .
4.1.1. Construccin . . . . .
4.2. Implementacin en MatLab .
4.2.1. Ejecutando el Cdigo
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
3
3
4
4
6
6
8
11
13
13
13
15
17
18
18
18
19
21
22
22
22
23
Ing.Mecatronica
6. CARACTERSTICAS DE UN FRACTAL
6.1. Autosimilitud . . . . . . . . . . . . . . . . . . . . . .
6.2. Dimensin fractal y dimensin Hausdor-Besicovitch
6.2.1. Dimensin Fractal DF . . . . . . . . . . . .
6.2.2. Dimensin de Hausdor-Besicovitch DH . .
6.2.3. Dimensin de fractales producidos por un IFS
6.3. Denicin por algoritmos recursivos . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
24
24
24
24
24
25
25
1.
Ing.Mecatronica
CONOCIMIENTOS PREVIOS
1.1. Rotacin
1.1.1. Rotacin con respecto al origen
Si tenemos un punto Q(x, y) y queremos trasladarla a un nuevo eje de coordenadas rotado
Q0 (x0 , y 0 ), tal como se muestra en la gura 1.1:
1 sin2 ()
+ y sin ()
cos ()
x0 = x cos () + y sin ()
y0
sin () cos ()
y
En resumen se dene la funcin Rot (Q, ), que devuelve el punto Q rotado grados con
respecto al origen de coordenadas:
cos () sin ()
Rot (Q, ) =
Q
sin () cos ()
Ing.Mecatronica
P Q1
r
Ing.Mecatronica
P = Q1 + r (Q2 Q1 )
En resumen se dene la funcin Esc (Q1, Q2 , r) que devuelve un punto Q2 , escalado con respecto
al segmento Q1 Q2 una razn r, donde Q1 es jo:
Esc (Q1 , Q2 , r) = Q1 + r (Q2 Q1 )
2.
Ing.Mecatronica
DRAGN DE HEIGHWAY
2.1. Anlisis
Este conjunto se dene como el lmite H de la sucesin de polgonos Hn dada por la Figura
. Este fue descubierto por el fsico John E. Heigway que junto con Bruce A. Banks y William
Harter estudiaron algunas propiedades de los polgonos aproximantes, entre ellas el hecho de que
stos nunca se cruzan.
2.1.1. Construccin
Primera iteracin (k = 1)
Q1 = Q1
Q02 = RotH (Q1 , Q2 , +45)
0
Q3 = Q2
Ing.Mecatronica
Donde RotH (Q1 , Q2 , +45) es una rotacin especial, ya que antes de rotar se escala el segmento
Q1 Q2 con razn 1 : cos (45), esto se realiza con el n de que el nuevo punto encontrado forme
un triangulo rectngulo notable 45,45,90 y luego aplicamos una rotacin con respecto a Q2 de
grados.
A continuacin se detallan los pasos:
1. Escalamiento: P1 = Esc (Q2 , Q1 , cos (45))
2. Rotacin de P1 45 con respecto a Q2 : Rotp (P1 , Q2 , cos (+45))
En resumen la funcin RotH (Q1 , Q2 , +45), queda denida por:
RotH (Q1 , Q2 , ) = Rotp (Esc (Q2 , Q1 , cos ()) , Q2 , cos ())
Segunda Iteracin (k = 2)
Q1
Q2
Q03
Q04
0
Q5
Tercera Iteracin
=
=
=
=
=
Q1
RotH (Q1 , Q2 , +45)
Q2
RotH (Q2 , Q3 , 45)
Q3
generamos otros 8 segmentos mas para los cuales debemos encontrar 9 puntos, de los cuales ya
tenemos 5.
Ing.Mecatronica
Q01
Q02
Q03
Q4
Q05
Q06
Q07
Q08
0
Q9
=
=
=
=
=
=
=
=
=
Q1
RotH (Q1 , Q2 , +45)
Q2
RotH (Q2 , Q3 , 45)
Q3
RotH (Q3 , Q4 , +45)
Q4
RotH (Q4 , Q5 , 45)
Q5
Generalizando
= Qn
n+1
, para n = 1, ..., 2k1 + 1
(+45)
Ing.Mecatronica
Funcion recursiva
% % Funcion recursiva
itera=14;
ang=45;
Q=[0 , 0 ;
0 , 1/2];
for h = 1:itera
AUX=[];
for n = 1:size(Q,1)
n
AUX(2*n-1,:) = Q(n,:);
if(n=size(Q,1))
AUX(2*n,:) = RotH( Q(n,:) , Q(n+1,:) , (-1)(n+1)*(ang) );
end
end
Q=AUX;
clear AUX;
end
% % Ploteo
clc;
disp('Nmero de iteraciones:');
disp(itera);
disp('Nmero de puntos:');
disp(2itera+1);
disp('Nmero de segmentos:');
disp(2itera);
disp('Ploteando el fractal');
for n = 1:size(Q,1)-1
linea([Q(n,:) , Q(n+1,:)] , 'b');
end
title('Dragon de Heighway')
La funcin linea, dibuja un segmento Q1 Q2 si la entrada es de la forma [Q1x , Q1y , Q2x , Q2y ] o
dibuja un punto * si la entrada es de la forma [Q1x , Q2y ]. A continuacin se muestra el cdigo
implementado en MatLab.
Ing.Mecatronica
Funcion linea
10
Ing.Mecatronica
(a) 3 iteraciones
(b) 5 iteraciones
(c) 10 Iteraciones
(d) 14 iteraciones
11
Ing.Mecatronica
Tal como se observa en todas las guras, el fractal desde la primera iteracin hasta la
iteracin k siempre va a tener dos puntos invariantes, estos son puntos extremos del
segmento de recta inicial (Para las guras anteriores es Q = [0, 0] [0, 0.5]).
Basados en esta observacin se podra generar dos fractales de tal forma que estos coincidan
como dos piezas de rompecabezas, tal como se muestra en la gura 2.7.
12
3.
Ing.Mecatronica
TRIANGULO DE SIERPINSKI
3.1. Anlisis
El tringulo de Sierpinski es un conjunto plano que puede ser obtenido por medios iterados
de muchas formas, una de ellas es generada a partir de un tringulo equiltero, removiendo una
cuarta parte de la gura que queda en el paso anterior. Otra forma es a partir de un conjunto
compacto y tres semejanzas del plano; una variacin de sta es usando solamente un punto como
conjunto inicial, sta construccin presenta la ventaja de ser ms econmica que otras, pues
representa a este conjunto como el mbito de una sucesin en R2 , por lo que puede aproximarse
con la exactitud deseada por medio de un conjunto nito de puntos. No debe perderse de vista la
utilidad que esto conlleva para representar objetos un poco ms naturales, pues este conjunto se
usa tambin como una proyeccin en el plano de cadenas de nuclotidos en el anlisis de secuencias
de ADN, dicha representacin se llama Representacin del Juego del Caos (CGR por sus siglas
en ingls) que permite una mejor comprensin de hilera de nuclotidos de ADN. Jerey en 1990
arma que este conjunto ha revelado visualmente estructuras previamente desconocidas
3.1.1. Construccin
Sea S0 un tringulo equiltero de lado 1 incluyendo su frontera. nase los puntos medios
de lado, de esta forma S0 queda dividido en 4 tringulos congruentes de lado 21 , elimine el
interior del tringulo central, el que est invertido, y sea S1 el conjunto formado. Proceda de la
misma forma con los tres tringulos restantes para formar a S2 . continuando con este proceso se
obtiene una sucesin decreciente anidad S0 S1 S2 ... de subconjuntos del plano. Al conjunto
S = lmn Sn =
n=0 Sn se le llama el tringulo de Sierpinski.
Primera Iteracin (k = 1)
Q12
Q23
Q13
=
=
=
Q1 +Q2
2
Q2 +Q3
2
Q1 +Q3
2
Deniendo una funcin f cuyas entradas son 3 puntos y cuya salida es un vector de 6 puntos,
los 3 ingresados y los 3 nuevos puntos calculados.
13
Ing.Mecatronica
Q1 + Q2
Q2 + Q3
Q1 + Q3
V = f ([Q1 , Q2 , Q3 ]) = Q1 ,
, Q2 ,
, Q3 ,
2
2
2
Para hacer esto mas sencillo desde el punto computacional, ordenamos los puntos en conjuntos
de tres, los cuales corresponden a un tringulo en particular.
Q1 Q12 Q13
= Q12 Q2 Q23
Q13 Q23 Q3
Q(1)
Deniendo una funcin F cuya entrada sean los tres puntos {Q1 , Q2 , Q3 } y cuya salida sean los
seis puntos, ordenados en grupos de tres correspondientes a cada tringulo, listo para la siguiente
iteracin.
Segunda Iteracin (k = 2)
Ahora a partir de estos 6 puntos, generamos otros 9 puntos adicionales, tres puntos por cada tringulo, sin tomar en cuenta el triangulo central.
Donde la dimensin de Q(2) es 9x3, ordenados en grupos de tres puntos listos para ser ingresados en la siguiente iteracin.
Tercera Iteracin (k = 3)
Los nuevos puntos son fciles de calcular, ya que la matriz Q(2) nos
da los puntos ordenados en conjuntos de tres, listos para ingresar a la funcin ya denida con
anterioridad, por lo tanto Q(3) queda denido como:
14
Ing.Mecatronica
Q(3)
F
F
= F
F
F
Q(2) (la
Q(2) (la
Q(2) (la
Q(2) (la
Q(2) (la
Q(2) (la
Q(2) (la
Q(2) (la
Q(2) (la
1)
2)
3)
4)
5 )
6 )
7 )
8 )
9)
Funciones annimas.
15
Ing.Mecatronica
Funcin recursiva
% % Funcion recursiva
itera=7;
P=[ 0
0;
1
0;
.5 sqrt(3) ];
Qx=[ P(:,1)' ];
Qy=[ P(:,2)' ];
for n = 1:itera
AUXx = []; AUXy = [];
for i = 1:size(Qx,1)
[n,i]
Vx=f(Qx(i,:)); Vy=f(Qy(i,:));
P=[
P ;
Vx(2) Vy(2) ;
Vx(4) Vy(4) ;
Vx(6) Vy(6)];
Vx=F(Vx); Vy=F(Vy);
AUXx = [AUXx ; Vx];
AUXy = [AUXy ; Vy];
end
Qx = AUXx;Qy=AUXy;
clear AUXx AUXy;
end
Como ya se menciono nicamente se pasa el vector P con los puntos para que sean dibujados.
Algoritmo 7
% % Ploteo
disp('Nmero de iteraciones:');
disp(itera);
disp('Nmero de puntos:');
disp(size(P,1));
disp('Ploteando el fractal');
for i = 1:size(P,1)
linea(P(i,:),'.r')
hold on;
end
axis([0 1 0 sqrt(3)]);
title('Triangulo de Sierpinsky')
16
Ing.Mecatronica
(a) 3 Iteraciones
(b) 5 Iteraciones
(c) 7 Iteraciones
(d) 10 Iteraciones
17
4.
Ing.Mecatronica
CURVA DE KOCH
4.1. Anlisis
Su forma mas conocida es el copo de nieve de Koch, fue inventada por el matemtico sueco
Helge Von Koch en 1906.
4.1.1. Construccin
Su construccin es sencilla, se parte de un segmento, se lo divide en tres partes iguales, se
reemplaza la parte central por dos partes de igual longitud haciendo un ngulo de /3 radianes
o 60 sexagesimales. Luego con los cuatro segmentos creados se procede de la misma manera,
dando 16 segmentos pequeos. Se procede as sucesivamente, sin nunca parar.
Primera Iteracin (k = 1)
Q01
Q0
2
Q04
Q0
5
= Q1
= Esc (Q1 , Q2 , 1/3)
= Esc (Q1 , Q2 , 2/3)
= Q2
Deniendo una funcin k, cuyas entradas son los puntos {Q01 , Q02 }y cuya salida es un arreglo
con 4 puntos equidistantes.
k (Q1 , Q2 ) =
1
2
= Q1 , Esc Q1 , Q2 ,
, Esc Q1 , Q2 ,
, Q2
3
3
Hallar el punto Q03 , requerir hacer unos clculos adicionales, el cual se encuentra rotando 60
el punto Q02 con respecto al punto Q04 . .
Q03 = Rotp Q02 , Q04 , 60
En resumen se denir una funcin K, cuyas entradas es un arreglo con los 4 puntos que
devuelve la funcin k y cuya salidas es un arreglo con los 5 puntos buscados.
K ([Q1 , Q2 , Q3 , Q4 ]) = [Q1 , Q2 , Rotp (Q2 , Q3 , 60) , Q3 , Q4 ]
18
Ing.Mecatronica
Segunda Iteracin (k = 2)
Ahora tenemos 5 puntos, los cuales se tomarn dos a dos consecutivos que denen un segmento y se pasaran a la funcin recursiva, obteniendo 5 puntos por cada
par de puntos ingresados.
Funciones annimas
La parte iterativa toma los puntos dos a dos los ingresa a las funciones ya denidas para
obtener los nuevos puntos, los cuales sobrescriben a los ya existentes.
19
Ing.Mecatronica
Parte iterativa
% % Funcin iterativa
itera = 6;
Q1 =[0,0]';
Q2 =[1,0]';
Q = [Q1,Q2];
for n = 1:itera
clc;n
AUX = [];
for nn = 1:size(Q,2)-1
kk = k(Q(:,nn),Q(:,nn+1));
AUX = [ AUX , K(kk) ];
end
Q = AUX;
end
disp('Ploteando el fractal');
% % Ploteo
for n = 1:size(Q,2)-1
linea([Q(:,n),Q(:,n+1)],'red');
end
title('Curva de Koch');
Ntese que Q1 = [0, 0]0 y Q2 = [0, 1]0 , son puntos, por lo tanto se dene con dos variables x
y y, ya que estamos trabajando en el plano.
Para dibujar simplemente extraemos los puntos dos a dos y ploteamos un segmente, tal como
se muestra a continuacin
Algoritmo 10
Funcin de Ploteo
disp('Ploteando el fractal');
% % Ploteo
for n = 1:size(Q,2)-1
linea([Q(:,n),Q(:,n+1)],'red');
end
title('Curva de Koch');
20
Ing.Mecatronica
(a) 1 Iteraciones
(b) 3 Iteraciones
(c) 5 Iteraciones
(d) 7 Iteraciones
21
5.
Ing.Mecatronica
Z2
+C
Z = Z3 + C
Z = Z4 + C
Z = Z2 +
Z = Z3 +
Z = Z4 +
Z = Z5 +
Z=
Z6
Z=
Z7
1
C
1
C
1
C
1
C
1
C
1
C
1
C,
etc
Z2
C6
Z 2 1.00001Z
C3
, Z0 =
Z = exp
(0, 0j)
Z 2 1.00001Z
C3
, Z0 =
Z = Sin Z C 2 , Z0 = (1, 0j)
Z
, Z0 = (0, 0j)
Z = Cos C
Z = Cos Z C 3 , Z0 = (0, 0j)
3
Z
, Z0 = (0, 0j)
Z = exp C
3
Z = exp CZ4 , Z0 = (0, 0j)
Z = Z 5 + C , etc.
Tipo Z = Z m +
Z = exp
(0, 0j)
1 , Z0 = (0, 0j)
+ C , Z0 = (0, 0j)
Z = Z2 +
C2
Z 2 +C
Z = Z2 +
C2
C 4 +0.1
Z = Z2 +
C2
C 4 0.25
, Z0 = (0, 0j)
, Z0 = (0, 0j)
1
C
, Z0
Z = Z 5 + C , C = (0.544, j0.000)
Z = Z 2 + C , C = (0.279, j0.000)
Z = Z 3 + C , C = (0.400, j0.000)
Z = Z 4 + C , C = (0.484, j0.000)
Z = Z 6 + C , C = (0.590, j0.000)
Z = Z 7 + C , C = (0.626, j0.000)
22
Ing.Mecatronica
Z = exp (Z) + C , C
(0.65, j0.00)
Z = exp Z 3 + C , C
(0.59, j0.00)
Z = exp Z 3 + C , C
(0.621, j0.00)
Z = Z 3 exp (Z) + C , C =
(0.33, j0.00)
Z = Z 4 exp (Z) + C , C =
(0.41, j0.00)
Z = Z exp (Z) + C , C
(0.04, j0.00)
Z = Z 2 exp (Z) + C , C =
(0.21, j0.00)
p
Z =
Sinh (Z 2 ) + C , C
(0.065, j0.122)
Z=
Z 2 +Z
ln(Z)
+ C , C = (0.268, j0.060)
4 +1
3Zn
3
4Zn
Z6 + Z3 1 = 0
Sin (Z) 1 = 0
Cosh (Z) 1 = 0
23
6.
Ing.Mecatronica
CARACTERSTICAS DE UN FRACTAL
6.1. Autosimilitud
Segn B.Mandelbrot, un objeto es autosimilar o autosemejante si sus partes tiene la misma
forma o estructura que el todo, aunque pueden presentarse a diferente escala y pueden estar
ligeramente deformadas.
Los fractales pueden presentarse en tres tipos de auto-similitud
Autosimilitud exacta
Este es el tipo mas restrictivo de auto-similitud: exige que el fractal parezca idntico a
diferentes escalas. A menudo la encontramos en fractales denidos por sistemas de funciones
iteradas (IFS).
Cuasi-autosimilitud
Exige que el fractal parezca aproximadamente idntico a diferentes escalas. Los fractales
de este tipo contienen copias menores y distorsionadas de s mismos. Matemticamente
D.Sullivan deni el concepto de conjunto cuasiauto-similar a partir del concepto de cuasiisometra. Los fractales denidos por relaciones de recurrencia son normalmente de este
tipo.
Autosimilitud estadstica
24
Ing.Mecatronica
Donde:
ci : designa el factor de contraccin de cada aplicacin contractiva del IFS.
Denidos por una relacin de recurrencia en cada punto del espacio (Por ejemplo el plano
complejo)
El conjunto de de Mandelbrot.
El conjunto de Julia.
El fractal de Lyapunov.
Fractales aleatorios
25