Tegne grafer med Python

Å tegne grafen til en funksjon består av tre trinn: lag en rekke x-verdier, regn ut y-verdiene, og tegn punktene. Funksjonen np.linspace(start, stopp, antall) lager antall jevnt fordelte tall fra start til stopp, og BEGGE endepunktene er med. Regner du med en slik rekke, regnes hvert tall ut for seg: y = x ** 2 kvadrerer alle x-verdiene på en gang. Til slutt tegner plt.plot(x, y) grafen, og plt.show() viser den.

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-2, 2, 5)
y = x ** 2
plt.plot(x, y)
plt.show()

Her er x-verdiene −2,−1,0,1,2-2, -1, 0, 1, 2 og y-verdiene 4,1,0,1,44, 1, 0, 1, 4. Fem punkter er få, så kurven ser kantete ut. Bruker du np.linspace(-2, 2, 100), blir grafen glatt. Du kan sette navn på aksene med plt.xlabel('x') og plt.ylabel('y'), og legge på et rutenett med plt.grid().

Linje for linje
LinjeHva den gjør
x = np.linspace(-2, 2, 5)lager fem x-verdier fra -2 til 2
y = x ** 2regner ut y for alle x-verdiene
plt.plot(x, y)tegner punktene og trekker en linje
plt.show()viser grafen
xy−2−112−112345(0, 0)
Grafen programmet tegner: y = x²

Tips

  • Med np.linspace(0, 10, 11) får du tallene 0, 1, 2, …, 10. Antallet punkter er ELLEVE, ikke ti, for begge endepunktene er med.
  • x ** 2 virker bare når x er laget med np.linspace. En vanlig liste som [1, 2, 3] ** 2 gir feilmelding.
  • Tegner du flere grafer, kall plt.plot én gang per graf før plt.show(). Der kurvene krysser hverandre, er likningen mellom funksjonene løst.

Eksempel: Hvilke punkter tegnes?

Programmet setter x = np.linspace(0, 4, 5) og y = 2 * x + 1. Hvilke punkter tegnes?

Løsning:
  1. np.linspace(0, 4, 5) gir fem jevnt fordelte tall fra 0 til 4, og det er 0, 1, 2, 3 og 4
  2. y = 2 * x + 1 regnes ut for hver x: 2 · 0 + 1 = 1, 2 · 1 + 1 = 3, 2 · 2 + 1 = 5, 2 · 3 + 1 = 7 og 2 · 4 + 1 = 9
  3. punktene er (0, 1), (1, 3), (2, 5), (3, 7) og (4, 9), og de ligger på en rett linje.
Verditabell
xy = 2x + 1
01
13
25
37
49

Oppgaver

Prøv minst én oppgave på hvert nivå.

Lett(3)

L-31Hva betyr plt i import matplotlib.pyplot as plt?

Vis fasit
  1. as plt gir biblioteket et kort navn å bruke
  2. et kortnavn for tegnebiblioteket

L-32Hvilken kommando viser grafen etter at den er tegnet med plt.plot(x, y)?

Vis fasit
  1. plot tegner i minnet, og show viser tegningen
  2. plt.show()

L-33Hvilke tall lager np.linspace(0, 4, 5)?

Vis fasit
  1. Fem jevnt fordelte tall fra 0 til 4, begge endepunkter med
  2. 0, 1, 2, 3, 4
Middels(3)

M-31Programmet setter x = np.linspace(-2, 2, 5) og y = x ** 2. Hva er y-verdiene?

Vis fasit
  1. x-verdiene er -2, -1, 0, 1, 2
  2. kvadratene er 4, 1, 0, 1, 4
  3. 4, 1, 0, 1, 4
Verditabell
xx ** 2
-24
-11
00
11
24

M-32Programmet setter x = np.linspace(0, 4, 5) og y = 2 * x + 1. Hva er den fjerde y-verdien, y[3]?

Vis fasit
  1. Indeks 3 er det fjerde elementet, og da er x = 3
  2. 2 · 3 + 1
  3. 7
Indeks og verdi
Indeksxy
001
113
225
337

M-33Hvor mange punkter tegnes med x = np.linspace(0, 10, 11)?

Vis fasit
  1. Det tredje tallet i linspace er antall punkter
  2. 11
Vanskelig(3)

V-31Hvilke tall lager np.linspace(0, 1, 3)?

Vis fasit
  1. Tre jevnt fordelte tall fra 0 til 1, begge endepunkter med
  2. midten er 0.5
  3. 0, 0.5 og 1

V-32To grafer tegnes for x fra 0 til 4: plt.plot(x, x) og plt.plot(x, 4 - x). I hvilket punkt krysser de hverandre?

Vis fasit
  1. Kurvene krysser der y-verdiene er like
  2. x = 4 - x
  3. 2x = 4
  4. x = 2 og y = 2
  5. (2, 2)
Sjekk i en tabell
xy = xy = 4 - x
113
222
331

V-33Hva er galt med x = [1, 2, 3] etterfulgt av y = x ** 2?

Vis fasit
  1. ** regner ikke elementvis på en vanlig liste, og Python gir feilmelding
  2. bruk en rekke fra np.linspace