Python in de klas – les 7

In deze les gaan we het model van val met luchtwrijving verder uitwerken. We gaan de val van Felix Baumgartner simuleren! Het is leuk om het filmpje van de val te tonen in de klas om de leerlingen enthousiast te maken. Een aantal belangrijke gegevens staan ook op de Wikipedia pagina van Red Bull Stratos.

Beginwaarden kiezen

We willen het deel van de val simuleren zonder parachute. Op de Wikipedia pagina van Red Bull Stratos staat, dat de parachute werd geopend op 4 minuten en 16 seconden. Laten we de totale tijd van de simulatie dus instellen op 256 seconden.

De sprong begon op een hoogte van 38969 m en Baumgartner deed zijn parachute open op een hoogte van 2500 m. In totaal was de verplaatsing tijdens de val (tot aan het openen van de parachute) dus 36469 m.

We kunnen, om een eerste inschatting te maken, dus een gemiddelde snelheid berekenen van 36469 / 256 = 142 m / s.

Een andere (lastige) beginwaarde is de radius die we kiezen voor de berekening van het frontale oppervlak. Kijkend naar de foto van het ruimtepak, kiezen we hier voor een radius gelijk aan de lengte van het referentie blad op de onderstaande foto. Baumgartner viel naar beneden gericht, maar ook niet geheel met helm recht naar beneden. We kiezen voor een radius van 0,432 m. Dit is in doorschijnend zwart aangegeven op de plaatjes van het ruimtepak.

In dit onderzoeksartikel staat verder dat de massa van Baumgartner inclusief ruimtepak 121 kg is. Er staat verder dat een redelijke startwaarde voor de weerstandscoëfficiënt 0,60 is.

#initial time is 0 seconds
t = 0

#initial velocity is 0 m/s
v = 0

#initial position is 0 m
x = 0

#delta t time step for each iteration
dt = 0.01

#total time of the simulation is 5 s
total_time = 256

#initial height of Baumgartner in m
total_height = 38969

#start with an empty list of times, velocities and positions
times = []
velocities = []
positions = []

#mass Felix Baumgartner with space suit in kg
mass = 121

#frontal area radius
radius = 0.432

#drag coefficient 
coefficient = 0.60

Functie luchtweerstand aanpassen

We kunnen niet meer aannemen dat de dichtheid van lucht constant is. Op de hoogte van de sprong is de dichtheid van lucht veel kleiner dan op het aardoppervlak. We kunnen de luchtdruk variabel maken in de functie. Als benadering van de dichtheid van lucht zullen we aannemen dat de dichtheid iedere 5500 m afneemt met 50% en dat de dichtheid op het oppervlak gelijk is aan 1,3 kg/m3. We moeten nu een extra argument “position” toevoegen aan de functie. Dit argument gebruiken we om de dichtheid van lucht te berekenen. De aangepaste functie van luchtweerstand is nu:

import math

def airfriction(drag_coefficient, radius, velocity, position):
  frontal_area = math.pi * radius**2
  height = total_height - position
  density = 1.3 * 0.5**(height/5500)
  result = 0.5 * drag_coefficient * frontal_area * density * velocity**2
  return result

Stapjes in de tijd nemen

We kunnen onze “while-loop” vrijwel overnemen van de vorige les. Het enige verschil is nu, dat we ook de positie x in moeten geven als argument van de functie van de luchtwrijving:

while t <= total_time:
  friction = airfriction(coefficient, radius, v, x)
  force = mass * 9.81 - friction
  a = force / mass
  t += dt
  v += a * dt
  x += v * dt
  times.append(t)
  velocities.append(v)
  positions.append(x)

print(times)
print(velocities)
print(positions)

Grafieken maken van Baumgartner’s val

Om de grafieken te maken, gebruiken we weer onze welbekende code:

import matplotlib.pyplot as plt

plt.plot(times, velocities)
plt.ylabel('v (m/s)')
plt.xlabel('t (s)')
plt.title('(v,t)-diagram')
plt.show()

plt.plot(times, positions)
plt.ylabel('x (m)')
plt.xlabel('t (s)')
plt.title('(x,t)-diagram')
plt.show()

En we krijgen dan de volgende grafieken:

In de volgende les gaan we de echte gegevens van de sprong inladen, en deze vergelijken met het model. Dan kunnen we de beginwaarden van ons model gaan verfijnen. Echter, laten we eens op het eerste gezicht naar de resultaten kijken.

We zien dat er in de eerste 40 seconden sprake is van een vrije val, een rechte lijn omhoog op het (v,t)-diagram. Aangezien de lucht zeer ijl is op grote hoogte, is dit aannemelijk. De luchtwrijving speelt dan nog geen grote rol. Naarmate de luchtdichtheid hoger wordt, neemt de luchtwrijving toe, en neemt ook de snelheid af.

Op de pagina van Red Bull Stratos staat, dat de maximale snelheid van Felix Baumgartner 1,357.64 km/h ofwel 377 m/s was. Dit komt redelijk overeen met de top op ons (v,t)-diagram, alhoewel de topsnelheid hoger lijkt te liggen in ons (v,t)-diagram.

Baumgartner verplaatste zich in 256 seconden met 36469 meter. Ons (x,t)-diagram toont een verplaatsing van iets meer dan 40000 m. Ons model is dus nog niet helemaal nauwkeurig.

De volgende les gaan we de gegevens inladen en proberen we ons model verder te verfijnen. Hier vind je het Google Colab Python notebook van deze les.

Deel

About the author

Roeland is the HandiHow company owner and lead education developer.

Laat een antwoord achter

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Geïnteresseerd?

Neem contact op met HandiHow voor een vrijblijvend oriënterend gesprek.

nl_NLNederlands