Este sitio utiliza cookies de Google para prestar sus servicios y analizar su tráfico. Tu dirección IP y user-agent se comparten con Google, junto con las métricas de rendimiento y de seguridad, para garantizar la calidad del servicio, generar estadísticas de uso y detectar y solucionar abusos.Más información

View site in english Ir a la página de inicio Contacta conmigo
sábado, 10 de septiembre de 2016

Series temporales complejas II, diagramas de recurrencia

Continuamos con la serie sobre caracterización gráfica de la complejidad en series temporales utilizando la aplicación auxiliar GraphStudy. En este artículo voy a mostrar cómo construir un gráfico con el que podemos distinguir de manera sencilla si una determinada función iterada genera series con una dinámica caótica, el diagrama de recurrencia.

Si quieres empezar la serie por el principio, este es el enlace al comienzo de la serie de artículos sobre caracterización gráfica de series temporales complejas. En este otro enlace os podéis descargar el ejecutable y el código fuente del proyecto GraphStudy, escrito en CSharp con Visual Studio 2013.

Continuando con la ecuación logística, que, recordemos, genera la siguiente serie:

Xn+1 = µXn(1-Xn)

Que presenta dinámica periódica cuando µ vale entre 3 y aproximadamente 3,5 y dinámica caótica a partir de este último valor, podemos generar el siguiente diagrama:

Diagrama de recurrencia vacío
Diagrama de recurrencia vacío

La parábola representa el valor de la función para los valores de Xn comprendidos entre el valor mínimo y máximo de la serie, dado un determinado valor de los parámetros. En el caso de GraphStudy, el procedimiento para obtener este gráfico es generar primero la serie temporal, con el botón Series, y, a continuación, usar el botón Web para generar el gráfico de recurrencia. En GraphStudy no se dibuja la parábola completa, sino solamente la parte de la misma en la que la función toma valores con los parámetros y valores iniciales dados.

En el gráfico, también trazamos una línea diagonal que representa los puntos en los que el eje de abcisas y ordenadas toman el mismo valor.

El eje horizontal corresponde con los valores de Xn, mientras que en el vertical representamos el valor de Xn+1. De esta manera, tomando cualquier punto Xn, podemos trazar una línea vertical hasta llegar al punto correspondiente a Xn+1, que se encuentra sobre la parábola.

A continuación, se traza una línea horizontal hasta la línea diagonal. La dirección de esta línea depende del lado de la parábola en la que nos encontremos. Con esto, nos situamos en el eje horizontal sobre la nueva Xn, y repetimos el proceso de trazar desde aquí una nueva línea vertical hasta el correspondiente punto Xn+1, sobre la parábola de nuevo.

Después de repetir este proceso numerosas veces, obtenemos una figura característica que nos indicará si la serie converge a un solo valor, presenta uno o más ciclos periódicos, o presenta trayectorias que parece que acabarán cubriendo todo el gráfico, lo que indica una dinámica caótica.

Para trazar un diagrama de recurrencia, primero debemos generar la serie con los parámetros y valor inicial deseados y, a continuación, pulsar con el botón izquierdo del ratón sobre el diagrama de recurrencia en el punto donde queremos empezar a trazar el diagrama. Podemos seleccionar el número de pasos que queremos realizar, escribiéndolo en el cuadro de texto Steps, y seleccionar el color con el que queremos trazar el gráfico.

Dándole al parámetro µ un valor dentro de la zona de dinámica estacionaria de la serie, por ejemplo 2,5, obtenemos el siguiente diagrama:

Diagrama de recurrencia para una serie estacionaria de la función logística
Serie estacionaria de la función logística

Donde puede comprobarse que la serie converge a un solo punto. Si ahora probamos un valor en la zona periódica, por ejemplo 3,3, obtenemos el siguiente diagrama:

Diagrama de recurrencia para una serie periódica de la función logística
Serie periódica de la función logística

Donde puede verse que la serie acaba trazando un cuadrado, rebotando continuamente entre dos valores fijos.

Si ahora le damos a µ un valor en la zona de dinámica caótica, por ejemplo, 3,8, obtenemos el diagrama característico de esta dinámica, una trayectoria errática que prácticamente pasa por todos los puntos del gráfico:

Diagrama de recurrencia para una serie caótica de la función logística
Serie temporal caótica de la función logística

La aplicación triangular

Podemos ver otro ejemplo de serie que presenta diferentes comportamientos en función de sus parámetros, la aplicación triangular. Esta es la fórmula:

Xn+1 = µ(1-2abs(0,5-Xn))

Dando a µ valores en el intervalo (0,1). Si damos a µ un valor menor que 0,5, el sistema será estacionario, la serie converge a un único valor. Sin embargo, con valores superiores a 0,5, siempre presentará dinámica caótica. Este es el diagrama base de esta aplicación:

Diagrama de recurrencia vacío de la aplicación triangular
La aplicación triangular

Con µ = 0,4 y un valor inicial para X de 0,0001, obtenemos una serie que converge a 0:

Serie estacionaria de la aplicación triangular
Serie estacionaria de la aplicación triangular

Y el correspondiente diagrama de recurrencia también lo indica:

Diagrama de recurrencia de una serie estacionaria de la aplicación triangular
Diagrama de recurrencia de una serie estacionaria de la aplicación triangular

Sin embargo, con µ = 0,9, la cosa cambia bastante. Esta es la serie, con un valor inicial de 0,1:

Serie temporal caótica de la función triangular
Serie caótica de la aplicación triangular

Y este es el diagrama de recurrencia correspondiente, que indica claramente la presencia de caos:

Diagrama de recurrencia de una serie caótica de la aplicación triangular
Diagrama de recurrencia de una serie caótica de la aplicación triangular

En el programa R, podemos dibujar estos gráficos de forma sencilla, por ejemplo, con el siguiente código:

fweb<-function(u,x) {
return (u*x*(1-x));
}
webdiagram<-function(p, steps=500) {
xn<-seq(0,1,length.out=1000);
xn1<-sapply(xn,fweb,u=p);
plot(xn,xn1,type='l',col="red");
lines(xn,xn,lty=4);
x0<-runif(1);
xn<-x0;
xn1<-0;
for (i in 1:steps) {
xf<-fweb(p, x0);
xn<-c(xn,x0);
xn1<-c(xn1,xf);
xn<-c(xn,xf);
xn1<-c(xn1,xf);
x0<-xf;
}
lines(xn,xn1);
}

Dentro de la función fweb podemos escribir las operaciones que van a generar la serie, el diagrama de recurrencia se dibuja con la función webdiagram. En este caso, estamos considerando funciones con un solo parámetro, pero es fácil modificar el código para utilizar un número arbitrario de parámetros.

Para terminar, os voy a recomendar un libro que es un clásico, donde podéis encontrar más sobre este y otros muchos temas: Fractals Everywhere, de Michael F. Barnsley.

El próximo artículo de la serie tratará sobre diagramas de fases y atractores.

Comparte este artículo: Compartir en Twitter Compártelo en Facebook Compartir en Google Plus Compartir en LinkedIn
Comentarios (0):
* (Su comentario será publicado después de la revisión)

E-Mail


Nombre


Web


Mensaje


CAPTCHA
Change the CAPTCHA codeSpeak the CAPTCHA code