Oscilaciones |
Osciladores (II) Máquina de Atwood |
El vector posición, velocidad y aceleración en coordenadas polares | |||||||
Las poleas tienen masa despreciable y la cuerda es inextensible, suficientemente larga para no preocuparnos de que el contrapeso M choque con la polea. Supondremos que la cuerda está siempre tensa y no tendremos en cuenta el rozamiento entre la cuerda y las poleas y en el movimiento de las masas puntuales m y M, por lo que la energía total del sistema de dos partículas permanece constante.
El vector posición, velocidad y aceleración en coordenadas polaresEstablecemos un Sistema de Referencia Ortonormal, cuyos ejes son la dirección radial y la dirección perpendicular a la radial. Los vectores unitarios se señalan en la figura de la derecha. Vector posición El vector posición de la partícula oscilante es Vector velocidad El vector velocidad es tangente a la trayectoria Expresamos la velocidad de la partícula en coordenadas polares Calculamos las componentes rectangulares de los vectores unitarios Calculamos las derivadas de los vectores unitarios Las componentes del vector velocidad v en coordenadas polares son, Vector aceleración Derivamos la velocidad con respecto del tiempo Las componentes del vector aceleración en coordenadas polares valen
Ecuaciones del movimientoLas fuerzas que actúan sobre la partícula que oscila de masa m son:
Ecuación del movimiento en la dirección radial mgcosθ-T=mar Ecuación del movimiento en la perpendicular a la radial -mgsenθ=maθ Las fuerzas que actúan sobre el contrapeso de masa M son:
Si y es la posición del contrapeso. La ecuación del movimiento es Al alejarse la masa m aumenta r, el contrapeso M asciende, disminuye y, de modo que Eliminamos T entre la primera y tercera ecuación, llegamos a un sistema de dos ecuaciones diferenciales de segundo orden Llamando μ=M/m
Principio de conservación de la energíaSituamos el nivel cero de energía potencial en la posición de las poleas La energía potencial de los dos cuerpos es Ep=-Mgy-mg·rcosθ La energía cinética es Teniendo en cuenta que y y r están relacionados, ya que la cuerda es inextensible y+r=L=cte. La energía total se escribe Podemos eliminar el término constante MgL con una elección conveniente del nivel cero de energía potencial. Dividiendo entre m Resolvemos numéricamente el sistema de dos ecuaciones diferenciales de segundo orden con las siguientes condiciones iniciales, en el instante t=0, la posición inicial es r=r0, θ=θ0, y las componentes de la velocidad inicial son (dr/dt)0, r0(dθ/dt)0 Calcularemos en cada instante la energía total e y la compararemos con la energía inicial e0. Denominamos al cociente tanto por ciento de error. Cuando la energía e difiere de e0 de modo que el cociente es mayor que la unidad, el programa interactivo se detiene, la trayectoria calculada puede que se desvíe significativamente de la real.
ActividadesSe introduce
Se pulsa el botón titulado Empieza Se dibuja la trayectoria de la partícula oscilante Opcionalmente, se puede realizar ciertos ajustes:
El programa interactivo permite obtener una gran variedad de trayectorias: La partícula oscilante se moverá alrededor del origen si M>m, es decir, si μ>1. En caso contrario, la partícula se escapará. Introduciremos valores de μ>1 La posición inicial habitual es r0>0 entre 0 y 2 y θ0=90º. La partícula oscilante está en el eje X. La distancia inicial al origen r0>0, ya que para r0=0 tenemos una singularidad en la segunda ecuación diferencial. La velocidad inicial habitualmente es cero, (dr/dt)0=0, (dθ/dt)0=0, pero se puede dar un valor a la componente radial (dr/dt)0, cuando la partícula parte de una posición cercana al origen r0≈0. El programa interactivo se detiene cuando la partícula oscilante llega al origen r<0 o cuando el procedimiento numérico, no resuelve adecuadamente las ecuaciones del movimiento y la energía de la partícula se desvía apreciablemente de la energía inicial Probar los siguientes casos:
|
Tufillaro N. B., Abott T. A. Griffiths D. J. Swinging Atwood’s machine. Am. J. Phys. 52 (10) October 1984, pp. 895-903
public abstract class RungeKutta { double h; RungeKutta(double h){ this.h=h; } void setPaso(double dt){ this.h=dt; } public void resolver(Estado e){ //variables auxiliares double k1, k2, k3, k4; double l1, l2, l3, l4; double q1, q2, q3, q4; double m1, m2, m3, m4; //estado inicial double x=e.x; double y=e.y; double vx=e.vx; double vy=e.vy; double t=e.t; k1=h*vx; l1=h*f(x, y, vx, vy, t); q1=h*vy; m1=h*g(x, y, vx, vy, t); k2=h*(vx+l1/2); l2=h*f(x+k1/2, y+q1/2, vx+l1/2, vy+m1/2, t+h/2); q2=h*(vy+m1/2); m2=h*g(x+k1/2, y+q1/2, vx+l1/2, vy+m1/2, t+h/2); k3=h*(vx+l2/2); l3=h*f(x+k2/2, y+q2/2, vx+l2/2, vy+m2/2, t+h/2); q3=h*(vy+m2/2); m3=h*g(x+k2/2, y+q2/2, vx+l2/2, vy+m2/2, t+h/2); k4=h*(vx+l3); l4=h*f(x+k3, y+q3, vx+l3, vy+m3, t+h); q4=h*(vy+m3); m4=h*g(x+k3, y+q3, vx+l3, vy+m3, t+h); x+=(k1+2*k2+2*k3+k4)/6; vx+=(l1+2*l2+2*l3+l4)/6; y+=(q1+2*q2+2*q3+q4)/6; vy+=(m1+2*m2+2*m3+m4)/6; t+=h; //estado final e.x=x; e.y=y; e.vx=vx; e.vy=vy; e.t=t; } abstract public double f(double x, double y, double vx, double vy, double t); abstract public double g(double x, double y, double vx, double vy, double t); } public class Oscilador extends RungeKutta{ double mu; // longitud péndulo/radio tierra Oscilador(double mu, double h){ super(h); this.mu=mu; } public double f(double x, double y, double vx, double vy, double t){ double z=(x*vy*vy+9.8*(Math.cos(y)-mu))/(1+mu); return z; } public double g(double x, double y, double vx, double vy, double t){ double z=-(2*vx*vy+9.8*Math.sin(y))/x; return z; } public double energia(double x, double y, double vx, double vy){ double z=mu*vx*vx/2+(vx*vx+x*x*vy*vy)/2+9.8*x*(mu-Math.cos(y)); return z; } } public class Estado { public double t; public double x; public double y; public double vx; public double vy; public Estado(double t, double x, double y, double vx, double vy) { this.t=t; this.x=x; this.y=y; this.vx=vx; this.vy=vy; } } //objetos Estado estado=new Estado(0.0, x0, y0, V0x, V0y); Oscilador oscilador=new Oscilador(mu, 0.005); //resolución numérica oscilador.resolver(estado); double energia=oscilador.energia(estado.x, estado.y, estado.vx, estado.vy); error=Math.abs((energia-eInicial)*100/eInicial); if(error>1.0 || estado.x<0.0){ //detiene el movimiento } |