Numerická derivace¶

příklad výpočtu rychlosti a zrychlení rovnoměrného pohybu kružnici numerickou derivací

importujeme knihovny numpy (na numerické výpočty) a matplotlib (na kreslení grafů)

In [3]:
import numpy as np
import matplotlib.pyplot as plt

Zadáme parametry pro rovnoměrný pohyb po kružnici:
$r$ je poloměr kruhové trajektorie
$T$ je perioda pohybu (tj. doba za kterou hmotný bod oběhne celou kružnici)
úhlová frekvence pohybu bude tedy $\omega = \frac{2\pi}{T}$

In [5]:
r = 1 #poloměr trajektorie 1 m
T = 1 #perioda pohybu 1 s
omega = 2 *np.pi/T #=uhlová frekvence

Zvolíme časový krok dt pro výpočet numerické derivace

In [7]:
dt = T/1000 #časový krok pro numerický výpočet derivace (zde tisícina periody)

Vytvoříme pole t obsahující časy, ve kterých chceme vypočítat souřadnice hmotného bodu, a souřadnice hmotného bodu, který se pohybuje rovnoměrným pohybem po kružnici

In [9]:
t = np.arange(0,T,dt) #pole časů
x = r*np.cos(omega*t) #x-ová souřadnice
y = r*np.sin(omega*t) #y-ová souřadnice

Rychlosti získáme v časech o dt/2 posunutých.
Vytvoříme si tedy ještě pole časů tv, což jsou časy, ve kterých vypočítáme rychlosti.
Velikost pole tv je o jedna měnší než pole t, protože rychlosti počítáme v časech mezi časy, ve kterých máme souřadnice.

In [11]:
tv = np.empty(np.size(t)-1) #pole časů, ve kterých vypočítáme rychlosti
vx = np.empty(np.size(t)-1) #x-ová složka rychlosti
vy = np.empty(np.size(t)-1) #y-ová složka rychlosti

Numerický výpočet rychlostí

In [13]:
for i in range(1,np.size(t)):
    tv[i-1] = t[i-1] + dt/2
    vx[i-1] = (x[i] - x[i-1])/dt
    vy[i-1] = (y[i] - y[i-1])/dt

obrázek trajektorie

In [23]:
fig,ax = plt.subplots(figsize=(6,6))
ax.plot(x,y)
ax.set_xlabel("x")
ax.set_ylabel("y")
plt.show()
No description has been provided for this image

graf časové závislosti souřadnic

In [30]:
plt.plot(t,x,label="x-ová souřadnice",c='blue')
plt.plot(t,y,label="y-ová souřadnice",c='red')
plt.xlabel("čas")
plt.ylabel("souřadnice")
plt.legend()
plt.show()
No description has been provided for this image

graf časové závislosti složek rychlosti

In [33]:
plt.plot(tv,vx,label="x-ová složka rychlosti",c='blue')
plt.plot(tv,vy,label="x-ová složka rychlosti",c='red')
plt.xlabel("čas")
plt.ylabel("rychlost")
plt.legend()
plt.show()
No description has been provided for this image

velikost rychlosti $v = \sqrt{v_x^2+v_y^2}$

In [38]:
plt.plot(tv,np.sqrt(vx**2+vy**2))
plt.xlabel("čas")
plt.ylabel("velikost rychlosti")
plt.ylim(0,10)
plt.show()
No description has been provided for this image