Oscilaciones |
Introducción al régimen caótico
|
Ecuaciones del movimiento | |||
En esta página, se describe el movimiento de una bola que cae y rebota sobre un pistón que describe un Movimiento Armónico Simple en dirección vertical, de amplitud A y frecuencia angular ω. En la actividad que se propone, se tratará de conseguir que la bola rebote sincronizadamente con el movimiento del pistón. Este ejemplo, ilustra una propiedad importante de los aceleradores del tipo sincrotrón, denominada estabilidad en la fase, véase el artículo citado en las referencias Una segunda característica de este ejemplo, es la dependencia del movimiento posterior de la bola respecto de las condiciones iniciales de partida.
Ecuaciones del movimiento
El pistón describe un MAS de amplitud A y frecuencia angular ω. En el instante inicial t=0, el pistón parte del origen. Su posición y velocidad en función del tiempo t es yp=A·sen(ωt)
La bola se deja caer desde una altura h, con velocidad inicial nula en el instante t0, Su posición y velocidad en el instante t son yb=h-g(t-t0)2/2
La bola puede continuar rebotando sobre el pistón o bien, puede quedar pegada al pistón. En la página titulada "Caída libre y sucesivos rebotes" hemos demostrado que una bola que rebota sobre un plano horizontal precisa un tiempo finito para llegar al reposo después de infinitos rebotes. Si la aceleración del pistón -Aω2·sen(ωt) es mayor que la aceleración de la gravedad, la partícula no se pega al pistón, aunque podría rebotar y volver de nuevo al reposo sobre el pistón en un tiempo finito menor que el periodo de oscilación.
SincronizaciónLa cuestión que se plantea ahora es la de determinar la altura y0=h, y el instante t0, en el que se deja caer la bola para que el periodo P=tn+1-tn de la bola, el tiempo entre dos choques consecutivos, coincida con el periodo P=2π/ω de la oscilación del pistón (en color azul en la figura). Para ello, los choques tendrán lugar en la misma posición ye=yb=yp,
En otras palabras, la energía que pierde la bola en el choque como consecuencia de su inelasticidad debe ser igual a la ganancia en energía cinética después del impacto. ub-vp=-e(-ub-vp) Como la bola sale y llega a la misma posición empleando un tiempo de vuelo P, su velocidad antes y después del choque valdrá Para alcanzar esta velocidad, la bola tiene que partir de la altura h, de modo que llegue a la posición ye de choque con velocidad ub empleando un tiempo P/2 Como el pistón parte del origen en el instante inicial t=0, alcanzando una velocidad vp= A·ω·cos(ωte) en el instante te del choque La posición de encuentro es ye=yb=yp=A·sen(ωte) La bola se debe liberar con velocidad inicial cero, desde la altura En el instante t0 tal que el tiempo de vuelo hasta que se encuentra con el pistón sea P/2, es decir, te-t0=P/2 Puesto que k<1 la amplitud A tiene que cumplir la siguiente condición
ActividadesSe introduce
Se pulsa el botón titulado Inicio Se sitúa la bola en la altura inicial h, y el pistón empieza a moverse entre las posiciones –A y +A. Cuando se pulsa el botón Empieza, la bola se deja caer en el instante t0, que se señala en la parte superior derecha del applet. Se observa el movimiento de caída de la bola y los sucesivos rebotes sobre el pistón. En la parte derecha del applet, se representa la posición de la bola y del pistón en función del tiempo t. Ejemplo: Introducimos los siguientes datos
Se pulsa el botón titulado Inicio Observamos el movimiento del pistón, la bola permanece en su posición inicial Esperamos un tiempo t0=0.69 s y pulsamos el botón titulado Empieza
Se vuelve a repetir de nuevo proceso, para calcular el instante en el que se produce el segundo choque, y así sucesivamente. Sincronización Con los datos
Calculamos la altura h y el instante t0 en el que debe se soltar la bola La frecuencia angular ω=2π/P=2π rad/s el parámetro k vale la bola se debe liberar con velocidad inicial cero, desde la altura en el instante inicial t0 Se obtiene el mismo resultado si la bola se libera en el instante t0 que en el instante t0 más un número de periodos P, por ejemplo, en el instante t0=1-0.31=0.69, 1.69 s, etc. Para observar la sincronización se introduce
Se pulsa el botón titulado Inicio Observamos que el pistón se pone en movimiento, oscilando entre las posiciones +10 y -10 cm. En la parte superior derecha del applet, se muestra el tiempo en segundos. Cuando se llegue a una cantidad próxima a 0.69 s se pulsa el botón titulado Pausa. Se pulsa varias veces el botón Paso hasta que aparezca 0.69 s en el contador de tiempo. Se pulsa el botón titulado Empieza y a continuación el botón Pausa (Continua) para que prosiga el movimiento.
|
La ruta hacia el caosVamos a examinar el comportamiento de la bola, después de efectuar N choques con el pistón, para ello vamos a modificar las condiciones iniciales de partida de la bola y del pistón del siguiente modo:
El pistón describe un MAS de amplitud A y frecuencia angular ω. Su posición y velocidad en función del tiempo t es yp=A·sen(ωt+φ) siendo φ la fase inicial del movimiento
Después del choque La posición y la velocidad de la bola en el intervalo t1<t<t2 serán yb=y1+v1(t-t1)-g(t-t1)2/2 El resto del cálculo es el mismo que en el apartado "Ecuaciones del movimiento" ActividadesSe introduce
Se pulsa el botón Empieza. Se observa el movimiento de caída de la bola y los sucesivos rebotes sobre el pistón. En la parte derecha del applet, se representa la posición de la bola y del pistón en función del tiempo t. Se sugiere al lector que experimente con el programa interactivo, cambiando la fase para valores fijos de la velocidad inicial, de la frecuencia y del coeficiente de restitución. Se cambia ligeramente el coeficiente de restitución, manteniendo fijos los otros parámetros y así, sucesivamente.
|
Comportamiento de la bola cuando varía la frecuencia angular ω.Más que el movimiento de la partícula a lo largo de un determinado tiempo, interesa el comportamiento de la bola en un intervalo de frecuencias, de amplitudes de oscilación del pistón, de coeficientes de restitución de la bola en su choque con el pistón, etc. En el applet que viene a continuación, se examina el comportamiento de la bola cuando se cambia la frecuencia angular ω, de oscilación del pistón. Se hace que la bola rebote 100 veces sobre el pistón sin tomar ninguna medida, y a continuación se mide el intervalo de tiempo entre dos choques consecutivos Δt=tn+1-tn, durante otros 100 choques. Se representa en el eje horizontal la frecuencia ω, y en el eje vertical la diferencia de tiempos Δt Estos son los resultados producidos por la rutina escrita en lenguaje C que viene en la página http://chaos.phy.ohiou.edu/~thomas/download/bball.c, adaptada por el autor al lenguaje Java para correr en un applet. Datos:
Podemos observar las bifurcaciones y la transición hacia el estado caótico El autor ha elaborado un programa interactivo que no reproduce los resultados mostrados en la figura adjunta. Se suministra el código fuente como punto de partida para que pueda ser mejorado por el lector interesado Se introduce
Se pulsa el botón Empieza.
|
Para los apartados "Ecuaciones del movimiento" y "Sincronización"
Alvarez, Luis W., Senecal G. Mechanical analog of the synchrotron, illustrating phase stability and two-dimensional focusing. Am. J. Phys. 43 (4) April 1972, pp. 293-296
Para el apartado "La ruta hacia el caos"
Tufillaro N. B., Mello T. M., Choi Y. M. Albano A. M. Period doubling of a bouncing ball, J. Physique 47 Septembre (1986) pp. 1477-1482
http://chaos.phy.ohiou.edu/~thomas/chaos/bouncing_ball.html
Se proporciona el código fuente, para calcular la trayectoria de la bola
public class Impacto { double wf; double fase; double resti; double amplitud=0.1; double yIni; double vbIni, vb; double t, t0; final double dt=0.01; double yPiston; double yb; int nChoques; //RAÍZ DE UNA ECUACIÓN TRASCENDENTE final double CERO=1e-10; final double ERROR=0.00001; final int MAXITER=200; int tipo=1; public Impacto(double wf, double fase, double resti, double v0) { this.wf=wf; this.fase=fase; this.resti=resti; //primer choque en el instante t=0; t=0.0; t0=0.0; nChoques=0; yPiston=yb=yIni=amplitud*Math.sin(fase); //v0 es una velocidad negativa para que choque con la plataforma vb=vbIni=(1+resti)*amplitud*wf*Math.cos(fase)+v0*resti; tipo=1; } void mover(){ t+=dt; yPiston=amplitud*Math.sin(wf*t+fase); switch(tipo){ case 1: yb=yIni+vbIni*(t-t0)-4.9*(t-t0)*(t-t0); vb=vbIni-9.8*(t-t0); if(yb<yPiston){ //choque double tChoque=puntoMedio((t-dt), t); yPiston=amplitud*Math.sin(wf*tChoque+fase); yb=yIni+vbIni*(tChoque-t0)-4.9*(tChoque-t0)*(tChoque-t0); yIni=yb; //velocidad después del choque vbIni=(1+resti)*amplitud*wf*Math.cos(wf*tChoque+fase)- (vbIni-9.8*(tChoque-t0))*resti; nChoques++; if((tChoque-t0)<dt){ tipo=2; } t0=tChoque; } break; case 2: //la bola pegada al pistón yb=yPiston; vb=amplitud*wf*Math.cos(wf*t+fase); break; default: break; } } //procedimiento del punto medio double puntoMedio(double a, double b) { double m, ym; int iter=0; do{ m=(a+b)/2; ym=f(m); if(Math.abs(ym)<CERO) break; if(Math.abs((a-b)/m)<ERROR) break; if((f(a)*ym)<0) b=m; else a=m; iter++; }while(iter<MAXITER); return m; } double f(double tt){ double y=-amplitud*Math.sin(wf*tt+fase)+yIni+vbIni*(tt-t0)-4.9*(tt-t0)*(tt-t0); return y; } } |
Esta clase calcula la diferencia de tiempos entre dos choques consecutivos.
public class Impacto { double wf; double fase; double resti; double amplitud=0.1; double yIni; double vbIni, vb, v0; double t, t0; final double dt=0.01; double yPiston; double yb; int nChoques; //RAÍZ DE UNA ECUACIÓN TRASCENDENTE final double CERO=1e-10; final double ERROR=0.00001; final int MAXITER=200; public Impacto(double wf, double fase, double resti, double v0) { this.wf=wf; this.fase=fase; this.resti=resti; this.v0=v0; //primer choque en el instante t=0; t=0.0; t0=0.0; nChoques=0; yPiston=yb=yIni=amplitud*Math.sin(fase); //v0 es una velocidad negativa para que choque con la plataforma vb=vbIni=(1+resti)*amplitud*wf*Math.cos(fase)+v0*resti; } void setFrecuencia(double wf){ this.wf=wf; //situación inicial de partida con otra frecuencia t=0.0; t0=0.0; nChoques=0; yPiston=yb=yIni=amplitud*Math.sin(fase); vb=vbIni=(1+resti)*amplitud*wf*Math.cos(fase)+v0*resti; } double mover(){ while(true){ t+=dt; yPiston=amplitud*Math.sin(wf*t+fase); yb=yIni+vbIni*(t-t0)-4.9*(t-t0)*(t-t0); vb=vbIni-9.8*(t-t0); if(yb<yPiston){ //choque double tChoque=puntoMedio((t-dt), t); yPiston=amplitud*Math.sin(wf*tChoque+fase); yb=yIni+vbIni*(tChoque-t0)-4.9*(tChoque-t0)*(tChoque-t0); yIni=yb; //velocidad después del choque vbIni=(1+resti)*amplitud*wf*Math.cos(wf*tChoque+fase)- (vbIni-9.8*(tChoque-t0))*resti; nChoques++; if((tChoque-t0)<dt){ return -1; //la bola y el pistón están pegadas } double difTiempo=tChoque-t0; t0=tChoque; return difTiempo; } } } //procedimiento del punto medio double puntoMedio(double a, double b) { double m, ym; int iter=0; do{ m=(a+b)/2; ym=f(m); if(Math.abs(ym)<CERO) break; if(Math.abs((a-b)/m)<ERROR) break; if((f(a)*ym)<0) b=m; else a=m; iter++; }while(iter<MAXITER); return m; } double f(double tt){ double y=-amplitud*Math.sin(wf*tt+fase)+yIni+vbIni*(tt-t0)-4.9*(tt-t0)*(tt-t0); return y; } } |