De val van Felix Baumgartner#

Start van de val

Het filmpje van de val
In deze modelleer opdracht wordt een model voor de val gemaakt.
Opdracht naar Tayo van Boeckel (2019)

Het notebook (deze omgeving) voor een model bestaat uit een aantal blokken. Loop de opdrachten (de blokken in het notebook) stap voor stap door. Hieronder volgt het eerste code blok. Om verder te gaan moet je telkens eerst op het run knopje drukken (dat verschijnt alleen als je live code hebt geactiveerd). Vervolgens kan je weer verder naar het blok eronder. In het code blok hieronder worden eerst enkele noodzakelijke bibliotheken geïmporteerd. Alles achter de # in het groen is commentaar en dus uitleg. Druk nu dus op run:

import numpy as np              #importeer bibliotheek numpy
import matplotlib.pyplot as plt #importeer matplot

Opdracht 0: Model van een vrije val#

We maken eerst een eenvoudig model van een vrije val, dus zonder luchtweerstand. Bij dit model zijn de volgende startwaarden nodig: (druk op play/run)

dt = 0.001

#constanten:
m  = 80 #kg
g  = -9.81 #m/s^2

#startwaarden:
t = 0 #s
a = g #m/s^2
v = 0 #m/s
h = 39045 #m
eindtijd =100 #s

Technische info:
Het model wordt hieronder met een ‘while’ lus gemaakt. Zolang de tijd kleiner is dan de eindtijd blijft de lus doorgaan. We willen later een grafieken voor de snelheid en de plaats als functie van de tijd maken. Hiervoor moeten eerst (lege) lijsten (tabellen) gemaakt worden.
Begrijp je dit bovenstaande niet helemaal, geen ramp.

Het model:
Het model wordt in het code blok hieronder heel duidelijk aangegeven door #begin model en #eind model. Dit zijn de eigenlijke modelregels, dit zou je moeten begrijpen, en dit is de plek waar je later dingen kan aanpassen, en nergens anders. Let erop dat alles netjes onder elkaar blijft staan (of evenver inspringt). Bekijk het code blok en druk vervolgens op het run knopje.

tijden = [t] # de lijst 'tijden' met een begintijd is gemaakt
snelheden = [v] # en 'snelheden'
hoogten = [h] # en 'plaatsen' ook
versnellingen = [a] # en 'versnellingen' ook

while t < eindtijd:
    # begin model
    t = t + dt
    Fz = m * g
    Fres = Fz
    a= Fres / m
    dv = a * dt
    v = v + dv
    dh = v * dt
    h = h + dh
    # eind model

    # begin van het vullen van de lijsten
    snelheden.append(v) # voegt een snelheid toe aan de lijst met snelheden.
    hoogten.append(h) # voegt een plaats toe aan een lijst met plaatsen.
    versnellingen.append(a) # voegt een versnelling toe aan een lijst met versnellingen.
    tijden.append(t) # voegt de tijd toe aan een lijst met tijden.
    # eind van het vullen van lijsten

Nu maken we grafieken (plotten). Druk op run om ze te laten verschijnen. Eerst het v-t diagram, vervolgens het h-t diagram en het tenslotte het a-t diagram.

plt.figure(figsize=(10,10))
plt.plot(tijden, snelheden, 'b')
plt.title('De snelheid als functie van de tijd')
plt.xlabel('tijd [s]')
plt.ylabel('snelheid [m/s]')
plt.grid()

plt.figure(figsize=(10,10))
plt.plot(tijden, hoogten)
plt.title('De hoogte als functie van de tijd')
plt.xlabel('tijd [s]')
plt.ylabel('hoogte [m]')
plt.grid()

plt.figure(figsize=(10,10))
plt.plot(tijden, versnellingen)
plt.title('De versnelling als functie van de tijd')
plt.xlabel('tijd [s]')
plt.ylabel('versnelling [m/s^2]')
plt.grid()

Opdracht 1: Model van de val met luchtweerstand#

Vervolgens ga je nu zelf bedenken hoe je het model aanpast, zodanig dat er wel luchtweerstand is. Pas alleen zaken aan in het model. Voeg ook de de juiste constanten/startwaarden toe. Maak zelf een beredeneerde inschatting van de Cw en het frontale oppervlak van Felix.

dt = 0.001

#constanten:
m  = 80 #kg
g  = -9.81 #m/s^2
A  =   #voeg dit toe
cw =   #voeg dit toe

#startwaarden:
t = 0 #s
a = g #m/s^2
v = 0 #m/s
h = 39045 #m
eindtijd =100 #s


tijden = [t] # de lijst 'tijden' met een begintijd is gemaakt
snelheden = [v] # en 'snelheden'
hoogten = [h] # en 'plaatsen' ook
versnellingen = [a] # en 'versnellingen' ook

while t < eindtijd:
    # begin model
    t = t + dt
    rho =              #voeg dit toe (rare plek, maar dat is express merk je straks)
    Fz = m * g
    Fw =               #voeg dit toe (kwadraat is ** of gewoon 2 keer *)
    Fres = Fz          #pas dit aan
    a= Fres / m
    dv = a * dt
    v = v + dv
    dh = v * dt
    h = h + dh
    # eind model

    # begin van het vullen van de lijsten
    snelheden.append(v) # voegt een snelheid toe aan de lijst met snelheden.
    hoogten.append(h) # voegt een plaats toe aan een lijst met plaatsen.
    versnellingen.append(a) # voegt een versnelling toe aan een lijst met versnellingen.
    tijden.append(t) # voegt de tijd toe aan een lijst met tijden.
    # eind van het vullen van lijsten

Nu maken we grafieken (plotten). Druk op run om ze te laten verschijnen. Eerst het v-t diagram, vervolgens het h-t diagram en het tenslotte het a-t diagram. De rode kruisjes in het h-t diagram geven de werkelijke meetgegevens aan van de val.

plt.figure(figsize=(10,10))
plt.plot(tijden, snelheden, 'b')
plt.title('De snelheid als functie van de tijd')
plt.xlabel('tijd [s]')
plt.ylabel('snelheid [m/s]')
plt.grid()

plt.figure(figsize=(10,10))
plt.plot(tijden, hoogten)
plt.scatter([33,50,64,180],[33446,27833,22970,7619],marker='x',c='r')
plt.title('De hoogte als functie van de tijd')
plt.xlabel('tijd [s]')
plt.ylabel('hoogte [m]')
plt.grid()

plt.figure(figsize=(10,10))
plt.plot(tijden, versnellingen)
plt.title('De versnelling als functie van de tijd')
plt.xlabel('tijd [s]')
plt.ylabel('versnelling [m/s^2]')
plt.grid()

Opdracht 2: Model van de val met variabele luchtdichtheid#

In de model dat je hierboven hebt gemaakt ga je ervan uit dat de luchtdichtheid een constante is. In werkelijkheid is de luchtdichtheid echter afhankelijk van de hoogte. Een model wordt gegeven door de volgende formule:

rho = 1.225 * (39045-h)/h

Pas je model hierboven zodanig aan, dat de luchtweerstand afhankelijk is van deze variabele luchtweerstand. Test de wijzigingen aan je model door de grafieken opniew te plotten.

Opdracht 3: Model van de val met realistische luchtdichtheid#

In de formule in de opdracht hierboven wordt een benadering gegeven van de luchtdichtheid, met een afhankelijkheid van de hoogte. De verandering van de luchtdichtheid kan echter beter worden uitgedrukt als functie van de druk en de temperatuur. Zie Binas tabel 30F. Door dit mee te nemen in het model, wordt een realistischer model verkregen. In de figuur hieronder is een model van Nasa te zien, waarbij de atmosfeer wordt opgedeeld in drie zones.
alt text
Je gaat nu dit model van Nasa toevoegen aan je model hierboven. Hieronder volgen de tips hoe je dit doet:
Tip 1: Je zal deze tabel letterlijk moeten overnemen. In de programmeertaal Python schrijf je “tot de macht” (“^”) als “**” (twee sterretjes).
Tip 2: De drie lagen programmeer je met behulp van zogenaamde condities:
Als de hoogte hoger is dan 25.000 m dan bereken je druk en temperatuur zo…
Als de hoogte tussen de 11.000 en 25.000 m is dan bereken je druk en temperatuur zo…
Als de hoogte lager is dan 11.000 m is dan bereken je druk en temperatuur zo…
Tenslotte: met de druk en temperatuur bereken je de luchtdichtheid zo…

Programmeertechnisch schrijf je dit zo op:

if h > 25000:
  T = ..
  p = ..
if 11000 < h < 25000:
  T = ..
  p = ..
if h < 11000:
  T = ..
  p = ..

rho = p / (0.2869 * (T + 273.1))

Bij iedere conditie is het noodzakelijk om vóór iedere nieuwe regel een witruimte (één tab of één spatie) toe te voegen. Daardoor weet de computer wat bij welke conditie hoort!

Opdracht 4: Voorspellen met het model#

Nu gaan wij de luchtweerstandscoëfficiënt (cw) nauwkeurig bepalen. Als je in het model invoert dat Felix 100 kg weegt en zijn frontaal oppervlak gemiddeld 0.8 m2 is, dan zal de uitkomst van het model niet precies overeenkomen met de meetgegevens (de rode kruisjes in de grafiek). Dit komt omdat je de cw-coëfficiënt in opdracht 4 alleen maar hebt kunnen inschatten.
Pas nu de cw-coëfficiënt zodanig aan dat het model overeenkomt met de meetgegevens. Je zult hiervoor “Trial and Error” moeten toepassen.

a) Welke grootte heeft de cw-coëfficiënt van Felix tijdens zijn sprong?

b) Er bestaat een tabel met bekende luchtweerstandscoëfficiënten. Komt de gevonden waarde uit (a) overeen met wat je zou verwachten op grond van de tabel?

c) Maakt de grootte van de massa van Felix nog uit voor de duur van zijn val? Vergelijk je antwoord met de beroemde valproef van Galileo Galilei op de toren van Pisa.

Opdracht 5: Model van de val met parachute#

Bovenstaand model ga je aanvullen met een parachute die opent, zodat Felix niet te pletter valt. Maak het model van de val nog realistischer door ook de opening van de parachute in het model te verwerken.
Op een hoogte van 2450 m opent Felix zijn parachute. Hij landt op een berg van 1360 m hoogte. Het oppervlak van de parachute is 45 m2 en de luchtweerstandscoëfficiënt van de parachute is 1.75.
Voeg modelregels toe die het openen van de parachute beschrijven en bekijk het resultaat.