Funksjoner med digitale hjelpemidler
Vi fortsetter å bruke eksempelet vårt med en jogger som løper 16 000 m på 100 minutter. Vi har da at funksjonsuttrykket er
Hvis vi vil tegne grafen til 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å.
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.
For å vise hvordan vi tegner grafer i Python, bruker vi en litt annerledes funksjon som eksempel. Vi tar for oss følgende funksjon:
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:
-4 | -3 | -2 | -1 | 0 | 1 | 2 | |
-2 | 7 | 6 | 1 | -2 | 3 | 22 |
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.
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()
🤔 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?
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
1X_1 = np.array([-2,0]) 2Y_1 = f(X_1) 3 4plt.scatter(X_1,Y_1)
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.
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()
Fullstendig kode
Nå kan vi samle alt vi har gjort, og skrive et program som plotter funksjonen vår på en tilfredsstillende måte:
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()
Nedenfor kan du teste koden. NB: Editoren vil ikke være tilgjengelig under skriftlig eksamen.