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

Quit[];

Problema 1.5. Solución numérica. Versión mínima.

Sistema y coordenadas:

Preliminares (ejecutar):

ejes = Graphics[{ 
{AbsoluteThickness[2], LightBlue, Arrow[{{-1.5, 0}, {1.5, 0}}], Arrow[{{0, 1.5}, {0,-1.5}}]},
{White,Text[Style["𝓍", 30],{0.2,-0.9×1.5}]},
{White,Text[Style["𝓎", 30],{0.9 1.5,0.2}]}}
];

discos[ϕ_]:= Graphics[{
{AbsoluteThickness[2], Blue, Line[{{-Sin[ϕ], 0}, {0, -Cos[ϕ]}}]},
{Green, Disk[ {-Sin[ϕ], 0}, 0.05]},
{Red, Disk[{0, -Cos[ϕ]}, 0.05]}}
];

Solución numérica de las ecuaciones de movimiento..
Experimenten cambiando los valores de μ y de las condiciones iniciales.

(* Condiciones iniciales *)
ϕ0 = ((5π)/6);
ϕp0 = 0;

(* Relación entre las masas μ = (Subscript[m, 2])/(Subscript[m, 1]) *)  
μ = 15; 
tmax = 50; 

sol2 =Reap[ 
NDSolve[
{
(μ + (1-μ) ((Sin[ϕ[t]])^2)) ϕ''[t] + (1-μ) Sin[2ϕ[t]] ((ϕ'[t])^2)+ Sin[ϕ[t]] == 0, (*Ecuación de movimiento *)
ϕ[0] == ϕ0, ϕ'[0] == ϕp0, (* Condiciones iniciales *)
WhenEvent[Sin[ϕ[t]/2] == 0, Sow[t]]  (* Registra los tiempos de paso de la barra por ϕ = 0 *)
},
ϕ, {t, 0, tmax}  
]
];

Phi = sol2[[1]][[1]][[1]][[2]]; (* Solución numérica ϕ(t) asignada a la variable Phi *)
Tiempos0 = sol2[[2]][[1]];   (* Tiempos de cruce de la barra por ϕ = 0  *)
Periodo =2 Differences[Tiempos0][[1]];

Animación:

Ncuadros = 100;
Δ = Periodo/Ncuadros;

Manipulate[
ϕpr = Phi[t];
Show[ejes, discos[ϕpr],
AspectRatio-> Automatic,PlotRange->1.6{{-1, 1}, {-1, 1}},Axes-> False, Background-> Black,ImageSize-> 400
],
{t, 0, Periodo-Δ,Δ, Appearance-> "Open"} 
]

La función ϕ[t]

Plot[
Phi[t], {t, 0, tmax},

PlotStyle->AbsoluteThickness[3],
Background->Black,
AxesStyle->White,
TicksStyle->Directive[White, 16],
ImageSize->600, 
AxesLabel->{"t", "ϕ"},
LabelStyle->20,
ImageMargins->40
]