Eksempel 15.3 skrått_kast_med_luftmotstand.py

# Program skrått_kast_med_luftmotstand.py
import numpy as np
import matplotlib.pyplot as plt

# Definerer størrelser
tMax = 5 # tid maks [s]
dt = 0.001 # tidsintervall [s]
n = int(tMax/dt) # antall tidspunkter
t = np.linspace(0,tMax,n) # intervall tidsaksen tid-liste [s]

sx = np.zeros(n) # posisjon x liste [m]
sy = np.zeros(n) # posisjon y liste [m]
vx = np.zeros(n) # fart x liste [m/s]
vy = np.zeros(n) # fart y liste [m/s]
v = np.zeros(n) # banefart liste [m/s]
ax = np.zeros(n) # aks x liste [m/s^2]
ay = np.zeros(n) # aks y liste [m/s^2]

g = 9.81 # tyngdeakselerasjonen [m/s^2]
r = 0.01 # luftmotstandkontant [m^-1]
v0 = 20 # banefart start [m/s]
u = 60/180*np.pi # vinkel start [rad]

# Setter startverdier
sx[0] = 0 # x-posisjon start [m]
sy[0] = 0 # y-posisjon start [m]
vx[0] = v0*np.cos(u) # startfart i x-retning [m/s]
vy[0] = v0*np.sin(u) # startfart i y-retning [m/s]
v[0] = np.sqrt(vx[0]**2 + vy[0]**2) # banefart start [m/s]
ax[0] = -r*v[0]*vy[0] # startakselerasjon i x-retning [m/s^2]
ay[0] = -g - r*v[0]*vy[0] # startakselerasjon i y-retning [m/s^2]

# Lager lister for x- og y-posisjon uten luftmotstand
sxu = vx[0]*t # x-posisjon uten luftmotstand [m]
syu = vy[0]*t -1/2*g*t**2 # y-posisjon uten luftmotstand [m]

# Steg for steg beregning av s-, v- og a-komponentlister med luftmotstand
for i in range(n-1):
sx[i+1] = sx[i] + vx[i]*dt # x-posisjon
sy[i+1] = sy[i] + vy[i]*dt # y-posisjon
vx[i+1] = vx[i] + ax[i]*dt # fart i x-retning
vy[i+1] = vy[i] + ay[i]*dt # fart i y-retning
v[i+1] = np.sqrt(vx[i+1]**2 + vy[i+1]**2) # banefart
ax[i+1] = -r*v[i+1]*vx[i+1] # akselerasjon i x-retning
ay[i+1] = -g - r*v[i+1]*vy[i+1] # akselerasjon i y-retning

# Utskift av diagram
plt.figure(1)
plt.plot(sx,sy,'-b', label='Bane - Med luftmotstand' )
plt.plot(sxu,syu,'-r', label='Bane - Uten luftmotstand')
plt.title('Kastebane')
plt.xlabel('$x$ / m' )
plt.ylabel('$y$ / m' )
plt.grid()
plt.xlim([0,50])
plt.ylim([-30,20])
plt.legend(loc='lower left')
plt.show()

Programmet lager figuren:

Grafene til et skrått kast med og uten luftmotstand