Rozwiązania zadań z zestawu 05 (nb
Transkrypt
Rozwiązania zadań z zestawu 05 (nb
Zestaw 5
Zadanie 1
In[1]:=
(* W tym przypadku jest jasne, że mamy jeden stopień
swobody: do określenia położenia koralika wystarczy znać φ *)
In[2]:=
x = R * Cosφt;
In[3]:=
y = R * Sinφt;
In[4]:=
z = -k * φt;
In[5]:=
(* wektor położenia *)
In[6]:=
r = {x, y, z};
In[7]:=
(* prędkość *)
In[8]:=
v = Dr, t
Out[8]=
In[9]:=
In[10]:=
-R Sin[φ[t]] φ′ [t], R Cos[φ[t]] φ′ [t], -k φ′ [t]
(* energia kinetyczna Ekin *)
Ekin = 1 2 * m * v.v
1
Out[10]=
2
In[11]:=
m k2 φ′ [t]2 + R2 Cos[φ[t]]2 φ′ [t]2 + R2 Sin[φ[t]]2 φ′ [t]2
Ekin = FullSimplifyEkin, R > 0 && k > 0 && m > 0
1
Out[11]=
2
m k2 + R2 φ′ [t]2
In[12]:=
(* energia potencjalna w jednorodnym ziemskim polu grawitacyjnym *)
In[13]:=
Epot = m * g * z
Out[13]=
-g k m φ[t]
In[14]:=
(* funkcja Lagrange'a *)
In[15]:=
L = Ekin - Epot
Out[15]=
In[16]:=
g k m φ[t] +
1
2
m k2 + R2 φ′ [t]2
(* d1, d2 i d3 to trzy pochodne, które występują w równaniu Lagrange'a
*)
2
rozw_zadania_05.nb
In[17]:=
Out[17]=
In[18]:=
Out[18]=
In[19]:=
Out[19]=
In[20]:=
Out[20]=
In[21]:=
Out[21]=
In[22]:=
Out[22]=
In[23]:=
Out[23]=
d1 = DL, φ't
m k2 + R2 φ′ [t]
d2 = Dd1, t
m k2 + R2 φ′′ [t]
d3 = DL, φt
gkm
eq1 = d3 ⩵ d2
g k m ⩵ m k2 + R2 φ′′ [t]
WP = φ0 ⩵ 0, φ'0 ⩵ 0
φ[0] ⩵ 0, φ′ [0] ⩵ 0
eq2 = AppendWP, eq1
φ[0] ⩵ 0, φ′ [0] ⩵ 0, g k m ⩵ m k2 + R2 φ′′ [t]
sol = DSolveeq2, φt, t
φ[t] →
g k t2
2 k2 + R2
In[24]:=
(* Wyciągam φt z wyniku DSolve *)
In[25]:=
φt_ = φt /. sol1
g k t2
Out[25]=
In[26]:=
Out[26]=
In[27]:=
In[28]:=
Out[28]=
In[29]:=
Out[29]=
2 k2 + R2
FullSimplifyEkin + Epot
0
(* Aby policzyć Fr korzystamy z II zasady dynamiki Newtona: F=m*r'',
gdzie F=Fg + Fr *)
r
R Cos
g k t2
2 k2 + R2
, R Sin
g k t2
2 k2 + R2
, -
g k2 t2
2 k2 + R2
v
-
g k R t Sin
g k t2
2 k 2 +R 2
k2 + R2
g k R t Cos
,
g k t2
2 k 2 +R 2
k2 + R2
,-
g k2 t
k2 + R2
rozw_zadania_05.nb
In[30]:=
Out[30]=
a = FullSimplifyDr, t, 2
-
g k R g k t2 Cos
g k t2
+ k2
2 k 2 +R 2
k2
g k R k2 + R2 Cos
+ R2 Sin
g k t2
2 k 2 +R 2
2
+ R2
g k t2
-g
2 k 2 +R 2
k t2 Sin
g k t2
2 k 2 +R 2
k2 + R2
2
In[31]:=
Out[31]=
In[32]:=
Out[32]=
g k2
k2 + R2
0, 0, -g m
Fr = m * a - Fg
-
g k m R g k t2 Cos
g k t2
+ k2
2 k 2 +R 2
+ R2 Sin
g k t2
2 k 2 +R 2
k2 + R2
2
g k t2
-g
2 k 2 +R 2
k2 + R2
2
k t2 Sin
g k t2
2 k 2 +R 2
,
, gm-
g k2 m
k2 + R2
absFr = FullSimplifySqrtFr.Fr, m > 0 && R > 0 && k > 0 && g > 0
gmR
Out[33]=
,-
Fg = 0, 0, -m * g
g k m R k2 + R2 Cos
In[33]:=
,
k2 + R2 + g2 k4 t4
3
k2 + R2
2
Zadanie 2
In[34]:=
ClearAll"Global`*";
Ten układ ma dwa stopnie swobody. Aby opisać położenie elementów
układu wystarczą dwie współrzędne uogólnione, na przykład x1 oraz kąt ϕ.
3
4
rozw_zadania_05.nb
In[35]:=
Out[35]=
In[36]:=
Out[36]=
In[37]:=
Out[37]=
In[38]:=
Out[38]=
In[39]:=
Out[39]=
In[40]:=
Out[40]=
In[41]:=
Out[41]=
y1t = 0
0
x2t = x1t + l * Sinϕt
l Sin[ϕ[t]] + x1[t]
y2t = -l * Cosϕt
-l Cos[ϕ[t]]
x1't = Dx1t, t
x1′ [t]
y1't = Dy1t, t
0
x2't = Dx2t, t
x1′ [t] + l Cos[ϕ[t]] ϕ′ [t]
y2't = Dy2t, t
l Sin[ϕ[t]] ϕ′ [t]
In[42]:=
(* Energia kinetyczna dwóch punktowych mas *)
In[43]:=
Ekin = FullSimplify1 2 * m1 * x1't^2 + y1't^2 +
1 2 * m2 * x2't^2 + y2't^2
1
Out[43]=
2
m1 + m2 x1′ [t]2 + 2 l m2 Cos[ϕ[t]] x1′ [t] ϕ′ [t] + l2 m2 ϕ′ [t]2
In[44]:=
(* Energia potencjalna zależy wyłącznie od y2 *)
In[45]:=
Epot = FullSimplifym2 * g * y2t
Out[45]=
In[46]:=
-g l m2 Cos[ϕ[t]]
(* Funkcja Lagrange'a układu *)
rozw_zadania_05.nb
In[47]:=
L = FullSimplifyEkin - Epot
1
Out[47]=
2
In[48]:=
m1 + m2 x1′ [t]2 + 2 l m2 Cos[ϕ[t]] x1′ [t] ϕ′ [t] + l m2 2 g Cos[ϕ[t]] + l ϕ′ [t]2
Etot = FullSimplifyEkin + Epot
1
Out[48]=
2
m1 + m2 x1′ [t]2 + 2 l m2 Cos[ϕ[t]] x1′ [t] ϕ′ [t] + l m2 -2 g Cos[ϕ[t]] + l ϕ′ [t]2
In[49]:=
d1 = DL, ϕ't;
In[50]:=
d2 = DL, ϕt;
In[51]:=
d3 = Dd1, t;
In[52]:=
s1 = Solved3 ⩵ d2, ϕ''t;
In[53]:=
FullSimplifys1
Out[53]=
ϕ′′ [t] → -
g Sin[ϕ[t]] + Cos[ϕ[t]] x1′′ [t]
l
In[54]:=
d4 = DL, x1't;
In[55]:=
d5 = DL, x1t;
In[56]:=
d6 = Dd4, t;
In[57]:=
s2 = Solved6 ⩵ d5, x1''t;
In[58]:=
FullSimplifys2
Out[58]=
x1′′ [t] →
l m2 Sin[ϕ[t]] ϕ′ [t]2 - Cos[ϕ[t]] ϕ′′ [t]
m1 + m2
In[59]:=
(* Parametry układu: długość i masa wahadła matematycznego,
masa zaczepu wahadła oraz wartość przyspieszenia ziemskiego *)
In[60]:=
l = 1 ; (* m *)
In[61]:=
m2 = 1 4; (* kg *)
In[62]:=
m1 = 1 4; (* kg *)
In[63]:=
g = 981 100; (* ms^2 *)
In[64]:=
(* Warunki początkowe
In[65]:=
x10 = 0;
In[66]:=
v10 = 0;
In[67]:=
ϕ0 = Pi 3;
In[68]:=
ω0 = 0;
In[69]:=
tmax = 20; (* s *)
*)
5
6
rozw_zadania_05.nb
In[70]:=
numerycznie = NDSolveϕ′′ t == x1''t ==
g Sinϕt + Cosϕt x1′′ t
,
l
l m2 Sinϕt ϕ′ t2 - Cosϕt ϕ′′ t
m1 + m2
, ϕ0 ⩵ ϕ0 ,
ϕ'0 ⩵ ω0 , x10 ⩵ x10, x1'0 ⩵ v10, x1t, ϕt, t, 0, tmax
Out[70]=
x1[t] → InterpolatingFunction
ϕ[t] → InterpolatingFunction
In[71]:=
Out[71]=
Out[72]=
[t]
Domain: {{0., 20.}}
Output: scalar
numerycznie
x1[t] → InterpolatingFunction
ϕ[t] → InterpolatingFunction
In[72]:=
[t],
Domain: {{0., 20.}}
Output: scalar
[t],
Domain: {{0., 20.}}
Output: scalar
Domain: {{0., 20.}}
Output: scalar
[t]
Domain: {{0., 20.}}
Output: scalar
[t],
Flattennumerycznie
x1[t] → InterpolatingFunction
ϕ[t] → InterpolatingFunction
Domain: {{0., 20.}}
Output: scalar
[t]
In[73]:=
(* Wyciągam funkcje x1t i ϕt z numerycznego rozwiązania *)
In[74]:=
Flattennumerycznie1
Out[74]=
x1[t] → InterpolatingFunction
Domain: {{0., 20.}}
Output: scalar
[t]
In[75]:=
x1t_ := Evaluatex1t /. Flattennumerycznie1
In[76]:=
ϕt_ := Evaluateϕt /. Flattennumerycznie2
In[77]:=
(* Teraz mogę używać funkcji x1t i ϕt tak, jak innych funkcji. Z
ich pomocą mogę zdefiniować także inne potrzebne mi wielkości. *)
In[78]:=
Out[78]=
x12
0.0537271
In[79]:=
x1'8.5
Out[79]=
-1.88816
rozw_zadania_05.nb
In[80]:=
Out[80]=
In[81]:=
Out[81]=
ϕ3
-0.620149
ϕ'11
-1.65049
In[82]:=
x2t_ = x1t + l * Sinϕt;
In[83]:=
x21
Out[83]=
In[84]:=
Out[84]=
0.0119607
x2'4
-1.98562
In[85]:=
y2t_ = -l * Cosϕt;
In[86]:=
y24
Out[86]=
In[87]:=
-0.963665
(* Całkowity pęd układu w kierunku osi x powinien być stałą wielkością,
bo całkowita siła zewnętrzna ma zerową składową w tym kierunku *)
In[88]:=
px = m1 * x1't + m2 * x2't;
In[89]:=
Plotx1t, t, 0, tmax, PlotRange → All, AxesLabel → "t [s]", "x1 (t) [m]"
x1 (t) [m]
0.8
0.6
Out[89]=
0.4
0.2
5
In[90]:=
10
15
20
t [s]
Plotϕt, t, 0, tmax, PlotRange → All, AxesLabel → "t [s]", "ϕ(t) [rad]"
ϕ(t) [rad]
1.0
0.5
Out[90]=
5
-0.5
-1.0
10
15
20
t [s]
7
8
rozw_zadania_05.nb
In[91]:=
Plotx1't, t, 0, tmax, PlotRange → All, AxesLabel → "t [s]", "x
1 (t) [m/s]"
x1 (t) [m/s]
2
1
Out[91]=
5
10
15
20
t [s]
-1
-2
In[92]:=
Plotϕ't, t, 0, tmax, PlotRange → All, AxesLabel → "t [s]", "ϕ'(t) [rad/s]"
ϕ'(t) [rad/s]
4
2
Out[92]=
5
10
15
20
t [s]
-2
-4
In[93]:=
PlotEvaluateEkin, t, 0, tmax,
PlotRange → All, AxesLabel → "t [s]", "Ekin(t) [J]"
Ekin(t) [J]
1.2
1.0
0.8
Out[93]=
0.6
0.4
0.2
5
10
15
20
t [s]
rozw_zadania_05.nb
In[94]:=
PlotEvaluateEpot, t, 0, tmax,
PlotRange → All, AxesLabel → "t [s]", "Epot(t) [J]"
Epot(t) [J]
-1.2
-1.4
-1.6
Out[94]= -1.8
-2.0
-2.2
5
In[95]:=
10
15
20
t [s]
PlotEvaluateEtot, t, 0, tmax,
PlotRange → All, AxesLabel → "t [s]", "Etot(t) [J]"
Etot(t) [J]
-1.22612
-1.22614
-1.22616
Out[95]= -1.22618
-1.22620
-1.22622
-1.22624
5
In[96]:=
10
15
20
t [s]
PlotEvaluateEkin, EvaluateEpot, EvaluateEtot, t, 0, tmax,
PlotRange → All, AxesLabel → "t [s]", "Ekin, Epot, Etot(t) [J]"
Ekin, Epot, Etot(t) [J]
1
5
Out[96]=
-1
-2
10
15
20
t [s]
9
10
rozw_zadania_05.nb
In[97]:=
PlotEvaluate[px], t, 0, tmax,
PlotRange → All, AxesLabel → "t [s]", "px (t) [m/s]"
px (t) [m/s]
0.000030
0.000025
0.000020
Out[97]=
0.000015
0.000010
5. × 10-6
5
In[98]:=
10
15
20
t [s]
Plotm1 * x1't, m2 * x2't, Evaluate[px], t, 0, tmax,
PlotRange → All, AxesLabel → "t [s]", "m1 x
1 (t), m2 x2 (t), px (t) [m/s]"
m1 x1 (t), m2 x2 (t), px (t) [m/s]
0.6
0.4
0.2
Out[98]=
5
10
15
20
t [s]
-0.2
-0.4
-0.6
Modelowanie ruchu wahadła ze swobodnym zaczepem przy pomocy
wbudowanych obiektów graficznych
In[99]:=
pow = Line-3 5, 0, 6 5, 0;
In[100]:=
uchwytt_ := Rectanglex1t - 1 20, 0, x1t + 1 20, 1 10;
In[101]:=
odct_ := Linex1t, 0, x2t, y2t;
In[102]:=
masa2t_ := Diskx2t, y2t, 1 20;
In[103]:=
gpow = GraphicsThick, pow;
In[104]:=
guchwytt_ := Graphicsuchwytt;
In[105]:=
godct_ := GraphicsThick, odct
In[106]:=
gmasa2t_ := Graphicsmasa2t
rozw_zadania_05.nb
In[107]:=
AnimateShowgpow, guchwytt, godct, gmasa2t,
PlotRange → -3 5, 6 5, -6 5, 1 5, AspectRatio → Automatic, t, 0, tmax
t
Showgpow, guchwyt[9.30553],
Out[107]=
PlotRange → -
3
,
5
6
5
, -
6
5
,
, gmasa2[9.30553],
1
5
, AspectRatio → Automatic
Zadanie 3
In[108]:=
ClearAll"Global`*";
Wahadło fizyczne zbudowane z pręta o długości l i masie m1 oraz dysku o
promieniu R i masie m2
In[109]:=
(* Początek pręta znajduje się w poczatku układu współrzędnych O *)
In[110]:=
(* współrzędne końca pręta *)
11
12
rozw_zadania_05.nb
In[111]:=
Out[111]=
In[112]:=
Out[112]=
x1t = l * Sinϕt
l Sin[ϕ[t]]
y1t = -l * Cosϕt
-l Cos[ϕ[t]]
In[113]:=
(* współrzędne środka dysku *)
In[114]:=
x2t = l + R * Sinϕt
Out[114]=
In[115]:=
Out[115]=
In[116]:=
In[117]:=
Out[117]=
l + R Sin[ϕ[t]]
y2t = -l + R * Cosϕt
-l - R Cos[ϕ[t]]
(* Energia potencjalna bryły sztywnej w jednorodnym
ziemskim polu grawitacyjnym zależy wyłącznie od wysokości,
na którą wznosi się jej środek masy. W naszym przypadku
jest to suma energii potencjalnych pręta oraz dysku. *)
Epot = m1 * g * 1 2 * y1t + m2 * g * y2t
-
1
2
In[118]:=
g l m1 Cos[ϕ[t]] + g m2 -l - R Cos[ϕ[t]]
(* Ponieważ bryła sztywna obraca sie wokół stałej osi obrotu,
jej energia kinetyczna dana jest wzorem
Ekin= 1 *Ib*ω2 , gdzie Ib jest momentem bezwładności bryły względem osi obrotu,
2
a ω jest wartością prędkości katowej. Moment bezwładności względem osi
przechodzącej przez punkt O i prostopadłej do płaszczyzny rysunku wynosi: *)
In[119]:=
In[120]:=
Ib1 = 1 3 * m1 * l^2 ;
(* Dla dysku korzystamy z twierdzenia Steinera o osiach równoległych *)
Ib2 = Simplify 1 2 * m2 * R^2 + m2 * l + R^2
m2 R2
Out[120]=
2
+ m2 l + R2
In[121]:=
Ib = Ib1 + Ib2;
In[122]:=
(* W naszym przypadku prędkość kątowa jest dana bardzo prosto: *)
In[123]:=
ωt_ = Dϕt, t;
In[124]:=
Ekin = 1 2 * Ib * ωt^2
1
l2 m1
2
3
Out[124]=
+
m2 R2
2
+ m2 l + R2 ϕ′ [t]2
In[125]:=
(* Funkcja Lagrange'a układu *)
In[126]:=
L = FullSimplifyEkin - Epot
1
Out[126]=
12
6 g l m1 + 2 m2 + 2 m2 R Cos[ϕ[t]] + 2 l2 m1 + 3 m2 + 12 l m2 R + 9 m2 R2 ϕ′ [t]2
rozw_zadania_05.nb
In[127]:=
Etot = FullSimplifyEkin + Epot
1
Out[127]=
12
-6 g l m1 + 2 m2 + 2 m2 R Cos[ϕ[t]] + 2 l2 m1 + 3 m2 + 12 l m2 R + 9 m2 R2 ϕ′ [t]2
In[128]:=
d1 = DL, ϕ't;
In[129]:=
d2 = DL, ϕt;
In[130]:=
d3 = Dd1, t;
In[131]:=
s = FullSimplifySolved3 ⩵ d2, ϕ''t
Out[131]=
ϕ′′ [t] → -
3 g l m1 + 2 m2 + 2 m2 R Sin[ϕ[t]]
2 l2 m1 + 3 m2 + 12 l m2 R + 9 m2 R2
In[132]:=
(* Równanie różniczkowe rządzące ruchem wahadła *)
In[133]:=
eq1 = Flattens /. Rule → Equal
Out[133]=
In[134]:=
In[135]:=
Out[135]=
ϕ′′ [t] ⩵ -
3 g l m1 + 2 m2 + 2 m2 R Sin[ϕ[t]]
2 l2 m1 + 3 m2 + 12 l m2 R + 9 m2 R2
(* Warunki poczatkowe zadane w sposób ogólny *)
wp = ϕ0 ⩵ ϕ0 , ϕ'0 ⩵ ω0
π
ϕ[0] ⩵ , ϕ′ [0] ⩵ 0
3
In[136]:=
(* Pełny układ równań *)
In[137]:=
eq = Joineq1, wp
Out[137]=
ϕ′′ [t] ⩵ -
3 g l m1 + 2 m2 + 2 m2 R Sin[ϕ[t]]
2 l2 m1 + 3 m2 + 12 l m2 R + 9 m2 R2
, ϕ[0] ⩵
π
3
, ϕ′ [0] ⩵ 0
In[138]:=
(* Parametry układu: długość i masa pręta,
promień i masa dysku oraz wartość przyspieszenia ziemskiego *)
In[139]:=
l = 3 4 ; (* m *)
In[140]:=
m1 = 1 4; (* kg *)
In[141]:=
R = 15 100; (* m *)
In[142]:=
m2 = 1 4; (* kg *)
In[143]:=
g = 981 100; (* ms^2 *)
In[144]:=
(* Wartości parametrów początkowych
In[145]:=
ϕ0 = Pi 3;
In[146]:=
ω0 = 0;
In[147]:=
tmax = 10; (* s *)
*)
13
14
rozw_zadania_05.nb
In[148]:=
numerycznie = NDSolveeq, ϕt, t, 0, tmax, WorkingPrecision → 24
Out[148]=
In[149]:=
Out[149]=
In[150]:=
Out[150]=
ϕ[t] → InterpolatingFunction
Domain: {{0, 10.0000000000000000000000}}
Output: scalar
[t]
Domain: {{0, 10.0000000000000000000000}}
Output: scalar
[t]
numerycznie
ϕ[t] → InterpolatingFunction
Flattennumerycznie
ϕ[t] → InterpolatingFunction
Domain: {{0, 10.0000000000000000000000}}
Output: scalar
In[151]:=
(* Wyciągam funkcję ϕt z numerycznego rozwiązania *)
In[152]:=
ϕt_ := Evaluateϕt /. Flattennumerycznie
In[153]:=
(* Teraz mogę używać funkcji ϕt tak, jak innych funkcji *)
In[154]:=
ϕ3
Out[154]=
In[155]:=
Out[155]=
In[156]:=
[t]
-0.9605506452893865456602
ϕ'7
2.8503759465382164707
Plotϕt, t, 0, tmax, PlotRange → All, AxesLabel → "t [s]", "ϕ(t) [rad]"
ϕ(t) [rad]
1.0
0.5
Out[156]=
2
-0.5
-1.0
4
6
8
10
t [s]
rozw_zadania_05.nb
In[157]:=
Plotϕ't, t, 0, tmax, PlotRange → All, AxesLabel → "t [s]", "ϕ'(t) [rad/s]"
ϕ'(t) [rad/s]
3
2
1
Out[157]=
2
4
6
8
10
t [s]
-1
-2
-3
In[158]:=
PlotEvaluateEkin, t, 0, tmax,
PlotRange → All, AxesLabel → "t [s]", "Ekin(t) [J]"
Ekin(t) [J]
1.5
1.0
Out[158]=
0.5
2
In[159]:=
4
6
8
10
t [s]
PlotEvaluateEpot, t, 0, tmax,
PlotRange → All, AxesLabel → "t [s]", "Epot(t) [J]"
Epot(t) [J]
-1.5
-2.0
Out[159]=
-2.5
-3.0
2
4
6
8
10
t [s]
15
16
rozw_zadania_05.nb
In[160]:=
PlotEvaluateEtot, t, 0, tmax,
PlotRange → All, AxesLabel → "t [s]", "Etot(t) [J]"
Etot(t) [J]
-1.56347
-1.56347
-1.56347
Out[160]= -1.56347
-1.56347
-1.56347
-1.56347
2
In[161]:=
Out[161]=
In[162]:=
Out[162]=
In[163]:=
4
6
8
10
t [s]
st = FindRootϕt - ϕ0 , t, 1.8
t → 1.91494
tt = t /. st
1.91494
PlotEvaluateEpot, t, 0, tt,
PlotRange → All, AxesLabel → "t [s]", "Epot(t) [J]"
Epot(t) [J]
-1.5
-2.0
Out[163]=
-2.5
-3.0
0.5
1.0
1.5
t [s]
In[164]:=
(* Modelowanie ruchu wahadła przy pomocy wbudowanych obiektów graficznych *)
In[165]:=
sufit = Rectangle-1 2, 0, 1 2, 1 20;
In[166]:=
odct_ = Line0, 0, x1t, y1t;
In[167]:=
dyskt_ = Diskx2t, y2t, R;
In[168]:=
gsufit = Graphicssufit;
In[169]:=
godct_ := GraphicsThick, odct
In[170]:=
gdyskt_ := GraphicsGray, dyskt
rozw_zadania_05.nb
In[171]:=
17
AnimateShowgsufit, godct, gdyskt,
PlotRange → -6 5, 6 5, -6 5, 1 5, AspectRatio → Automatic, t, 0, tt
t
Out[171]=
In[172]:=
aaa = TableShowgsufit, godct, gdyskt, PlotRange → -6 5, 6 5, -6 5, 1 5,
AspectRatio → Automatic, t, 0, tt, tt 40;
In[173]:=
Out[173]=
ExportNotebookDirectory[] <> "wahadlo_fizyczne.gif", aaa
/home/golak/WRK/FIZ_2016/ZESTAWY_16_17/wahadlo_fizyczne.gif