Trajektorie míče hozeného na kolotoči¶

Výpočet trajektorie míče hozeného z okraje kolotoče do středu v neinerciální soustavě otáčející se spolu s kolotočem

In [2]:
import numpy as np
import matplotlib.pyplot as plt
In [3]:
omega=2*np.pi #úhlová rychlost otáčení kolotoče 
tmax=1 #čas, pro který míč sledujeme (jedna otočka kolotoče) 
dt=0.0001 #časový krok pro numerické řešení pohybové rovnice
t=np.arange(0,tmax,dt) #pole časů, v kterých budeme počítat polohy míče

souřadnice a rychlosti v inerciální soustavě spojené s pozorovatelem mimo kolotoč

In [5]:
#souřadnice v inerciální soustavě
x=np.empty(np.size(t))
y=np.empty(np.size(t))
#rychlosti v inerciální soustavě
vx=np.empty(np.size(t))
vy=np.empty(np.size(t))

souřadnice a rychlosti v neinerciální soustavě otáčenící se spolu s kolotočem

In [7]:
#souřadnice v neinerciální soustavě spojené s kolotočem
xp=np.empty(np.size(t))
yp=np.empty(np.size(t))
#rychlosti v neinerciální soustavě spojené s kolotočem
vxp=np.empty(np.size(t))
vyp=np.empty(np.size(t))

počáteční podmínky v inerciální soustavě

In [9]:
#počáteční poloha v inerciální soustavě
x[0]=0
y[0]=10 #míč je v poloze 12 hodin na okraji kolotoče
#počáteční rychlost v inerciální soustavě
vx[0]=0
vy[0]=-40 #míč má rychlost směřující do středu kolotoče

počáteční podmínky v neinerciální soustavě

In [11]:
#počáteční poloha v inerciální soustavě
xp[0]=x[0]*np.cos(omega*t[0])+y[0]*np.sin(omega*t[0])
yp[0]=-x[0]*np.sin(omega*t[0])+y[0]*np.cos(omega*t[0])
#počáteční rychlost v inerciální soustavě
vxp[0]=yp[0]*omega+vx[0]*np.cos(omega*t[0])+vy[0]*np.sin(omega*t[0])
vyp[0]=-xp[0]*omega-vx[0]*np.sin(omega*t[0])+vy[0]*np.cos(omega*t[0])

Pohyb míče v neinerciální soustavě, která se otáčí, je popsán pohybovou rovnicí:
$m\vec{a^{\prime}} = \vec{F}_o + \vec{F}_C,$
kde $\vec{F}_o = -m\vec{\omega}\times(\vec{\omega}\times\vec{r})$ je odstředivá síla
a $\vec{F}_C = -2m\vec{\omega}\times\vec{v^{\prime}}$ je Coriolisova síla.
V tomto konkrétním případě se kolotoč otáčí v rovině $xy$ a vektor úhlové rychlosti otáčení kolotoče je $\vec{\omega} = (0,0,\omega)$.
Jedná se tedy o otáčení v rovině a pohybová rovnice rozepsaná ve složkách je \begin{align} \ddot{x^{\prime}} &= \omega^2x^{\prime} + 2\omega\dot{y^{\prime}}\\ \ddot{y^{\prime}} &= \omega^2y^{\prime} - 2\omega\dot{x^{\prime}}\\ \end{align} Řešení této pohybové rovnice získáme numericky

In [20]:
imax=0
#numericke reseni pohybove rovnice
for i in range(np.size(t)-1):
    x[i+1]=x[i]+vx[i]*dt
    y[i+1]=y[i]+vy[i]*dt
    xp[i+1]=xp[i]+vxp[i]*dt
    yp[i+1]=yp[i]+vyp[i]*dt
    vx[i+1]=vx[i]
    vy[i+1]=vy[i]
    vxp[i+1]=vxp[i]+(omega**2*xp[i]+2*omega*vyp[i])*dt #odstrediva a Corriolisova sila
    vyp[i+1]=vyp[i]+(omega**2*yp[i]-2*omega*vxp[i])*dt #odstrediva a Corriolisova sila
    if xp[i+1]<0 and imax==0: #mic doletel do stredu kolotoce
        imax=i+1

Vykreslení trajektorie míče

In [35]:
fig,ax=plt.subplots(figsize=(6,6))
ax.plot(x[0:imax],y[0:imax],c='blue',label='trajektorie v inerciální soustavě')
ax.plot(xp[0:imax],yp[0:imax],c='red',label='trajektorie v neinerciální soustavě')
phi=np.linspace(0,2*np.pi,100)
ax.plot(y[0]*np.cos(phi),y[0]*np.sin(phi),c='green',ls='dashed')
ax.set_xlabel('x',fontsize=14)
ax.set_ylabel('y',fontsize=14)
plt.legend()
plt.show()
No description has been provided for this image
In [ ]: