Programmeringskurs: 1.5 Funksjoner
Verditabeller
Ofte får vi behov for å lagre mange verdier. I Python kan vi gjøre dette med lister eller arrayer. Disse fungerer som tabeller med informasjon. Vi kan importere arrayene fra pylab-modulen.
Med array() kan vi opprette lister med tall. Når vi skriver
tallene = array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
lagrer vi heltallene fra 1 til 10 i en liste som heter tallene. Vi kan utføre regneoperasjoner på hvert av tallene i listen. Ønsker vi oss et program som skriver ut togangen, femgangen og sjugangen, kan vi gjøre det slik:
<> | Kodeeditor | |
from pylab import array tallene = array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) print(2*tallene) print(5*tallene) print(7*tallene) |
Resultat: | |
[ 2 4 6 8 10 12 14 16 20 ] [ 5 10 15 20 25 30 35 40 50 ] [ 7 14 21 28 35 42 49 56 70 ] |
Vi kan bruke lister til å lage verditabeller for funksjoner.
En funksjon #f# er gitt ved
#f(x) = x^2 - x - 6#
Lag et python-program som regner ut funksjonsverdiene i verditabellen.
#x# | -4 | -2 | 0 | 2 | 4 | 5 |
---|---|---|---|---|---|---|
#f(x)# |
Løsning
Vi definerer funksjonen i python og lager en liste med #x#-verdiene. Deretter skriver vi ut funksjonsverdiene.
<> | Kodeeditor | |
from pylab import array def f(x): #\quad#return x**2 - x - 6 x = array([-4, -2, 0, 2, 4, 5]) print(x) print(f(x)) |
Resultat: | |
[ -4. -2. 0. 2. 4. 5.] [ 14. 0. -6. -4. 6. 14.] |
Dette lar oss fylle ut verditabellen
#x# | -4 | -2 | 0 | 2 | 4 | 5 |
---|---|---|---|---|---|---|
#f(x)# | 14 | 0 | -6 | -4 | 6 | 14 |
Det blir fort tungvint å skrive inn alle tallene i en liste dersom den skal bestå av mange tall. Med linspace() får vi en liste med tall jevnt fordelt mellom to verdier. Vi kan for eksempel få 21 tall jevnt fordelt fra og med 0 og til og med 10 slik:
<> | Kodeeditor | |
from pylab import linspace x = linspace(0, 10, 21) print(x) |
Resultat: | |
[ 0. 0.5 1. 1.5 2. 2.5 3. 3.5 4. 4.5 5. 5.5 6. 6.5 7. 7.5 8. 8.5 9. 9.5 10. ] |
Merk at det første tallet i denne listen er 0 og det siste 10, og at linspace alltid skriver tallene i listen som desimaltall.
Vi finner array og linspace i modulen pylab.
Med array kan vi lage lister med tall.
array([tall1, tall2, …])
linspace gir oss en liste med et antall desimaltall, jevnt fordelt fra og med en startverdi til og med en sluttverdi.
linspace(startverdi, sluttverdi, antall)
Vi kan hente ut element nummer i fra ei liste med navn listenavn ved å bruke klammeparenteser. Python begynner å telle på 0.
listenavn[n]
Lag en verditabell for funksjonen
#f(x) = \sqrt{x}, \quad 0\leq x \leq 10#
med 100 elementer. Regn ut den gjennomsnittlige vekstfarten i de ti første og de ti siste elementene i tabellen.
Løsning
Vi bruker linspace() fra pylab til å lage en liste med 100 #x#-verdier fra 0 til 10. Vi bruker deretter elementene i lista til å regne ut den gjennomsnittlige vekstfarten.
#a = \frac{\Delta y}{\Delta x} = \frac{y_2 - y_1}{x_2 - x_1}#
<> | Kodeeditor | |
from pylab import linspace, sqrt
x = linspace(0, 10, 100)
y = sqrt(x)
a1 = (y[9] - y[0]) / (x[9] - x[0])
a2 = (y[99] - y[90]) / (x[99] - x[90])
print(f"Gjennomsnittlig vekstfart i de ti første elementene er {a1:.3}")
print(f"Gjennomsnittlig vekstfart i de ti siste elementene er {a2:.3}")
|
Resultat: | |
Gjennomsnittlig vekstfart i de ti første elementene er 1.05 Gjennomsnittlig vekstfart i de ti siste elementene er 0.162 |
Legg merke til at det tiende elementet i lista har indeks 9, mens det første har indeks 0. Det hundrede elementet har indeks 99, mens det tiende siste har indeks 90.