Forside / Artikler / Videregående · Funksjoner
Videregående · Funksjoner
Tegne grafer i Python med matplotlib – steg for steg
Hvordan tegner du grafen til en funksjon i Python? Her bruker du matplotlib og NumPy til å lage grafer med akser, rutenett og forklaringer. Kjør eksemplene i nettleseren, og undersøk hva som skjer når du endrer funksjonsuttrykket.
Veiledningen passer for elever som kjenner koordinatsystemet og enkle funksjonsuttrykk. Du får mest ut av den hvis du også har møtt variabler i Python. Vi bruker programmering til å undersøke matematikk, og skiller mellom det vi ser på en graf og det vi kan vise ved regning.
Endre koden og trykk Kjør. Kjøringen skjer i nettleseren din. Første oppstart og import av store biblioteker krever internett og kan ta litt tid. Python hentes fra jsDelivr. Koden sendes ikke til forlaget av editoren; kode du selv skriver kan likevel gjøre nettverkskall. Artiklene bruker ikke input(). Endringer her er midlertidige: åpne i Pythonverkstedet for å lagre eller laste ned.
1. Tegn en linje fra punkter
Matplotlib lager figurer. Vi importerer tegnedelen med import matplotlib.pyplot as plt. Navnet plt er en kortform som gjør kommandoene enklere å skrive. Her angir vi x- og y-koordinatene til tre punkter på linjen y = 2x + 1.
import matplotlib.pyplot as plt
x = [0, 1, 2]
y = [1, 3, 5]
plt.plot(x, y, marker="o", color="#1b365d")
plt.xlabel("x")
plt.ylabel("y")
plt.title("y = 2x + 1")
plt.grid(True)
plt.show()
Du skal se punktene (0, 1), (1, 3) og (2, 5), forbundet med rette linjestykker. marker="o" gjør punktene synlige. Listene må ha like mange verdier fordi hvert x skal pares med et y.
Legg til punktet som hører til x = 3. Hvordan endres y når x øker med 1?
Se et løsningsforslag
Utvid x-listen til [0, 1, 2, 3] og y-listen til [1, 3, 5, 7]. Når x øker med 1, øker y med 2. Det er stigningstallet til linjen.
2. Tegn en andregradsfunksjon
For en kurve trenger vi flere punkter. np.linspace(-4, 4, 201) lager 201 jevnt fordelte tall fra −4 til 4, med begge endepunktene inkludert. NumPy lar oss beregne funksjonsverdien for alle tallene med ett uttrykk.
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-4, 4, 201)
y = x ** 2 - 4
plt.plot(x, y, color="#1b365d", label="f(x) = x² − 4")
plt.axhline(0, color="gray", linewidth=0.7)
plt.axvline(0, color="gray", linewidth=0.7)
plt.xlabel("x")
plt.ylabel("f(x)")
plt.grid(alpha=0.25)
plt.legend()
plt.show()
Grafen har bunnpunkt (0, −4) og nullpunkter ved x = −2 og x = 2. Nullpunktene kan også finnes ved å løse x² − 4 = 0. Tegningen består av mange korte linjestykker mellom beregnede punkter; den er ikke et bevis på at alle egenskapene er funnet.
Bytt funksjonsuttrykket til x² − 9. Forutsi bunnpunkt og nullpunkter. Oppdater også teksten i label.
Se et løsningsforslag
Bruk y = x ** 2 - 9. Bunnpunktet er (0, −9), og nullpunktene er x = −3 og x = 3. Begge ligger innenfor intervallet fra −4 til 4.
3. Sammenlign to funksjoner
Flere kall til plt.plot() før plt.show() tegner flere grafer i samme figur. Ulike farger og linjestiler gjør dem lettere å skille. label gir navnene, og legend() viser tegnforklaringen.
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-4, 4, 201)
f = x ** 2 - 4
g = 2 * x - 1
plt.plot(x, f, color="#1b365d", label="f(x) = x² − 4")
plt.plot(x, g, "--", color="#b14a24", label="g(x) = 2x − 1")
plt.axhline(0, color="gray", linewidth=0.7)
plt.axvline(0, color="gray", linewidth=0.7)
plt.xlabel("x")
plt.ylabel("y")
plt.grid(alpha=0.25)
plt.legend()
plt.show()
Les av omtrent hvor grafene møtes. Finn deretter x-verdiene ved å sette funksjonsuttrykkene lik hverandre.
Se et løsningsforslag
Likningen blir x² − 4 = 2x − 1, altså x² − 2x − 3 = 0. Faktorisering gir (x − 3)(x + 1) = 0. Dermed er x = 3 eller x = −1. Skjæringspunktene er (3, 5) og (−1, −3).
Utforsk koeffisientene
Utvid eksemplet med variablene a = 1, b = 0 og c = -4, og skriv y = a * x ** 2 + b * x + c. Endre én variabel om gangen. Prøv a = −1, deretter a = 2. Gjenopprett a = 1 før du undersøker b og c.
For a forskjellig fra 0 får du en parabel. Fortegnet til a bestemmer om den åpner oppover eller nedover. c er funksjonsverdien når x = 0. Dersom a = 0, er uttrykket ikke lenger en andregradsfunksjon. Undersøk hva som skjer da.
Vanlige spørsmål og feil
- Hvordan skriver jeg x i andre? Bruk
x ** 2.^betyr ikke potens i Python. - Hvorfor bruker vi NumPy? NumPy-arrays kan regnes på elementvis. En vanlig Python-liste oppfører seg annerledes.
- Hvorfor ser kurven kantete ut? Prøv flere punkter i linspace. Velg også et passende x-intervall.
- Hvorfor mangler grafen? Kontroller importlinjene, se etter feilmeldinger og avslutt med
plt.show().
I nettleserverkstedet vises matplotlib som bilder, ikke som egne interaktive skrivebordsvinduer. Biblioteket lastes ved første import. For videre arbeid kan du bla i Kaares kokebok for videregående eller lese veiledningen til å velge Python-bok.
Dokumentasjon og videre lesing
Oppgavene er laget for denne nettsiden og er ikke bokutdrag. For tekniske detaljer, se: