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 og y-verdiene . 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 | Hva den gjør |
|---|---|
x = np.linspace(-2, 2, 5) | lager fem x-verdier fra -2 til 2 |
y = x ** 2 | regner ut y for alle x-verdiene |
plt.plot(x, y) | tegner punktene og trekker en linje |
plt.show() | viser grafen |
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 ** 2virker bare nårxer laget mednp.linspace. En vanlig liste som[1, 2, 3] ** 2gir feilmelding.- Tegner du flere grafer, kall
plt.plotén gang per graf førplt.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?
np.linspace(0, 4, 5)gir fem jevnt fordelte tall fra 0 til 4, og det er 0, 1, 2, 3 og 4y = 2 * x + 1regnes 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- punktene er (0, 1), (1, 3), (2, 5), (3, 7) og (4, 9), og de ligger på en rett linje.
| x | y = 2x + 1 |
|---|---|
| 0 | 1 |
| 1 | 3 |
| 2 | 5 |
| 3 | 7 |
| 4 | 9 |
Oppgaver
Prøv minst én oppgave på hvert nivå.
Lett(3)
L-31Hva betyr plt i import matplotlib.pyplot as plt?
Vis fasit
as pltgir biblioteket et kort navn å bruke- et kortnavn for tegnebiblioteket
L-32Hvilken kommando viser grafen etter at den er tegnet med plt.plot(x, y)?
Vis fasit
plottegner i minnet, ogshowviser tegningenplt.show()
L-33Hvilke tall lager np.linspace(0, 4, 5)?
Vis fasit
- Fem jevnt fordelte tall fra 0 til 4, begge endepunkter med
- 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
- x-verdiene er -2, -1, 0, 1, 2
- kvadratene er 4, 1, 0, 1, 4
- 4, 1, 0, 1, 4
| x | x ** 2 |
|---|---|
| -2 | 4 |
| -1 | 1 |
| 0 | 0 |
| 1 | 1 |
| 2 | 4 |
M-32Programmet setter x = np.linspace(0, 4, 5) og y = 2 * x + 1. Hva er den fjerde y-verdien, y[3]?
Vis fasit
- Indeks 3 er det fjerde elementet, og da er x = 3
- 2 · 3 + 1
- 7
| Indeks | x | y |
|---|---|---|
| 0 | 0 | 1 |
| 1 | 1 | 3 |
| 2 | 2 | 5 |
| 3 | 3 | 7 |
M-33Hvor mange punkter tegnes med x = np.linspace(0, 10, 11)?
Vis fasit
- Det tredje tallet i
linspaceer antall punkter - 11
Vanskelig(3)
V-31Hvilke tall lager np.linspace(0, 1, 3)?
Vis fasit
- Tre jevnt fordelte tall fra 0 til 1, begge endepunkter med
- midten er
0.5 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
- Kurvene krysser der y-verdiene er like
- x = 4 - x
- 2x = 4
- x = 2 og y = 2
- (2, 2)
| x | y = x | y = 4 - x |
|---|---|---|
| 1 | 1 | 3 |
| 2 | 2 | 2 |
| 3 | 3 | 1 |
V-33Hva er galt med x = [1, 2, 3] etterfulgt av y = x ** 2?
Vis fasit
**regner ikke elementvis på en vanlig liste, og Python gir feilmelding- bruk en rekke fra
np.linspace