Programmeringskurs: 1.5 Funksjoner

Teori 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.

Cappelen Damm Kontakt: cda-matematikk@cappelendamm.no | Hva er Student? | Personvernerklæring | Rettigheter