Oppg-4-3

Ø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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
## 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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
## 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)