Oscilador de doble pozo - ALIPSO.COM: Monografías, resúmenes, biografias y tesis gratis.
Aprende sobre marketing online, desarrollo de sitios web gratis en Youtube
Suscribite para recibir notificaciones de nuevos videos:
Viernes 19 de Abril de 2024 |
 

Oscilador de doble pozo

Imprimir Recomendar a un amigo Recordarme el recurso

Resolución numérica en Fortran de las oscilaciones forzadas de un oscilador de doble pozo. Paso del régimen regular al caótico. Contiene codigo fuente Fortran 90 y 2 videos.

Agregado: 08 de ABRIL de 2012 (Por David) | Palabras: 2913 | Votar | Sin Votos | Sin comentarios | Agregar Comentario
Categoría: Apuntes y Monografías > Física >
Material educativo de Alipso relacionado con Oscilador doble pozo
  • Biografia y vida de Luis Dobles Segreda: Breve Biografia de Luis Dobles Segreda
  • Biografia y vida de Fabián Dobles: Breve Biografia de Fabián Dobles
  • Oscilador forzado: ...

  • Enlaces externos relacionados con Oscilador doble pozo


    Autor: David (volumenfasicotres@hotmail.com)

    Este apunte fue enviado por su autor en formato ZIP (WinZip). Para poder visualizarlo correctamente (con imágenes, tablas, etc) haga click aquí o aquí si desea abrirla en ventana nueva.

    ESTUDIO DE LAS SOLUCIONES NUMÉRICAS DEL OSCILADOR DE DOBLE POZO

    DAVID CASAS GARCÍA-MINGUILLÁN
    AMPLIACIÓN DE MÉTODOS NUMÉRICOS
    5º de Física


    Estudio de las soluciones numéricas del

    oscilador de doble pozo

    David Casas García-Minguillán

    Edi...cio C-2, Campus de Rabanales, Universidad de Córdoba, 14071 España

    9 de febrero de 2005

    Resumen

    En este artículo he calculado las soluciones numéricas, con distintas

    condiciones iniciales, de la ecuación de Du ng que rige el movimiento

    del oscilador de doble pozo. He utilizado el conocido método de Runge-

    Kutta de orden cuatro, programado en Fortran 90. Finalmente, comento

    de forma cualitativa el paso de oscilaciones regulares a caóticas en este

    oscilador no lineal.

    1.

    Introducción

    El oscilador de doble pozo es muy referenciado, como ejemplo de oscilador

    no lineal, en la literatura cientí...ca dedicada al estudio del caos, atractores ex-

    traños, soluciones aperiodicas, etc. Para determinadas soluciones se asemeja a

    un sistema cáotico, sensible a pequeñas perturbaciones externas y por tanto

    se comporta de forma impredecible, a pesar de estar de...nido por ecuaciones

    deterministas, como veremos a continuación[1].

    En este artículo he hecho una simulación por ordenador del comportamiento

    del oscilador, sin embargo, aparte de los estudios computacionales, hay estu-

    dios experimentales hechos sobre este oscilador los cuales con...rman el compor-

    tamiento caótico de este sistema[2].

    A continuación expondré la descripción matemática del problema, es decir,

    el sistema de ecuaciones diferenciales con sus condiciones iniciales. Despues co-

    mentaré el método de Runge-Kutta, el cual lo he programado usando Fortran

    90. Explicaré los programas y su funcionamiento. Calcularé tres casos particu-

    lares, y hablaré sobre los datos y grá...cas obtenidos, los cuales dan un indicio

    del paso del orden al caos y rehaciendo los calculos para un rango de valores

    de una variable, mostraré donde cambia bruscamente de un comportamiento a

    otro. Este salto se visualiza mucho mejor en los videos que se encuentran en

    el CD-ROM que acompaña a este artículo. Son animaciones hechas a partir de

    muchas grá...cas individuales1 , generadas con aproximadamente medio millón

    1 Realizadas a mano por el propio autor, lo que coloquialmente se denomina "trabajo de chinos".


    de puntos distintos, en total. Finalmente, en el apéndice, he dejado escritos los

    códigos de los programas. En el CD-ROM, aparte de los videos, está grabado

    este mismo artículo, los dos programas en código fuente, los resultados de cada

    apartado en sus carpetas correspondientes y dos archivos que corresponden a

    las referencias 1 y 2 de este artículo.

    2.

    Descripción matemática del problema

     

    El oscilador de doble pozo puede describirse matemáticamente mediante la
    llamada ecuación de Duffing:

    en ella b es el coeficiente de amortiguamiento que afecta a la varilla en su
    oscilación, F es la amplitud de la fuerza periódica que afecta a todo el sistema,
    y ! es su frecuencia. Esta ecuación diferencial de orden dos, se puede convertir
    en un sistema de tres ecuaciones de orden uno[3]:

    Sin embargo, en este artículo, ! la vamos a considerar como una constante
    más, en concreto igual a 1. Por lo que el sistema se reduce a dos ecuaciones2 :

    Con dos condiciones iniciales: x (t0) y v (t0). El sistema va a tener dos puntos
    estables, x = -1 y x = 1, y un punto inestable, x = 0, cuya posición en el sistema
    físico se puede ver en la figura 1.


    Figura 1: Situación de imanes y varilla.

    2. Dado que la frecuencia es el inverso del tiempo, la t que aparece dentro del coseno es adimensional: t(u:a:) = 1(T 1 ) t(T ) donde u.a. son unidades arbitrarias y T es la dimensión tiempo.


    3.

    3.1.

    Métodos de Runge-Kutta

    Introducción

    El método de Runge-Kutta es uno de los existentes dentro de la clase de

    métodos de un solo paso, los cuales se pueden describir genericamente mediante

    las ecuaciones:

    donde es una función que caracteriza el método.

    Para estimar la rapidez de convergencia de un método u otro, se dice que

    (4) es de orden p si para todo xi axib, y para todo h su...cientemente

    pequeño, existen constantes C y p tales que si

    La constante C depende, en general, de la solución y(x), de sus derivadas y de

    la longitud del intervalo sobre el que se busca la solución, pero es independiente

    de h[4].

    Dentro de estos métodos están los de la serie de Taylor de la solución y(x).

    Si y p+1) (x) es continua en [a; b] entonces el desarrollo viene dado por:

    3.2.

    Runge-Kutta

    La idea general de este método es sustituir las derivadas de f presente en

    (8), por combinaciones lineales de la propia función f (en diferentes puntos)

    para obtener el orden requerido.

    3


    Por ejemplo, un algoritmo de Runge-Kutta de orden 2 es el llamado método

    de Euler mejorado o de Heun:

    La mayor limitación de las fórmulas de Runge-Kutta es la cantidad de tra-

    bajo que requieren; este trabajo se mide en términos del número de veces que la

    función f se evalua. Para fórmulas de alto orden, el trabajo crece excesivamente;

    para los métodos de orden p con p = 1; 2; 3 y 4 el número de evaluaciones de f

    es justamente p, pero para p = 5, es necesario hacer 6 evaluaciones, para p = 6

    hay que hacer 7, para p = 7 ya son 9 las que se necesitan, para p = 8 son 11,

    etc.

    Como consecuencia, los métodos de orden menor a cinco con tamaño de paso

    pequeño son preferibles a los métodos de orden superior usando un tamaño de

    paso más grande.

    Los métodos más utilizados son los de orden p = 4 entre ellos la fórmula

    clásica de Runge-Kutta de orden 4, esta se escribe en la forma

     

    Este método es muy utilizado por su rapidez de convergencia y por su sen-

    cillez de fórmula. De hecho, este método es capaz de conseguir precisiones altas

    sin tener que tomar h tan pequeño como para hacer excesiva la tarea computa-

    cional o que los cálculos de redondeo planteen serias di...cultades[5].

    Cuando tenemos ecuaciones de orden superior a 1, se pueden reescribir en

    forma de sistemas de ecuaciones de primer orden, si tenemos derivadas de y

    hasta el orden m, el sistema sería:

    Escrito en notación vectorial, el algoritmo de Runge-Kutta de…nido en (10),
    con Y = (y1; :::; ym), F = (f1; :::; fm), = ( 1; :::; m), se escribiría[3]:


    Este será el método, que programaré para resolver numéricamente la ecuación del oscilador de doble pozo.

    4.

    4.1.

    Resultados

    Programa RK4Oscilador

    Este sencillo programa genera dos ficheros, posición.txt y velocidad.txt con

    los resultados de los ídem. Los datos que hay que introducir son el tiempo de ini-

    cio, el de finalización, el numero de divisiones del intervalo (con estos tres datos

    hemos establecido la longitud del paso, h), las condiciones iniciales de posición

    y velocidad, el coe...ciente de amortiguamiento y la amplitud de la fuerza. El

    comando TIMEF() sirve para evaluar el tiempo que tarda en ejecutarse la parte

    del programa situada entre las dos llamadas de esta orden. Además, al acabar,

    da en pantalla el ultimo valor del intervalo de la variable independiente 3 , la

    posición, la velocidad, el valor del paso, h y el tiempo que ha tardado la parte

    ejecutora del programa. A continuación expondré los tres casos que he estudia-

    do con este programa, explicando que valor he tomado para todas las variables,

    comentando las gra...cas del espacio de fases, de la posición y de la velocidad.

    4.1.1.

    Primer caso

    Los valores de las variables son los de la siguiente tabla:

    Intervalo [0; 100]
    Divisiones 10000 (h = 0;01)
    Posicion inicial 1
    Velocidad inicial 0
    coef. de amortiguamiento 0;25
    amplitud de la fuerza 0;22

    He elegido este primer caso para comprobar que no había cometido ningún
    error de bulto4 al escribir el algoritmo. Para ello elegí un software comercial que
    resolviese una EDO de forma numérica y contrasté los resultados con los de mi
    programa. Usé el Scientific WorkPlace 5.0, el mismo que me ha servido para
    redactar este artículo, y esta es la tabla que compara uno y otro:

    3 Es la variable temporal del sistema físico. No hay que confundirla con el tiempo que tarda en ejecutarse el programa, tal y como se ha comentado antes.
    4 En una prueba preliminar con otra función puse en el algoritmo h=2 donde tendría que haber puesto h. El resultado no fue catastro…co, pero convergía a la solución verdadera mucho más lentamente.

    desconozco que método numérico usa el SWP, hay que comentar, como se
    verá a continuación, que con estas condiciones el sistema oscila de forma estable
    alrededor del punto de equilibrio 1, de forma que las pequeñas diferencias de
    método y precisión no afectan significativamente al resultado. Posiblemente, en
    una región caótica no deban coincidir, aunque no lo he comprobado.
    Las grá…cas y la pantalla de ejecución son las siguientes:


    Figura 2

    A partir de estas grá…cas se puede concluir que con estos valores, el sistema,
    conforme avanza el tiempo, acaba describiendo un movimiento periódico en el
    espacio de fases con una órbita centrada en el punto de equilibrio 1:

    4.1.2. Segundo caso
    Los valores de las variables son los de la siguiente tabla:

    Las gráficas y la pantalla de ejecución son las siguientes:


    Figura 3

    Se ve en el espacio de fases que el sistema ya ha empezado a entrar en
    un comportamiento caótico, las órbitas, aunque oscilantes en torno a los dos
    puntos de equilibrio, -1 y 1, ya no son predecibles. Como se verá, cuando
    comente el otro programa utilizado, el punto en el que el sistema salta de la
    predictibilidad al caos, no depende sólamente de las variables propias del sistema
    (fuerza, coeficiente, posición y velocidad inicial) que elijamos, sino tambien de
    la forma en la que ejecutemos el programa (el paso h, el número de iteraciones,
    etc.)

    4.1.3. Tercer caso
    Los valores de las variables son los de la siguiente tabla:

    Las gráficas y la pantalla de ejecución son las siguientes:


    Figura 4

    Se ve en el espacio de fases que el sistema ya entró en comportamiento caótico
    puro con órbitas que convergen en unos tramos y divergen en otros de forma
    completamente impredecible. El salto de soluciones períodicas a no periódicas
    se realiza de forma brusca y es dificil precisar donde ocurre. Por eso modi…qué
    el programa principal, con el que he calculado estos tres casos, para estudiar un
    poco más en detalle como es el paso del orden al caos.

    4.2.

    Programa RK4ODP

    Quería visualizar como ocurría el cambio del orden al caos con los datos de los

    casos dos y tres, variando únicamente la fuerza. Por eso modi...qué el programa,

    aunque el algoritmo de Runge-Kutta es el mismo, lo único es que se evalua

    8


    más veces. Introduzo un intervalo de variación de la fuerza, y el programa hace

    los mismos cálculos que el anterior para cada valor de fuerza. Luego graba los

    resultados en matrices de tres dimensiones (el anterior los grababa en matrices

    de dos) y escribe los resultados en los siguientes ...cheros: fuerza.txt, posición.txt,

    velocidad.txt y fases.txt. Tanto este programa como el anterior graba todos los

    números en un único vector columna, ya que así se pueden grabar grandes

    cantidades de números sin problema. Luego el programa con el que construyo

    las grá...cas, el Microcal Origin 6.0, al importar el ...chero ASCII tiene la opción

    de interpretar los caracteres no numericos como inicio de una nueva columna,

    de forma que los ordena en formato de hoja de datos.

    Ejecuté el programa con un valor de inicio de la fuerza de 0;20 y un valor

    ...nal de 0;45 en 50 intervalos, con lo cual variaba en pasos de 0;005. En las

    siguientes cuatro grá...cas vemos como salta del orden al caos, en las posiciones,

    entre F = 0;26 y F = 0;265:


    Figura 5

    En el espacio de fases, con F = 0;26 y F = 0;265:


    Figura6

    Vemos la pantalla de ejecucion


    Figura 7

    El tiempo de ejecución es de 0.625 segundos, mientras que en los tres casos
    anteriores era de 0.016, lo cual es debido a que tiene que repetir el mismo
    algoritmo para todos los valores de la fuerza. Con las 51 gráficas generadas para
    posición y 51 para espacio de fases, he construido dos videos, donde la sensación
    de movimiento debida al cambio en cada grá…ca individual, ilustra mejor el
    comportamiento del oscilador.

    5.

    Conclusiones

    He obtenido las soluciones numéricas de la ecuación de Du ng aplicadad al

    oscilador de doble pozo usando el método de Runge-Kutta de orden 4. Apli-

    candolo a distintos casos, con diferentes valores de las variables y condiciones

    10


    iniciales, he mostrado como las soluciones cambian de la periodicidad a la ape-

    riodicidad e impredictibilidad. Cuando el sistema se encuentra en el régimen

    caótico, es muy sensible a las condiciones iniciales, de forma que hacía falta

    dar pasos muy ...nos para precisar donde ocurria. Eso es lo que he hecho, sin

    embargo hay que matizar que lo he hecho para una sección muy concreta del

    espacio de fases total, donde están representadas todas las variables y condi-

    ciones iniciales del problema, como son t, x, v, x (t0 ), v (t0 ), b, F , h, t0 , t1 e

    incluso ! que aunque la hemos obviado, también interviene en la ecuación orig-

    inal. Intuitivamente se puede adivinar el comportamiento del sistema, ya que

    si sabemos que parte de un punto estable, con poca velocidad inicial, con un

    coe...ciente amortiguador distinto de cero y una fuerza no muy grande, oscilará

    en torno al punto de equilibrio. Podemos por tanto, intentar adivinar que zonas

    pueden ser de interés para estudiarlas, ya que la simulación total, variando todo

    lo que puede variar, puede generar una cantidad astronómica de números, que

    para ser tratados necesitarían un gran tiempo de computación incluso en un

    superordenador.

    Sin necesidad de ser tan ambicioso este artículo muestra de forma didáctica

    y aproximada el paso del orden al caos en un oscilador no lineal.

    6.

    6.1.

    Apéndice

    Código del programa RK4Oscilador

    PROGRAM RK4Oscilador

    USE PORTLIB

    !Este es un programa para probar el metodo

    !de Runge-Kutta de orden 4 en el caso del

    !Oscilador de Doble Pozo

    IMPLICIT NONE

    REAL::b,h,f,t,x,v,tiempo,t0,t1

    INTEGER::i,j,n

    REAL,ALLOCATABLE,DIMENSION(:,:)::posres,velres

    REAL,DIMENSION(4)::k,l

    PRINT *, "Introduce los extremos del intervalo"

    PRINT *, "t0 y t1:"

    READ *,t0

    READ *,t1

    PRINT *, "Introduce las condiciones iniciales x(0) y v(0):"

    READ *,x

    READ *,v

    PRINT *, "Introduce las divisiones del intervalo, N"

    READ *,n

    PRINT *, "Introduce el coe...ciente de amortiguamiento, b"

    READ *,b

    PRINT *, "Introduce la amplitud de la fuerza, F"

    11


    READ *,f

    ALLOCATE(posres(n+1,2),velres(n+1,2))

    h=(t1-t0)/n

    t=t0

    posres(1,1)=t

    posres(1,2)=x

    velres(1,1)=t

    velres(1,2)=v

    tiempo=TIMEF()

    DO i=1,n

    k(1)=v

    l(1)=-b*v-x*x*x+x+f*cos(t)

    DO j=1,2

    k(j+1)=v+l(j)*h/2

    l(j+1)=-b*(v+l(j)*h/2)-(x+k(j)*h/2)*(x+k(j)*h/2)*(x+k(j)*h/2)+(x+k(j)*h/2)+f*cos(t+h/2)

    END DO

    k(4)=v+l(3)*h

    l(4)=-b*(v+l(3)*h)-(x+k(3)*h)*(x+k(3)*h)*(x+k(3)*h)+(x+k(3)*h)+f*cos(t+h)

    x=x+(h/6)*(k(1)+2*k(2)+2*k(3)+k(4))

    v=v+(h/6)*(l(1)+2*l(2)+2*l(3)+l(4))

    t=t0+h*i

    posres(i+1,1)=t

    posres(i+1,2)=x

    velres(i+1,1)=t

    velres(i+1,2)=v

    END DO

    tiempo=TIMEF()

    PRINT *,t,"t"

    PRINT *,x,"x"

    PRINT *,tiempo,"segundos"

    PRINT *,h,"h"

    OPEN(8,...le="posicion.txt")

    DO j=1,2

    DO i=1,n+1

    WRITE (8,*) posres(i,j)

    END DO

    WRITE (8,*) 'a'

    END DO

    CLOSE(8)

    OPEN(9,...le="velocidad.txt")

    DO j=1,2

    DO i=1,n+1

    WRITE (9,*) velres(i,j)

    END DO

    WRITE (9,*) 'a'

    END DO

    12


    CLOSE(9)

    END PROGRAM RK4Oscilador

    6.2.

    Código del programa RK4ODP

    PROGRAM RK4ODP

    USE PORTLIB

    !Este es un programa para probar el metodo

    !de Runge-Kutta de orden 4 en el caso del

    !Oscilador de Doble Pozo

    IMPLICIT NONE

    REAL::b,h,f,f0,f1,p,t,x,v,tiempo,t0,t1

    INTEGER::i,j,g,n,m

    REAL,ALLOCATABLE,DIMENSION(:,:,:)::posres,velres,fases

    REAL,ALLOCATABLE,DIMENSION(:)::fuerza

    REAL,DIMENSION(4)::k,l

    PRINT *, "Introduce los extremos del intervalo"

    PRINT *, "t0 y t1:"

    READ *,t0

    READ *,t1

    PRINT *, "Introduce las condiciones iniciales x(0) y v(0):"

    READ *,x

    READ *,v

    PRINT *, "Introduce las divisiones del intervalo temporal, n"

    READ *,n

    PRINT *, "Introduce el coe...ciente de amortiguamiento, b"

    READ *,b

    PRINT *, "Introduce el intervalo de la fuerza, F:"

    PRINT *, .a mplitud inicial y ...nal, f0 y f1:"

    READ *,f0

    READ *,f1

    PRINT *, "Introduce las divisiones del intervalo virial, m"

    READ *,m

    ALLOCATE(posres(n+1,2,m+1),velres(n+1,2,m+1),fases(n+1,2,m+1),fuerza(m+1))

    h=(t1-t0)/n

    t=t0

    p=(f1-f0)/m

    DO g=1,m+1

    posres(1,1,g)=t

    posres(1,2,g)=x

    velres(1,1,g)=t

    velres(1,2,g)=v

    fases(1,1,g)=x

    fases(1,2,g)=v

    END DO

    tiempo=TIMEF()

    13


    DO g=1,m+1

    f=f0+p*(g-1)

    DO i=1,n

    k(1)=v

    l(1)=-b*v-x*x*x+x+f*cos(t)

    DO j=1,2

    k(j+1)=v+l(j)*h/2

    l(j+1)=-b*(v+l(j)*h/2)-(x+k(j)*h/2)*(x+k(j)*h/2)*(x+k(j)*h/2)+(x+k(j)*h/2)+f*cos(t+h/2)

    END DO

    k(4)=v+l(3)*h

    l(4)=-b*(v+l(3)*h)-(x+k(3)*h)*(x+k(3)*h)*(x+k(3)*h)+(x+k(3)*h)+f*cos(t+h)

    x=x+(h/6)*(k(1)+2*k(2)+2*k(3)+k(4))

    v=v+(h/6)*(l(1)+2*l(2)+2*l(3)+l(4))

    t=t0+h*i

    posres(i+1,1,g)=t

    posres(i+1,2,g)=x

    velres(i+1,1,g)=t

    velres(i+1,2,g)=v

    fases(i+1,1,g)=x

    fases(i+1,2,g)=v

    END DO

    fuerza(g)=f

    END DO

    tiempo=TIMEF()

    PRINT *,t,"t"

    PRINT *,x,"x"

    PRINT *,f,"fuerza"

    PRINT *,tiempo,"segundos"

    OPEN(8,...le="posicion.txt")

    DO g=1,m+1

    DO j=1,2

    DO i=1,n+1

    WRITE (8,*) posres(i,j,g)

    END DO

    WRITE (8,*) 'a'

    END DO

    WRITE (8,*) 'pppp'

    END DO

    CLOSE(8)

    OPEN(9,...le="velocidad.txt")

    DO g=1,m+1

    DO j=1,2

    DO i=1,n+1

    WRITE (9,*) velres(i,j,g)

    END DO

    WRITE (9,*) 'a'

    14


    WRITE (9,*) 'vvvv'

    END DO

    END DO

    CLOSE(9)

    OPEN(10,...le="fases.txt")

    DO g=1,m+1

    DO j=1,2

    DO i=1,n+1

    WRITE (10,*) fases(i,j,g)

    END DO

    WRITE (10,*) 'a'

    WRITE (10,*) ''

    END DO

    END DO

    CLOSE(10)

    OPEN(11,...le="fuerza.txt")

    DO g=1,m+1

    WRITE (11,*) fuerza(g)

    END DO

    CLOSE(11)

    END PROGRAM RK4ODP

    Agradecimientos

    Agradezco a Mercedes Marín Beltrán su ayuda y consejos en la elaboración

    de este trabajo.

    Referencias

    [1] V Conferencia Nacional de Ciencias de la Computación (noviem-

    bre 98, Potosí), Sistemas no lineales. Conceptos, algoritmos y aplicaciones,

    José Manuel Gutiérrez

    [2] Chaos, Solitons & Fractals, Vol. 8, No 4, pp. 681-697, Routes to

    Chaos in a Magneto-Elastic Beam, R.C.A. Thompson, T. Mullin

    [3] Tema 2, 26-27, Apuntes de Ampliación de Métodos Numéricos

    (2005), M. Marín

    [4] Tema 2, 4-6, Apuntes de Ampliación de Métodos Numéricos (2005),

    M. Marín

    [5] Tema 2, 11-14, Apuntes de Ampliación de Métodos Numéricos

    (2005), M. Marín

    15

    Este apunte fue enviado por su autor en formato ZIP (WinZip). Para poder visualizarlo correctamente (con imágenes, tablas, etc) haga click aquí o aquí si desea abrirla en ventana nueva.


    Votar

    Ingresar una calificación para del 1 al 10, siendo 10 el máximo puntaje.

    Para que la votación no tenga fraude, solo se podrá votar una vez este recurso.

    Comentarios de los usuarios


    Agregar un comentario:


    Nombre y apellido:

    E-Mail:

    Asunto:

    Opinión:



    Aún no hay comentarios para este recurso.
     
    Sobre ALIPSO.COM

    Monografias, Exámenes, Universidades, Terciarios, Carreras, Cursos, Donde Estudiar, Que Estudiar y más: Desde 1999 brindamos a los estudiantes y docentes un lugar para publicar contenido educativo y nutrirse del conocimiento.

    Contacto »
    Contacto

    Teléfono: +54 (011) 3535-7242
    Email:

    Formulario de Contacto Online »