Cykloidální kyvadlo

Toto je cykloida
V nejvyšším bodě bude upevněn závěs kyvadla navíjející se během pohybu na cykloidu

ParametricPlot[ {Sin[2s]-2s, Cos[2s]}, {s,-Pi,Pi} ,Frame->True]

{X,Y} = {Sin[2s]-2s, Cos[2s]}

Tečnu zkonstruujeme jako 1. diferenciál

{dx,dy} = Series[ {X,Y}, { s,s1,1} ]//Normal

Pro kreslení obrázku budeme potřebovat souřadnice koncových bodů úsečky tečné k cykloidě

cara  = { 
{dx,dy} /. s->s1,
{dx,dy} /. s->s1+ds}

{Line[cara],Point[cara]}/.{s1->Pi/5,ds->2/3}//N;
ParametricPlot[ {X,Y}, {s,-Pi/2,Pi/2} ,Frame->True,Epilog->%,ImageSize->600 ]

Nyní potřebujeme spočíst délku tečného vektoru
a integrací určit, jak dlouhý je oblouk křivky mezi 0 a s

cara[[2]]-cara[[1]]
%.%/. s1->s//Simplify
dLds =  Simplify [Sqrt[ %/ds^2 ],Assumptions->Sin[s]>0]
navinuto=Integrate [ dLds, {s,0,s} ]

Podle rady Ch. Huygense zvolíme celkovou délky závěsu tak, aby se navinul pro s=Pi/2

celkem = navinuto/.s->Pi/2

Délku přepočítáváme na interval parametru s vztahem: ds = dL/dLds , proto

zbytekZavesu = cara /. {s1->s,ds ->( celkem-navinuto) /dLds }//Simplify

Obrázkem rozfázovaného pohybu zkontrolujeme, že vše sedí

Line[ Table[ zbytekZavesu, {s,-Pi/2,Pi/2,Pi/32}] ]//N ;
ParametricPlot[ {X,Y}, {s,-Pi,Pi} ,Frame->True,
Epilog->{Orange,Thin,%},ImageSize->600,PlotRange->{{-4,4},{-Pi,1}} ,GridLines->Automatic]

Nyni známe kartézské souřadnice závaží, jěště zavedeme jednotku délky a

{x,y} = a zbytekZavesu[[2]]//FullSimplify

Následuje obvyklý postup z teoretické mechaniky s použitím lagranžiánu,
Mathematice musíme zejména oznámit, že s je funkcí času. 
U potenciální energie ještě není vidět k čemu,

V = m g y /. s->s[t]

Při výpočtu kinetické energie je derivování podle času očividně nevyhnutelné

{x,y} /. s->s[t];
D[%,t];
T = 1/2 m %.%//Simplify

lagranžián:

L = T-V

a Euler-Lagrangeova rovnice:

LR = D[ D[ L, s'[t] ],t] - D[ L, s[t] ]==0

Bohužel, řešení příslušné diferenciální rovnice je příliš složité

DSolve[ LR, s[t] , t]

Víme ale, že po transformaci u=Sin[s] dostaneme rovnici hezčí

LR /. s->Function[ t, ArcSin[u[t] ] ]//Simplify
DSolve[ %, u[t] , t]

Řešením pohybových rovnic  jsou tedy funkce 
  s[t] = ArcSin[ a Sin[ ω t+ϕ ] ]
Pro dvě hodnoty a ještě namalujeme animaci řešení

tmp = Table[ 
s1=ArcSin[Sin[t]]//N ;
s2=ArcSin[0.5 Sin[t]]//N ;
z1 =zbytekZavesu /.s->s1;
z2 =zbytekZavesu /.s->s2;
Show[
ParametricPlot[ {X,Y}, {s,-Pi,Pi} ,Frame->True,
Epilog->{
Orange,Thick,Line[z1],Black,PointSize[0.02],Point[z1[[2]]],
Thin,Red,Dotted,Line[z2],Gray,PointSize[0.02],Point[z2[[2]]]},
ImageSize->600,PlotRange->{{-4,4},{-Pi,1}} ,GridLines->Automatic],
ParametricPlot[ {X,Y}, {s,0,s1} ,PlotStyle->{Thick,Orange}],
ParametricPlot[ {X,Y}, {s,0,s2} ,PlotStyle->{Thin,Dotted,Red}]
],
{t,0.001,2Pi,Pi/32}];
ListAnimate[tmp]