Hopp til innhold

Fagstoff

Funksjoner med digitale hjelpemidler

Her får du repetert og/eller lært hvordan du tegner grafer og løser oppgaver med digitale hjelpemidler.

Grafer i GeoGebra

Vi fortsetter å bruke eksempelet vårt med en jogger som løper 16 000 m på 100 minutter. Vi har da at funksjonsuttrykket er

St=160t,    DS=0,100

Hvis vi vil tegne grafen til S(t) helt uten avgrensninger, skriver vi bare funksjonsnavnet og ‑uttrykket rett inn i algebrafeltet: S(t)=160t. Siden funksjonen vår har en avgrenset definisjonsmengde, bør vi bare tegne grafen for de aktuelle x-verdiene. Det gjør vi ved å bruke kommandoen "Funksjon(Funksjon, start, slutt)". I vårt tilfelle skriver vi S(t)=Funksjon(160t, 0, 100). Da får funksjonen vår det riktige navnet, og den blir tegnet for t-verdier mellom 0 og 100.

For å få et fint bilde av grafen din i GeoGebra er det noen viktige ting du må vite:

  • Du må huske å sette navn på aksene. Dersom grafen beskriver en konkret situasjon, bør du ha både navnet på variabelen og hva variabelen representer. I vårt tilfelle blir det "t, minutter" og "S(t), meter". Du gjør dette ved å høyreklikke i grafikkfeltet og ved å velge "Grafikkfelt" og så "Navn på aksen:" på de to aksene.

  • Du kan trekke inn funksjonsuttrykket fra algebrafeltet ved å bruke verktøyet "Flytt"  helt til venstre på verktøyraden, se nedenfor. Ta tak i uttrykket med musepekeren, og plasser det der du vil ha det.

  • Du kan justere hva som vises i bildet ditt, ved å bruke verktøyet "Flytt grafikkfeltet", se nedenfor. Pass på at begge aksene vises med tall. Ha minst mulig luft rundt grafen.

  • Du kan ta bilde av grafikkfeltet ved å velge "Fil" og "Eksporter bilde". Her kan du velge å legge bildet i utklippstavla og lime det inn i dokumentet der du jobber etterpå.

Verktøylinja med de tilgjengelige verktøyknappene i GeoGebra når grafikkfeltet eller algebrafeltet er aktivt. Lengst til venstre er det en knapp med musepeker på og en blå ramme. Knappen er merket med Flytt, aktivt verktøy. Lengst til høyre er det en knapp med et slags kryss. Denne knappen er merket med Flytt grafikkfeltet. Illustrasjon.
Grafen til funksjonen S av t er lik 160 t er tegnet for t-verdier mellom 0 og 100. Grafen er ei rett linje som starter i origo. Illustrasjon.

Vær oppmerksom på at det noen ganger kan være lurt å bytte ut variabelen med x. Hvis vi skal bruke grafikkfeltet til å finne skjæringspunkter, vil ikke GeoGebra alltid kunne finne skjæringspunkter mellom objekter som har ulike variabelnavn.


Grafer i Python

For å vise hvordan vi tegner grafer i Python, bruker vi en litt annerledes funksjon som eksempel. Vi tar for oss følgende funksjon:

f(x)=x3+4x2-2,      x-4,2

Grunnleggende graftegning

For å tegne grafer i Python må vi importere et ekstra bibliotek for graftegning som heter "matplotlib.pyplot". I dette biblioteket finner vi funksjonen "plot()", som tegner grafen. "plot()" tegner grafer litt på samme måte som vi gjør for hånd, ved å ta utgangspunkt i kjente punkter på grafen og så trekke ei linje mellom dem. Det vil si at vi må gi Python en verditabell å jobbe med.

En verditabell for funksjonen vår kan se slik ut:

Verditabell

x

-4

-3

-2

-1

0

1

2

f(x)

-2761-2322

Heldigvis slipper vi å regne ut denne verditabellen selv, det gjør Python for oss. Vi må først lage en array med de x-verdiene vi vil bruke, og så regne ut de tilsvarende y-verdiene. I Python lager vi lista over x-verdier ved hjelp av funksjonen "linspace()", som vi henter fra biblioteket "numpy".

Nå er vi klare for første forsøk på å tegne grafen i Python. Kopier koden under til din editor (eller til den tomme trinketen i boksen nederst på siden) og kjør den.

python

1import matplotlib.pyplot as plt
2import numpy as np
3
4def f(x):
5    return x**3 + 4*x**2 - 2
6
7X = np.linspace(-4,2,7)
8Y = f(X)
9
10plt.plot(X,Y)
11plt.show()
Forklaring til koden

I linje 1 og 2 importerer vi de to bibliotekene vi trenger. Det er vanlig å gi de to bibliotekene de korte kallenavnene "plt" og "np", slik at det skal bli lett å kalle på funksjoner derfra.

I linje 4 og 5 definerer vi funksjonen. Legg merke til at vi må ha gangetegn mellom 4 og x, og at vi skriver "opphøyd i" med **. Legg også merke til at vi skriver "np." foran "linspace". Dette er for å fortelle Python at funksjonen hentes fra biblioteket "numpy".

I linje 7 lager vi ein array (tabell) X med x-verdier. Argumentene til funksjonen, -4, 2 og 7, forteller Python henholdsvis første verdi, siste verdi og antall verdier i X.

I linje 8 regner Python ut funksjonsverdiene til alle de 7 verdiene i X.

I linje 10 plotter vi funksjonen. Her skriver vi plt. foran kommandoen "plot()" så Python vet at det er matplotlib.pyplot som har denne funksjonen.

Kommandoen i linje 11 behøves ikke i alle editorer, men det kan være greit å venne seg til å ha den med. Når vi for eksempel bruker trinket, vil ikke grafen skrives ut dersom vi utelater kodelinja.

🤔 Tenk over: Vi legger merke til at grafen vi får skrevet ut, ikke er så veldig glatt og pen i utskriften vår. Hva kan vi gjøre for at den skal bli penere?

Forklaring

Vi har bare sju punkter på grafen, og det er litt lite for å lage en graf som ikke er rett. Vi kan bytte ut tallet 7 i linje 11 med for eksempel 100, så får vi en penere graf.

Tegning av punkter

Hvis vi ønsker å tegne noen punkter inn på grafen, har vi i matplotlib.pyplot en funksjon som heter "scatter()". Prøv å legge til kodelinja plt.scatter(X,Y) i programmet vårt. Hva skjer da?

Hvis vi ikke ønsker å tegne inn alle punktene vi har brukt for å tegne grafen, men bare noen bestemte punkter, må vil legge til noen linjer for å finne disse punktene. Hvis vi for eksempel vil tegne inn punktene -2,f-2 og 0,f0, kan vi prøve følgende kodelinjer:

python

1X_1 = np.array([-2,0])
2Y_1 = f(X_1)
3
4plt.scatter(X_1,Y_1)
Forklaring til koden

I linje 1 lager vi en array med de x-verdiene vi ønsker å bruke. Legg merke til at vi har brukt kommandoen np.array(liste). Dette er fordi at Python kan regne med tall i en array på flere måter enn tall i ei liste. Kommandoen "array()" gjør ei liste om til en array.

I linje 2 finner vi de tilhørende y-verdiene.

I linje 4 plotter vi de to punktene.

Navn på akser og funksjonen

Akkurat som når vi tegner grafer med GeoGebra, må vi ha navn på aksene våre og selve funksjonen. For å få navnet på selve funksjonen, setter vi inn koden label="navnet på funksjonen" i selve plot-kommandoen. For at denne skal vises, må vi også ha på kommandoen "legend()".

Hvis du vil ha et rutenett i plottet ditt, bruker du kommandoen "grid()".

Å få på plass akser med navn er litt mer komplisert. Her anbefaler vi at du tar vare på kodelinjene under og bruker dem hver gang du skal tegne en funksjon.

python

1plt.plot(X,Y,label = "f(x)")
2plt.legend()
3
4#lager x- og y-akse
5plt.gca().spines['right'].set_visible(False)
6plt.gca().spines['top'].set_visible(False)
7plt.gca().spines['bottom'].set_position("zero")
8plt.gca().spines['left'].set_position("zero")
9
10#setter navn på aksene på egnede steder
11plt.xlabel("$x$") # Tittel på x-aksen
12plt.ylabel("$f(x)$", rotation=0)
13plt.gca().yaxis.set_label_coords(0.3,1)
14plt.gca().xaxis.set_label_coords(1,0.23)
15
16plt.grid()
Forklaring til koden

I linje 1 legger vi inn navnet på funksjonen.

I linje 2 sørger vi for at navnet vi har lagt inn, vises i utskriften.

Linje 5 og 6 fjerner den øverste linja og linja helt til høyre. Linje 7 og 8 flytter linjene nedenfra og til venstre slik at de krysser hverandre i origo.

I linje 11 og 12 setter vi navn på aksene. Bytt ut x og f(x) her med fornuftige navn om grafen din skal beskrive noe konkret. Kommandoen rotation = 0 i linje 12 gjør at teksten står riktig vei. Klarer du å finne ut hva dollartegnene $ rundt aksetitlene gjør med formateringen av dem?

I linje 13 og 14 settes navnene på riktig sted på aksene. Her kan du eksperimentere med tall mellom 0 og 1 for å se hvor navnene blir stående.

I linje 16 har vi satt på rutenett.

Fullstendig kode

Nå kan vi samle alt vi har gjort, og skrive et program som plotter funksjonen vår på en tilfredsstillende måte:

python

1import matplotlib.pyplot as plt
2import numpy as np
3
4def f(x):
5    return x**3+4*x**2-2
6
7X = np.linspace(-4,2,100)
8Y = f(X)
9
10X_1 = np.array([-2,0])
11Y_1 = f(X_1)
12
13
14plt.plot(X,Y,label = "$f(x)$")
15plt.scatter(X_1,Y_1)
16
17plt.legend()
18
19plt.gca().spines['right'].set_visible(False)
20plt.gca().spines['top'].set_visible(False)
21plt.gca().spines['bottom'].set_position("zero")
22plt.gca().spines['left'].set_position("zero")
23
24plt.xlabel("$x$") # Tittel på x-aksen
25plt.ylabel("$f(x)$", rotation=0)
26plt.gca().yaxis.set_label_coords(0.7,1)
27plt.gca().xaxis.set_label_coords(1,0.1)
28
29plt.grid()
30
31plt.show()

Trinket

Nedenfor kan du teste koden. NB: Editoren vil ikke være tilgjengelig under skriftlig eksamen.

CC BY-SASkrevet av Tove Annette Holter og Bjarne Skurdal.
Sist faglig oppdatert 31.07.2024

Læringsressurser

Funksjonsbegrepet