Wahadło Foucault


Aby efekt był wyraźny, szybkość obrotu Ziemi wokół własnej osi zwiększam CZYNNIK razy !

CZYNNIK=300;

r={x[t],y[t],z[t]}

v=D[r,t]

acc=D[v,t]

omega={0,w*Cos[ϕ],w*Sin[ϕ]}

eq1=Simplify[acc+w0*w0*r+2*omega\[Cross]v=={0,0,0}]

(* Pomijamy równanie na z[t] oraz przyjmujemy z[t]=const, czyli z'[t]=0 *)

eq2={(w0^2) x[t]-2 w Sin[ϕ] y'[t]+x''[t]==0,
(w0^2) y[t]+2 w Sin[ϕ] x'[t]+y''[t]==0}

eq3=eq2/.{w Sin[ϕ]->w1}

(* Mozna sprobowac komendy DSolve[eq3,{x[t],y[t]},t], ale output jest praktycznie bezuzyteczny ! Ogranicze sie wiec do podania rozwiazania ogolnego i sprawdzenia, ze rzeczywiscie spelnia uklad rownan eq3 *)

(* soleq3=FullSimplify[DSolve[eq3,{x[t],y[t]},t],w0>0&&w1>0] *)

w2=Sqrt[w0^2+w1^2];

x[t_]:=a*Cos[(-w1+w2)*t]-b*Sin[(-w1+w2)*t]+c*Cos[(-w1-w2)*t]-d*Sin[(-w1-w2)*t];

y[t_]:=a*Sin[(-w1+w2)*t]+b*Cos[(-w1+w2)*t]+c*Sin[(-w1-w2)*t]+d*Cos[(-w1-w2)*t];

(* Sprawdzam, czy funkcje x[t] i y[t] spelniaja uklad rownan rozniczkowych eq3 *)

Simplify[eq3]

(* Warunki poczatkowe *)

WP={x[0]==x0,y[0]==y0,x'[0]==vx0,y'[0]==vy0}

solWP1=Simplify[Solve[WP,{a,b,c,d}]]

solWP1[[1]]

(* Tworze rozwiazania szczegolne spelniajace warunki poczatkowe, eliminujac stale a,b,c,d *)

xs[t_]=Simplify[x[t]/.solWP1[[1]]]

ys[t_]=Simplify[y[t]/.solWP1[[1]]]

Simplify[xs[0]]

Simplify[xs'[0]]

Simplify[ys[0]]

Simplify[ys'[0]]

(* Dane dla wahadla Foucaulta w Krakowie *)

g=9.81; (* m/s^2 *)

(* masa wahadla nie pojawia sie w rownaniach *)

m=25; (* kg *)

l=46.5; (* m *)

ϕ=50 Degree;

w0=Sqrt[g/l]

T0=2*Pi/w0

w=CZYNNIK*2*Pi/(24*3600); (* 1/s *)

N[w]

w1=w*Sin[ϕ]

T1=N[2*Pi/w1]

T1/3600 (* okres w godzinach *)

w2

(* Mozliwa sytuacja początkowa: Wychylamy wahadlo z polozenia rownowagi i puszczamy bez predkosci poczatkowej *)

x0=0;vx0=1;y0=0;vy0=0;

ParametricPlot[{xs[t],ys[t]},{t,0,100}]

Animate[ParametricPlot[{xs[t],
ys[t]},{t,0,s},PlotRange->{{-4,4},{-4,4}},AxesLabel->{"x [m]","y [m]"}],{s,0.0001,100}]

Animate[ParametricPlot[{xs[t],
ys[t]},{t,0.999999999*s,s},PlotRange->{{-3,3},{-3,3}},AxesLabel->{"x [m]","y [m]"},PlotStyle->{PointSize[0.03],Orange}]/.Line->Point,{s,0.00001,100}]