Øvelse 4 – Oppgave 3
a)
Lagring av konstanter
Gravitasjonsakselerasjonen g på jordoverflaten er omtrent 9.81 m/s². For våre formål i denne deloppgaven kan denne antas å være konstant. Tiden som trengs for at et objekt i fritt fall skal ramle et gitt antall meter (d) er gitt ved formelen
t = sqrt(2m/g)
hvor g er gravitasjonsakselerasjonen som gitt tidligere.
I denne deloppgaven skal du lagre gravitasjonskonstanten i en global variabel med navnet GRAVITY på toppen av programmet ditt. Deretter skal du lage en funksjon get_fall_time som tar inn et gitt antall meter, og bruker formelen gitt over til å returnere hvor lang tid det tar et objekt å ramle det gitte antallet meter. La så programmet ditt ta inn en fall-lengde i meter fra brukeren, og bruk funksjonen du har laget til å regne ut hvor lang tid det tar å ramle den gitte distansen. Print ut resultatet.
Løsningsforslag
## Oppgave 3a svar
import numpy as np
GRAVITY = 9.81
def get_fall_time(m):
    
    t = np.sqrt(2*m/GRAVITY)
    
    return t
m = int(input('Hvor mange meter? '))
tidTilBakken = get_fall_time(m)
print('Det tar', format(tidTilBakken,'.1f'), 'sekunder å falle', 
      m, 'meter ved en gravitasjon på ', GRAVITY)
b)
Oppdatere en global variabel
I denne oppgaven ønsker vi å legge til rette for flere verdier av gravitasjonsakselrasjonen, ettersom denne ikke er helt konstant over hele jordoverflaten, i tillegg til at den vil være forskjellig på f.eks. månen. En mulig måte å løse dette på kunne vært å introdusere en ny funksjon som lar brukeren overskrive verdien til den globale konstanten. Husk at denne nye konstanten fortsatt må være global for å kunne brukes i resten av programmet.
Løsningsforslag:
## Oppgave 3b svar
import numpy as np
g = float(input('Hva er g? ')) # Angi tallet som skal pass'es til set_gravity
                                # funksjonen
def set_gravity(g):
    
    global GRAVITY # Gjør GRAVITY til en global variabel
    
    GRAVITY = g # Sett GRAVITY til parameter g
    
    return GRAVITY
GRAVITY = set_gravity(g)
def get_fall_time(m):
    
    t = np.sqrt(2*m/GRAVITY) # Sett m inn i formelen og bruk GRAVITY-konstanten
    
    return t
m = int(input('Hvor mange meter? ')) # be om antall meter objektet skal falle
tidTiBakken = get_fall_time(m) # Kall get_fall_time og pass input for meter 
                               # til funksjonen
print('Det tar', format(tidTiBakken,'.1f'), 'sekunder å falle', 
      m, 'meter ved en gravitasjon på ', GRAVITY)
					