In [1]:
import numpy as np
import matplotlib.pyplot as plt
počáteční rychlost a výška
In [2]:
v0=5
y0=10
g=9.81373 #tíhové zrychlení
pole časů (zatím nevíme jak dlouho bude trvat než míč dopadne na zem, taže neznáme velikost pole)
In [3]:
t=np.array([0])
dt=0.0001
trakjektorie míče je
$x(t) = v_0 t$
$y(t)=-\frac{1}{2}gt^2+y_0$
počáteční podmínky
$x(t=0)=0$
$y(t=0)=y_0$
$\dot{x}(t=0)=v_0$
$\dot{y}(t=0)=0$
In [4]:
x=np.array([0])
y=np.array([y0])
Budeme počítat trajektorii dokud míč nespadne na zem, tj. dokud je $y\ge 0$.
Vypočítáme dráhu jako $s = \sum_i^n \frac{v(t_i)+v(t_{i+1})}{2}\,dt$, kde $v$ je velikost rychlosti v čase $t$.
In [5]:
#počáteční podmínky
i=0
s=0 #dráha
#teď výpočet trajektorie
while y[i]>=0: #cyklus běží dokud míč nedopadne
t=np.append(t,t[i]+dt)
x=np.append(x,v0*t[i])
y=np.append(y,-g*t[i]**2/2 +y0)
v=(np.sqrt(v0**2+(g*t[i])**2)+np.sqrt(v0**2+(g*(t[i]+dt))**2))/2 #průměrná velikost rychlosti
s+=v*dt
i+=1
vykreslení trajektorie
In [6]:
fig,ax=plt.subplots()
ax.plot(x,y)
ax.set_xlim(0,)
ax.set_ylim(0,)
ax.set_xlabel("x")
ax.set_ylabel("y")
plt.show()
In [7]:
print(f"Míč dopadne ve vzdálenosti {np.max(x):6.3f} m od počátku za dobu {np.max(t):6.3f} s")
print(f"Uražená dráha je {s:6.3f} m.")
Míč dopadne ve vzdálenosti 7.138 m od počátku za dobu 1.428 s Uražená dráha je 12.854 m.