3.6

3.6 Numerisk derivasjon med digitale verktøy

Framover-, bakover- og sentraldifferanse, og bruk av rekneark og CAS.

45 min
10 oppgaver
Numerisk derivasjonFramoverdifferanseSentraldifferanseReknearkCAS
Du leser den tradisjonelle versjonen
Din fremgang i kapitlet
0 / 10 oppgaver
Kapitlets plass i kurset
Bygger på

Numerisk derivasjon

Ikkje alle funksjonar kan deriverast analytisk på ein enkel måte. I praksis har vi ofte berre måledata (tabellverdiar) utan eit eksplisitt funksjonsuttrykk. Då må vi tilnærme den deriverte numerisk.

Ideen er enkel: vi bruker differansekvotienten f(a+h)−f(a)h\displaystyle \frac{f(a+h) - f(a)}{h} med ein liten, men endeleg hh i staden for å ta grenseverdien h→0h \to 0. Spørsmålet er: kva differanseformel gir best tilnærming?

Tre differanseformlar
For ein funksjon ff i x=ax = a med steglengde h>0h > 0:

Framoverdifferanse:
f′(a)≈f(a+h)−f(a)hf'(a) \approx \frac{f(a+h) - f(a)}{h}

Bakoverdifferanse:
f′(a)≈f(a)−f(a−h)hf'(a) \approx \frac{f(a) - f(a-h)}{h}

Sentraldifferanse:
f′(a)≈f(a+h)−f(a−h)2hf'(a) \approx \frac{f(a+h) - f(a-h)}{2h}

Sentraldifferansen er som regel den mest nøyaktige av dei tre.

✏️Døme 1: Samanlikning av differanseformlar

La f(x)=x3f(x) = x^3. Tilnærm f′(2)=12f'(2) = 12 med h=0,1h = 0{,}1 ved hjelp av dei tre differanseformlane.

Løysing:

f(2)=8f(2) = 8, f(2,1)=9,261f(2{,}1) = 9{,}261, f(1,9)=6,859f(1{,}9) = 6{,}859.

Framoverdifferanse:
9,261−80,1=12,61(feil: 0,61)\frac{9{,}261 - 8}{0{,}1} = 12{,}61 \quad \text{(feil: } 0{,}61\text{)}

Bakoverdifferanse:
8−6,8590,1=11,41(feil: 0,59)\frac{8 - 6{,}859}{0{,}1} = 11{,}41 \quad \text{(feil: } 0{,}59\text{)}

Sentraldifferanse:
9,261−6,8590,2=12,01(feil: 0,01)\frac{9{,}261 - 6{,}859}{0{,}2} = 12{,}01 \quad \text{(feil: } 0{,}01\text{)}

Sentraldifferansen gir ei mykje betre tilnærming.

Svar: Framover 12,6112{,}61, bakover 11,4111{,}41 og sentral 12,0112{,}01. Sentraldifferansen ligg nærast f′(2)=12f'(2) = 12.

📜Kor stor er feilen?

For små hh er feilen i tilnærmingane omtrent

- framover- og bakoverdifferanse: proporsjonal med hh
- sentraldifferanse: proporsjonal med h2h^2

Når vi halverer hh, blir feilen omtrent halvert med framover- og bakoverdifferansen, men omtrent ein firedel med sentraldifferansen.

I døme 1 er feila 0,610{,}61, 0,590{,}59 og 0,010{,}01 med h=0,1h = 0{,}1. For f(x)=x3f(x) = x^3 er feilen i sentraldifferansen nøyaktig h2h^2, for (a+h)3−(a−h)32h=3a2+h2\displaystyle \frac{(a+h)^3 - (a-h)^3}{2h} = 3a^2 + h^2.

📝Oppgave 1

Lat f(x)=exf(x) = e^x. Tilnærm f′(1)f'(1) med sentraldifferanse. Den eksakte verdien er f′(1)=ef'(1) = e, fordi (ex)′=ex(e^x)' = e^x (kapittel 4.2).

a

Bruk h=0,1h = 0{,}1.

b

Bruk h=0,01h = 0{,}01.

c

Samanlikn feila. Stemmer det at feilen er omtrent proporsjonal med h2h^2?

Numerisk derivasjon med rekneark

I eit rekneark kan vi setje opp numerisk derivasjon systematisk:

ABC
xxf(x)f(x)f′(x)≈f'(x) \approx
a−ha - h=f(A2)=f(A2)
aa=f(A3)=f(A3)=(B4−B2)/(A4−A2)=(B4-B2)/(A4-A2)
a+ha + h=f(A4)=f(A4)

Kolonne C bruker sentraldifferanse: f(a+h)−f(a−h)2h\displaystyle \frac{f(a+h) - f(a-h)}{2h}.
Døme i rekneark-syntaks:
- Celle A2: =A3-0.001
- Celle B2: =A2^3 (for f(x)=x3f(x) = x^3)
- Celle C3: =(B4-B2)/(A4-A2)
📝Oppgave 2

Set opp eit rekneark for å tilnærme den deriverte.

a

Lag ein tabell med xx-verdiar frå 00 til 55 med steglengde 0,50{,}5 for f(x)=x3−3x+1f(x) = x^3 - 3x + 1. Rekn ut sentraldifferansen i kvart indre punkt.

b

Gjenta med steglengd 0,10{,}1. Kor mykje betre blir tilnærminga?

Numerisk og symbolsk derivasjon med CAS

CAS-verktøy (Computer Algebra System) kan både:

1. Derivere symbolsk -- finne det eksakte uttrykket for f′(x)f'(x)
2. Rekne ut numerisk -- gi ein tilnærma verdi av f′(a)f'(a)

I GeoGebra CAS:
- Symbolsk: Derivative[x^3 + sin(x)] gir 3x^2 + cos(x)
- Numerisk: Skriv f(x) := x^3 + sin(x) og så f'(2), og trykk ≈. Det gir f′(2)=12+cos⁡2≈11,584f'(2) = 12 + \cos 2 \approx 11{,}584

I Python med SymPy:

from sympy import *

x = symbols('x')
f = x**3 + sin(x)
# Symbolsk: 3*x**2 + cos(x)
diff(f, x)
# Numerisk verdi i x=2
diff(f, x).subs(x, 2).evalf()
📝Oppgave 3

Bruk CAS eller rekneark til å løyse oppgåvene.

a

Finn f′(x)f'(x) symbolsk for f(x)=x⋅e−x2f(x) = x \cdot e^{-x^2}.

b

Bruk numerisk derivasjon (sentraldifferanse med h=0,001h = 0{,}001) til å tilnærme f′(1)f'(1).

c

Samanlikn det numeriske og analytiske svaret.

Løs oppgaven
📝Oppgave 4

Undersøk korleis steglengda påverkar nøyaktigheita.

a

La f(x)=exf(x) = e^x. Rekn ut sentraldifferansen for f′(1)=ef'(1) = e med h=10−1,10−2,…,10−8h = 10^{-1}, 10^{-2}, \ldots, 10^{-8}. Lag ein tabell over hh og feil.

b

For kva hh får du den minste feilen?

📝Oppgave 5

Gitt tabellverdiar, tilnærm den deriverte.

a

Tabellen viser f(x)f(x): f(1)=3,0f(1) = 3{,}0, f(1,5)=4,2f(1{,}5) = 4{,}2, f(2)=5,8f(2) = 5{,}8, f(2,5)=7,9f(2{,}5) = 7{,}9, f(3)=10,5f(3) = 10{,}5. Tilnærm f′(2)f'(2).

b

Tilnærm f′(1)f'(1) og f′(3)f'(3).

Løs oppgaven

Lese og skrive program

På eksamen får vi ofte eit kort Python-program som bruker den numeriske deriverte

g(x)=f(x+h)−f(x)hg(x) = \frac{f(x+h) - f(x)}{h}

med ein liten hh, til dømes h=0,000001h = 0{,}000001. Då er g(x)≈f′(x)g(x) \approx f'(x).

Ein god forklaring av eit program har to delar:

- Komponentane: kva kvar funksjon, variabel, løkke og if-test betyr.
- Flyten: kva som skjer når programmet køyrer, runde for runde, og kva som blir skrive ut.

Tre mønster går igjen:

- while g(x) > 0: x = x + dx går mot høgre så lenge funksjonen veks, og stoppar ved eit toppunkt.
- while f(x + 1) > f(x): x = x + 1 gjer det same ved å samanlikne funksjonsverdiar, utan derivert.
- while g(x) < c: x = x + dx stoppar der den deriverte har nådd verdien cc, til dømes der tangenten har eit gitt stigningstall.

Programmet finn berre eit punkt med same nøyaktigheit som skrittlengda dx, og det finn berre det første punktet til høgre for startverdien.

✏️Døme 2: Kva skriv programmet ut?

Forklar kva programmet gjer, og kva det skriv ut.

def f(x):
    return -2*x**2 + 24*x + 10

def g(x):
    h = 0.000001
    return (f(x + h) - f(x)) / h

x = 0
dx = 0.5
while g(x) > 0:
    x = x + dx

print(x)

f er f(x)=−2x2+24x+10f(x) = -2x^2 + 24x + 10, ein parabel med toppunkt. g er den numeriske deriverte med h=0,000001h = 0{,}000001. Startverdien er x = 0, og skrittlengda er dx = 0.5.

Vilkåret g(x) > 0 er sant så lenge ff veks. print(x) skriv ut xx-verdien der løkka stoppar, ikkje funksjonsverdien.

g(x)≈f′(x)=−4x+24g(x) \approx f'(x) = -4x + 24, som er positiv for x<6x < 6.

Løkka aukar xx med 0,5 så lenge g(x)>0g(x) > 0: g(0)≈24g(0) \approx 24, g(0,5)≈22g(0{,}5) \approx 22, …, g(5,5)≈2g(5{,}5) \approx 2. Det blir 12 rundar.

I x=6x = 6 er g(6)=−2h≈−2⋅10−6<0g(6) = -2h \approx -2 \cdot 10^{-6} < 0, og løkka stoppar.

Kontroll: f′(x)=0f'(x) = 0 gir x=6x = 6, og f(6)=−72+144+10=82f(6) = -72 + 144 + 10 = 82.

Svar: Programmet skriv ut 6.0, som er xx-verdien til toppunktet (6,82)(6, 82).

✏️Døme 3: Program som finn ein tangent med gitt stigningstall

Grafen til f(x)=x3−4xf(x) = x^3 - 4x har ein tangent med stigningstall 8 for ein x>0x > 0.

a) Skriv eit program som finn xx-verdien.

b) Finn likninga for tangenten.

a) Vi startar i x=0x = 0 og går mot høgre i små steg så lenge den numeriske deriverte er mindre enn 8.

def f(x):
    return x**3 - 4*x

def g(x):
    h = 0.000001
    return (f(x + h) - f(x)) / h

x = 0
dx = 0.001
while g(x) < 8:
    x = x + dx

print(round(x, 3))

Programmet skriv ut 2.0.

Kontroll: f′(x)=3x2−4=8f'(x) = 3x^2 - 4 = 8 gir x2=4x^2 = 4, så x=2x = 2 når x>0x > 0.

Svar: x=2x = 2.

b) f(2)=8−8=0f(2) = 8 - 8 = 0, så tangenten går gjennom (2,0)(2, 0) og har stigningstall 8.

y−0=8(x−2)y - 0 = 8(x - 2)

Svar: y=8x−16y = 8x - 16.

📝Oppgave 6

Sjå på programmet.

def f(x):
    return x**2 - 4*x

x = 0
while x <= 3:
    print(x, f(x))
    x = x + 1

a

Kva skriv programmet ut?

b

Kva må endrast for at programmet også skal skrive ut verdien for x=4x = 4?

c

Kva fortel utskrifta om grafen til ff?

📝Oppgave 7

Ei rektangulær innhegning har areal O(x)=x(20−2x)O(x) = x(20 - 2x), der xx er ei heiltalleg lengd i meter.

def O(x):
    return x*(20 - 2*x)

x = 0
while O(x + 1) > O(x):
    x = x + 1

print(x, O(x))

a

Forklar strategien i programmet, og finn kva det skriv ut.

b

Kontroller svaret ved derivasjon.

c

Vil strategien alltid finne den største verdien til ein funksjon? Grunngiv svaret.

📝Oppgave 8

Programmet nedanfor leitar etter bunnpunktet til f(x)=x2−3xf(x) = x^2 - 3x.

def f(x):
    return x**2 - 3*x

def g(x):
    h = 0.000001
    return (f(x + h) - f(x)) / h

x = 0
while g(x) < 0:
    x = x + 0.4

print(round(x, 2))

a

Kva skriv programmet ut?

b

Finn bunnpunktet ved rekning. Kvifor gir ikkje programmet det eksakte svaret?

c

Foreslå ei endring i koden som gir eit riktigare svar.

📝Oppgave 9

Programmet nedanfor undersøkjer grafen til f(x)=x3−3xf(x) = x^3 - 3x.

def f(x):
    return x**3 - 3 * x

def g(x):
    h = 0.0001
    return (f(x + h) - f(x)) / h

x = -3
while x < 3:
    if (
        g(x) > 0
        and g(x + 0.5) < 0
    ):
        print(
            "toppunkt mellom",
            x,
            "og",
            x + 0.5,
        )
    if (
        g(x) < 0
        and g(x + 0.5) > 0
    ):
        print(
            "bunnpunkt mellom",
            x,
            "og",
            x + 0.5,
        )
    x = x + 0.5

a

Forklar kva if-testane undersøkjer.

b

Finn toppunktet og bunnpunktet til ff ved rekning.

c

Programmet skriv ut

toppunkt mellom -1.5 og -1.0
bunnpunkt mellom 0.5 og 1.0

Forklar kvifor det ikkje skriv «toppunkt mellom -1.0 og -0.5», sjølv om f′(−1)=0f'(-1) = 0.

📝Oppgave 10

La f(x)=ex−2xf(x) = e^x - 2x.

a

Skriv eit program som finn xx-verdien der tangenten til grafen har stigningstall 1, med tre desimalar. Start i x=0x = 0.

b

Finn den eksakte verdien ved rekning, og samanlikn.

c

Finn likninga for tangenten.

Oppsummering

- Den deriverte kan tilnærmast numerisk med differansekvotentar
- Sentraldifferansen f(a+h)−f(a−h)2h\displaystyle \frac{f(a+h) - f(a-h)}{2h} er mest nøyaktig (feilen er omtrent proporsjonal med h2h^2)
- Rekneark og CAS er nyttige verktøy for numerisk derivasjon
- For liten hh gir avrundingsfeil -- det finst ein optimal steglengde
- Numerisk derivasjon blir brukt når analytisk derivasjon er upraktisk eller umogleg
- I eit program er g(x)=f(x+h)−f(x)h\displaystyle g(x) = \frac{f(x+h) - f(x)}{h} med liten hh den numeriske deriverte. Ei løkke som while g(x) > 0 stoppar ved første toppunkt, med nøyaktigheit lik skrittlengda

Repetisjonsoppgåver
Din fremgang
0deloppgaver0 / 5 oppgaver

Dette kapitlet er skrevet av Anthropics toppmodeller (Claude Opus og Claude Fable) og er foreløpig ikke manuelt gjennomgått — kvalitetskontrollen gjøres av uavhengige KI-agenter, og innmeldte feil rettes fortløpende. Funnet en feil? Meld fra, så retter vi den. Les mer om hvordan innholdet lages.