Quit[];

Mecánica Clásica 2018 1c - turno A

Notebook mínimo para el problema del péndulo con soporte móvil (problema 1-17).

Sistema y coordenadas:

Preliminares (necesarios para los gráficos)

ejes = Graphics[{AbsoluteThickness[2], White,Line[{{-2, 0}, {2, 0}}],Line[{{0, -2}, {0,2}}]}]; (* ejes *)
config[y_, ϕ_]:= Graphics[{{AbsoluteThickness[4], Blue, Line[{{y, 0}, {y + Sin[ϕ], -Cos[ϕ]}}]},{Green, Disk[ {y + Sin[ϕ], -Cos[ϕ]}, 0.1]},
{Red, Disk[{f, 0}, 0.1]}}];

Solución numérica de las ecuaciones de movimiento. Implícitamente, (Subscript[P, y])= 0, (Subscript[m, 2])= 1 y g/l = 1. 
Experimenten cambiando los valores de (Subscript[m, 1]) y de las condiciones iniciales.

Clear[ϕ, y]
(* Condiciones iniciales *)
y0 = 0;
ϕ0 =π/2;
ϕp0 = 0.6;

m1 = 0.4;  
tmax = 30;

{sol, CrucesPorCero} = 
Reap[NDSolve[ {
(1-(((Cos[ϕ[t]])^2)/(1+m1))) ϕ''[t] +(( Sin[2ϕ[t]] ((ϕ'[t])^2))/(2(1+m1)))+ Sin[ϕ[t]]== 0, (* Ecuación para ϕ. ¡Deducir y revisar!*)
y'[t] ==-(1/(1+m1))Cos[ϕ[t]] ϕ'[t], (* Ecuación para y, habiendo tomado que el impulso total (Subscript[P, y]) = 0 *)

ϕ[0] == ϕ0,ϕ'[0] == ϕp0, y[0] == y0, (* Condiciones iniciales*)

WhenEvent[Sin[ϕ[t]/2] == 0 ,Sow[{t, Sign[ϕ'[t]]}]] (* Guarda los tiempos y la dirección de movimiento cuando la barra cruza el eje x *)

}, {ϕ, y}, {t, 0, tmax} ]];

Phi = sol[[1]][[1]][[2]];
Y = sol[[1]][[2]][[2]];
cruces = CrucesPorCero[[1]][[All, 1]]; (* Esta lista guarda los tiempos en los que la barra cruza por ϕ = 0 *)
sentido = CrucesPorCero[[1]][[All, 2]]; (* Esta lista guarda el sentido en que se mueve la barra en cada paso por ϕ = 0 *)
T = Differences[cruces][[1]]× Length[Tally[sentido]];

Plot[{Phi[t], Y[t]}, {t, 0,2T},PlotLegends->"Expressions", PlotStyle->Thick, ImageMargins->25]

La animación:

Ncuadros = 100;
Δ = T/Ncuadros; 
orb = ParametricPlot[{Y[τ]+Sin[Phi[τ]], -Cos[Phi[τ]]}, {τ, 0, T}, PlotStyle->{Dotted,Orange, Thick}]; (* órbita de la masa (Subscript[m, 2]) *)

Manipulate[ 
{f, g}  = {Y[t],Phi[t]};
Show[
ejes,orb,config[f, g],
AspectRatio-> Automatic,PlotRange-> 2{{-1, 1}, {-1, 1}},Axes-> False,Background-> Black,ImageSize-> 500
],
{t, 0, T-Δ, Δ, Appearance-> "Open"},TrackedSymbols:> {t}   
]