Foucaultovo kyvadlo¶
Výpočet trajektorie Foucaultova kyvadla v neinerciální soustavě otáčející se spolu se Zemí
In [2]:
import numpy as np
import matplotlib.pyplot as plt
In [3]:
T=1 #perioda otoceni Zeme
omega=2*np.pi/T #uhlova frekvence otaceni Zeme
dt=T/100000 #časový krok pro numerické řešení pohybové rovnice
m=1 #hmotnost zavazi
Tk=T/4#perioda kmitu
k=(2*np.pi)**2*m/Tk**2 #tuhost pruziny
pole časů, souřadnic a rychlostí
In [5]:
t=np.arange(0,T,dt)
x=np.zeros(np.size(t))
y=np.zeros(np.size(t))
vx=np.zeros(np.size(t))
vy=np.zeros(np.size(t))
počáteční podmínky
In [7]:
x[0]=0
y[0]=0
vx[0]=0
vy[0]=1
numerické řešení pohybové rovnice
In [9]:
for i in range(np.size(t)-1):
x[i+1]=x[i]+vx[i]*dt
y[i+1]=y[i]+vy[i]*dt
vx[i+1]=vx[i]+(omega**2*x[i]+2*omega*vy[i]-k/m*x[i])*dt
vy[i+1]=vy[i]+(omega**2*y[i]-2*omega*vx[i]-k/m*y[i])*dt
vykreslení výsledku
In [11]:
fig,ax=plt.subplots(figsize=(5,5))
ax.plot(x,y)
ax.set_xlabel('x',fontsize=12)
ax.set_ylabel('y',fontsize=12)
plt.show()
In [ ]: