Een eenvoudig model in Python: De Vrije Val#

Het notebook (deze omgeving) voor een model bestaat uit een aantal blokken of stappen. Loop de blokken stap voor stap door. Om ze af te spelen (te runnen): Bovenin zie je een raketje (Live Code), als je daarop klikt, en een tijdje wacht, kun je de python modelcode runnen.
Hieronder volgt het eerste code blok. Om verder te gaan moet je telkens op run knopje drukken. Vervolgens kan je weer verder naar het blok eronder.

Ten opzichte van het vorige hoofdstuk zie je hier een aantal extra stappen, die nodig zijn om het model uit te voeren en grafieken te maken.

Stap 1: Bibliotheken importeren#

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

Als je het wieltje kort ziet draaien dan heeft de Python Interpreter de bibliotheek packages ingeladen en is het dus gelukt.

Stap 2: Definiëren van variabelen en startwaarden#

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

dt = 0.001 #tijdstap

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

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

eindtijd =10 #s

Stap 3: Maken van lege lijsten voor grafieken#

De lijsten worden aangemaakt om de waarden op te slaan:

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

tijden = [t] → Tijdstippen worden hier opgeslagen. snelheden = [v] → Snelheden worden hier opgeslagen. hoogten = [h] → Hoogtes worden hier opgeslagen. versnellingen = [a] → Versnellingen worden hier opgeslagen. Dit helpt later bij het plotten van de resultaten. We willen later grafieken voor de snelheid en de plaats als functie van de tijd maken. Hiervoor moeten eerst (lege) lijsten (tabellen) gemaakt worden.

Stap 4: De modelregels met while-lus#


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.

EN

Stap 5: Opslaan van de nieuwe waarden in de lijsten#

Als het object nog niet op de grond is, worden de nieuwe waarden toegevoegd aan de lijsten. Dit gebeurt elke stap, zodat je later een grafiek kunt maken.

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
    if h<=0:  # als ....
      break   # dan stop eindals
    # eind model

    ## Dit is dus stap 4
    # 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

Stap 6: Grafieken maken#

Nu maken we grafieken (plotten). Druk op run om ze te laten verschijnen. Eerst het h-t diagram en vervolgens het v-t diagram. Je herkent de namen van de lijsten in het plt.plot commando terug!

plt.figure(figsize=(5,5))
plt.plot(tijden, hoogten,'r') # r staat voor red
plt.ylim(bottom=0) # oorsprong (0,0) links onder
plt.xlim(0)
plt.title('De hoogte als functie van de tijd')
plt.xlabel('tijd [s]')
plt.ylabel('hoogte [m]')
plt.grid()

plt.figure(figsize=(5,5))
plt.plot(tijden, snelheden, 'b') # b staat voor blue
#plt.ylim(top=0) # oorsprong (0,0) links boven
#plt.xlim(0)
plt.title('De snelheid als functie van de tijd')
plt.xlabel('tijd [s]')
plt.ylabel('snelheid [m/s]')
plt.grid()

Opdrachten#

Bekijk de grafieken en het model en beantwoord de volgende vragen:
a) Leg uit waarom de snelheid negatief is. Leg je antwoord uit aan de hand van model!

b) Leg uit waarom de h-t grafiek stopt bij 0 m. Leg je antwoord uit aan de hand van het model!

c) Probeer het model zodanig aan te passen dat de v-t grafiek omhoog loopt, startend vanuit de oorsprong (de h-t grafiek blijft onveranderd).

Bij elke verandering moeten de code-blokken opnieuw worden uitgevoerd! Dat kan in één keer met run all