Hopp til innhold
Bokmål
Fagstoff

Hvordan bestemme den deriverte i et punkt numerisk

Du skal lære å bestemme tilnærmingsverdier til den deriverte ved bruk av numeriske metoder.

Til nå har vi sett på hvordan vi kan finne den deriverte eksakt, enten algebraisk som grenseverdien til et uttrykk eller grafisk som stigningstallet til en tangent. Nå skal vi finne den deriverte i et punkt numerisk, men for å gjøre det må vi vite hva det vil si å løse noe numerisk.

Numerisk metode med CAS i GeoGebra

Du har kanskje lagt merke til at det for eksempel i GeoGebra er to alternativer for å løse en likning, markert med x  = eller x  . Disse tilsvarer kommandoene "Løs" og "NLøs". Den første varianten finner det eksakte svaret, og den andre varianten finner et tilnærmet svar. Som oftest er svarene nokså like, men kanskje har du også opplevd å få ulikt svar hvis du bruker begge metodene?

Noen ganger greier ikke GeoGebra å regne ut det eksakte svaret på likningen, men vi kan finne et tilnærmet svar ved å velge "NLøs". Andre ganger finner GeoGebra kanskje to løsninger ved å regne eksakt, mens det bare kommer én tilnærmet løsning. Denne måten å finne løsninger på er en numerisk metode.

Det å finne et tall numerisk skiller seg fra andre måter å regne på ved at det er en form for såkalt prøve-og-feile-metode. Det vil si at man starter med et forslag til løsning, og ved hjelp av ulike mønstre nærmer man seg den egentlige løsningen. Når GeoGebra har funnet en løsning, slutter programmet å lete, selv om det kan finnes flere løsninger. Dette er en viktig grunn til alltid å velge eksakt løsning av likninger, for så å runde av svarene etterpå.

Vi kan se på et eksempel der vi forsøker å løse et likningssett:

Vi legger merke til at "Løs" finner begge de to løsningene, mens "NLøs" sluttet å lete etter å ha funnet den ene løsningen. Vi kan stort sett stole på at løsningen "NLøs" gir oss, er rett, men ikke at den gir oss alle løsningene. Dette er felles for de fleste numeriske metoder.

Numerisk derivasjon i Python

I 1T brukte vi numeriske metoder både for hånd og ved hjelp av programmering. Vi fant blant annet nullpunkt på oppgavesiden "Programmering av nullpunkt med halveringsmetoden". Vi fant også tilnærmede verdier for den deriverte med programmering på oppgavesiden "Tilnærmede verdier til den deriverte". Å lete etter løsninger er tidkrevende hvis man skal gjøre det for hånd, så dette er en oppgave for datamaskiner.

Vi skal her vise en måte vi kan bruke når vi skal finne en tilnærming til den deriverte gjennom programmering. Vi bruker som eksempel at vi skal finne den deriverte der x=2 for funksjonen fx=ex+ln x. Vi tar utgangspunkt i definisjonen til den deriverte:

f'x=limx0fx+x-f(x)x

Hvis vi i stedet for å la x gå mot 0 setter x=h, der h er et veldig lite tall, får vi det vi kaller Newtons kvotient. Da kan vi si at vi kan definere den deriverte som en tilnærming slik:

f'xfx+h-f(x)h

Målet vårt er nå å lage et program som kan gjøre tilnærmingen til den deriverte så god vi ønsker, gjennom å gjøre h mindre og mindre. Før vi begynner selve kodingen, kan det lønne seg å beskrive nøye i en tekst hva vi ønsker å gjøre, før vi lager en mer trinnvis algoritme.

🤔 Tenk over: Hva må være med i programmet for at vi skal finne en god tilnærming til den deriverte? Prøv selv å formulere en tekst før du ser på beskrivelsen av programmet i boksen under.

Beskrivelse av programmet

Vi skal bruke Newtons kvotient til å finne en tilnærming til den deriverte i et punkt. Da må vi først definere funksjonen vi skal derivere, og en funksjon for den deriverte. Vi må også oppgi hvilken x-verdi vi skal finne den deriverte i. Vi må bestemme oss for hvor nøyaktig vi synes tilnærmingen skal være. Vi kan for eksempel bestemme at vi skal slutte å gjøre den mer nøyaktig hvis forskjellen mellom to påfølgende tilnærminger er mindre enn 0,0001.

Vi må fortelle programmet hvor stor h skal være når vi starter, og vi må ha en verdi å sammenlikne den første tilnærmingen vår med. Så lenge differansen mellom den nye og den forrige verdien for den deriverte er større enn 0,0001, skal vi regne ut en ny tilnærmet verdi for den deriverte med en ny h-verdi som er halvparten av den forrige h-verdien. Så skal vi sammenlikne den nye verdien for den deriverte med den forrige. Dette skal vi fortsette med til differansen er mindre enn eller lik 0,0001. Til slutt må skrive ut den deriverte.

Algoritme

Ut fra teksten over kan vi prøve å skrive en algoritme for programmet:

  1. Først definerer vi funksjonen.

  2. Vi definerer en funksjon for den deriverte.

  3. Vi definerer x-verdien til punktet der vi skal finne den deriverte.

  4. Vi setter startverdien til h.

  5. Vi definerer en variabel na for nøyaktighet og setter den til 0,0001.

  6. Vi setter startverdien for forrige tilnærmingsverdi til h+1 og startverdi for siste tilnærmingsverdi til h.

  7. Vi starter ei løkke som skal gå så lenge forskjellen mellom to påfølgende tilnærminger er større enn na.

  8. Inne i løkka regner vi ut en tilnærming og halverer h.

  9. Vi må skrive ut tilnærmingen når vi har kommet langt nok.

Program

Følg algoritmen over og se om du klarer å lage programmet før du ser i boksen. Kanskje er ditt program mer effektivt enn vårt, eller bare annerledes, men like bra? Husk alltid at det er mange måter å lage et program på.

Forslag til program
Python
1import numpy as np
2
3def f(x):
4    return np.exp(x)+np.log(x)          #definerer funksjonen
5def derivert(x,h):
6    return (f(x+h)-f(x))/h              #definerer tilnærming til den deriverte
7
8x = 2                 #punktet der vi skal finne den deriverte
9h = 1                 #startverdi for h 
10na = 0.0001           #hvor nøyaktig vi krever at tilnærmingen skal være 
11forrige = h + 1       #et startpunkt for forrige så løkka starter
12ny = 1
13
14while abs(forrige - ny) > na:          #vilkåret for at løkka skal kjøre
15    forrige = ny                       #flytter verdien for siste tilnærming
16    ny = derivert(x,h)                 #legger nyeste tilnærming inn 
17    h = h/2                            #halverer h
18
19print(f'Den deriverte der x = {x}, er omtrent {derivert(x,h):.2f}.')

På oppgavesiden skal du få prøve andre måter å tilnærme verdien til den deriverte på.

Skrevet av Tove Annette Holter og Bjarne Skurdal.
Sist oppdatert 19.09.2025