Areal under graf med programmering
Nedenfor ser du grafen til funksjonen \(f\) gitt ved
Thea ønsker å bestemme en tilnærmet verdi for arealet av det grønne området som
er avgrenset av \(x\)-aksen, \(y\)-aksen og grafen til \(f\).
Hun vil gjøre dette ved å legge sammen arealene av små rektangler. Hun begynner som vist på figur 2 og figur 3 nedenfor og vil så øke antall rektangler for å få en bedre tilnærming.
- Bestem arealet av de seks rektanglene i figur 2
- Lag et program som Thea kan bruke når hun skal øke antallet rektangler. Du kan for eksempel begynne som vist nedenfor.
def f(x):
return 1 / 9 * (x + 1) * (x - 6) ** 2 # Definerer funksjonen
x_min = 0 # Startverdi for x
x_maks = 6 # Sluttverdi for x
n = 6000 # antall rektangler
bredde = # bredden av hvert rektangel
- Bruk programmet til å bestemme arealet dersom hun bruker 6000 rektangler.
a)\(\frac{196}{9}\)
b) Se LF
c) 20,002
a
Jeg ser at alle rektanglene har bredde 1. Arealet av hvert rektangel er derfor \(A_{\square}=h\cdot b=h\cdot 1=h\). Høyden til rektangelet er gitt ved \(f(x)=\frac{1}{9}(x+1)(x-6)^2\) hvor \(x\in \left\{ 0, 1, 2 , 3, 4, 5 \right\}\).

Jeg legger sammen funksjonsverdiene i CAS og finner at det samlede arealet er
b
def f(x):
return 1 / 9 * (x + 1) * (x - 6) ** 2 # Definerer funksjonen
x_min = 0 # Startverdi for x
x_maks = 6 # Sluttverdi for x
n = 6000 # antall rektangler
bredde = (x_maks - x_min) / n # bredden av hvert rektangel
x = x_min # vi starter med å finne
# f(x) ved f(x_min)
areal = 0 # lager en variabel som summerer
# arealet
for i in range(n):
areal_rektangel = bredde * f(x) # beregener arealet til rektangelet
areal = areal + areal_rektangel # summerer arealet av rektangelet
# og det totale arealet
x = x + bredde # flytter x-verdien bortover langs
# x-aksen tilsvarende bredde av rekt
print(f"Arealet av rektanglene er {areal:.3f}")
Denne løsningen er omtrent 3 ganger så kjapp og bruker lister istedenfor en løkke (men den krever også numpy biblioteket).
import numpy as np
def f(x):
return 1 / 9 * (x + 1) * (x - 6) ** 2 # Definerer funksjonen
x_min = 0 # Startverdi for x
x_maks = 6 # Sluttverdi for x
n = 6000 # antall rektangler
bredde = (x_maks - x_min) / n # bredden av hvert rektangel
x = np.linspace(x_min, x_maks, n+1) # lager array med x-verdier
y = f(x) # regner ut funksjonsverdien
# f(x) for hver x
areal = sum(f(x)*bredde) # multipliserer bredde med høyde
# og summerer til slutt
print(f"Arealet av rektanglene er {areal:.3f}")
c
Bruker programmet jeg lagde i 4b. Det gir utskriften Arealet av rektanglene er 20.002.