Siguiente: Visualización usando VTK, Anterior: El paquete dynamics, Subir: dynamics [Índice general][Índice]
Usa el método llamado juego del caos, para producir fractales: se dibuja
un punto inicial (x0, y0) y luego se elije aleatoriamente
uno de los m puntos [
x1,
y1]
...[
xm, ym]
. Después se dibuja
un nuevo punto que estará en el segmento entre el último punto dibujado
y el punto que se acabó de elegir aleatoriamente, a una distancia del
punto elegido que será b veces la longitud del segmento. El
proceso se repite n veces. Este programa acepta las mismas
opciones de plot2d
.
Ejemplo. Gráfico del triángulo de Sierpinsky:
(%i1) chaosgame([[0, 0], [1, 0], [0.5, sqrt(3)/2]], [0.1, 0.1], 1/2, 30000, [style, dots]);
Dibuja n+1 puntos en una gráfica bidimensional (serie de tiempo), en que las coordenadas horizontales de los puntos son los números enteros 0, 1, 2, ..., n, y las coordenadas verticales son los valores y(n) correspondientes, obtenidos a partir de la relación de recurrencia
y(n+1) = F(y(n))
Con valor inicial y(0) igual a y0. F deberá ser una
expresión que dependa únicamente de la variable y (y no de n),
y0 deberá ser un número real y n un número entero positivo.
Esta función acepta las mismas opciones que plot2d
.
Ejemplo.
(%i1) evolution(cos(y), 2, 11);
Muestra, en una gráfica bidimensional, los primeros n+1 puntos de la sucesión definida a partir del sistema dinámico discreto con relaciones de recurrencia:
x(n+1) = F(x(n), y(n)) y(n+1) = G(x(n), y(n))
Con valores iniciales x0 y y0. F y G deben ser dos
expresiones que dependan únicamente de x y y. Esta función
acepta las mismas opciones que plot2d
.
Ejemplo. Evolución de un sistema dinámico discreto en dos dimensiones:
(%i1) f: 0.6*x*(1+2*x)+0.8*y*(x-1)-y^2-0.9$ (%i2) g: 0.1*x*(1-6*x+4*y)+0.1*y*(1+9*y)-0.4$ (%i3) evolution2d([f,g], [x,y], [-0.5,0], 50000, [style,dots]);
Y un acercamiento de una pequeña región en ese fractal:
(%i9) evolution2d([f,g], [x,y], [-0.5,0], 300000, [x,-0.8,-0.6], [y,-0.4,-0.2], [style, dots]);
Usa el método del Sistema de Funciones Iteradas (IFS, en inglés
Iterated Function System). Ese método es semejante al método descrito
en la función chaosgame
. pero en vez de aproximar el último punto
al punto elegido aleatoriamente, las dos coordenadas del último punto
se multiplican por una matriz 2 por 2 Ai correspondiente al punto
que fue elegido aleatoriamente.
La selección aleatoria de uno de los m puntos atractivos puede
ser realizada con una función de probabilidad no uniforme, definida
con los pesos r1,...,rm. Esos pesos deben ser dados en forma
acumulada; por ejemplo, si se quieren 3 puntos con probabilidades 0.2, 0.5 y
0.3, los pesos r1, r2 y r3 podrían ser 2, 7 y 10, o
cualquier otro grupo de números que tengan la misma proporción. Esta
función acepta las mismas opciones que plot2d
.
Ejemplo. El helecho de Barnsley, creado con 4 matrices y 4 puntos:
(%i1) a1: matrix([0.85,0.04],[-0.04,0.85])$ (%i2) a2: matrix([0.2,-0.26],[0.23,0.22])$ (%i3) a3: matrix([-0.15,0.28],[0.26,0.24])$ (%i4) a4: matrix([0,0],[0,0.16])$ (%i5) p1: [0,1.6]$ (%i6) p2: [0,1.6]$ (%i7) p3: [0,0.44]$ (%i8) p4: [0,0]$ (%i9) w: [85,92,99,100]$ (%i10) ifs(w, [a1,a2,a3,a4], [p1,p2,p3,p4], [5,0], 50000, [style,dots]);
Dibuja el diagrama de órbitas de una familia de sistemas dinámicos discretos unidimensionales, con un parámetro x; ese tipo de diagrama se usa para mostrar las bifurcaciones de un sistema discreto unidimensional.
La función F(y) define una secuencia que comienza con un valor
inicial y0, igual que en el caso de la función evolution
,
pero en este caso la función también dependerá del parámetro x, el
cual tomará valores comprendidos en el intervalo de x0 a xf,
con incrementos xstep. Cada valor usado para el parámetro x
se muestra en el eje horizontal. En el eje vertical se mostrarán
n2 valores de la sucesión y(n1+1),..., y(n1+n2+1),
obtenidos después de dejarla evolucionar durante n1 iteraciones
iniciales.
Ejemplo. Diagrama de órbitas para el mapa cuadrático
(%i1) orbits(x^2+a, 0, 50, 200, [a, -2, 0.25], [style, dots]);
Para ampliar la región alrededor de la bifurcación en la parte de
abajo, cerca de x =
-1.25, se usa el comando:
(%i2) orbits(x^2+a, 0, 100, 400, [a,-1,-1.53], [x,-1.6,-0.8], [nticks, 400], [style,dots]);
Dibuja un diagrama de escalera (o diagrama de red) para la sucesión definida por la ecuación de recurrencia
y(n+1) = F(y(n))
La interpretación y valores permitidos de los parámetros de entrada
es la misma que para la función evolution
. Un diagrama de
escalera consiste en una gráfica de la función F(y), junto con
la recta G(y) =
y. Se comienza por dibujar un
segmento vertical desde el punto (y0, y0) en la recta, hasta
el punto de intersección con la función F. En seguida, desde
ese punto se dibuja un segmento horizontal hasta el punto de
intersección con la recta, (y1, y1); el procedimiento se
repite n veces hasta alcanzar el punto (yn, yn). Esta
función acepta las mismas opciones que plot2d
.
Ejemplo.
(%i1) staircase(cos(y), 1, 11, [y, 0, 1.2]);
Siguiente: Visualización usando VTK, Anterior: El paquete dynamics, Subir: dynamics [Índice general][Índice]