Hopp til innhold
Fagartikkel

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. I dette avsnittet 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 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å kaller vi numerisk.

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 et eksempel under der vi forsøker å løse et likningssett:

Numeriske metoder i Python

I 1T brukte vi numeriske metoder både for hånd og ved hjelp av programmering. Vi fant blant annet nullpunkt gjennom halveringsmetoden og tilnærmede verdier for den deriverte med programmering. Du finner lenker til de to sidene lengst ned på denne sida. Å lete etter løsninger slik vi har gjort tidligere, er tidkrevende hvis man skal gjøre det for hånd, så dette er en oppgave for datamaskiner.

Vi skal her vise en annen måte vi kan bruke når vi skal finne en tilnærming til den deriverte gjennom programmering. Vi skal ta utgangspunkt i formelen for stigningstallet til ei rett linje for å finne stigningstallet til tangenten. Vi minner om den generelle formelen for stigningstall:

a=y2-y1x2-x1

Vi tar for oss funksjonen  f(x)=x3+4x2-x. Vi skal finne en tilnærmingsverdi til den deriverte der  x=1. Det skal vi gjøre ved å regne på gjennomsnittet av stigningstallene til sekanter på hver sin side av tangenten gjennom punktet 1, f1 (punkt A på figuren under).

Vi plasserer punkter med lik avstand til punktet 1,f1 på hver side av  x=1 (punkt B og C på figuren). Vi tegner så sekantene BA og AC og finner stigningstallene til disse. Nå kan vi lage et program som flytter punktene B og C nærmere og nærmere A for å finne en tilnærmingsverdi til den deriverte.

Vi må bestemme oss for hvor nært vi skal komme før vi sier oss fornøyd. Vi kan for eksempel bestemme at vi skal slutte å gå nærmere hvis forskjellen mellom to påfølgende tilnærminger er mindre enn 0,000 1.

Vi velger å starte med at avstanden mellom punktene er 1, og så halverer vi avstanden helt til vi har nådd målet. Bildet viser startpunktet for programmet med tangenten og de to sekantene tegnet inn med sine stigningstall:

La oss rydde i opplysningene over i en algoritme:

  1. Først definerer vi funksjonen.

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

  3. Vi setter startverdien for avstand fra B og C til A.

  4. Vi setter nøyaktigheten for tilnærmingen til h.

  5. Vi setter startverdien for den deriverte til tangent.

  6. Vi setter startverdien til forskjellen mellom to påfølgende tilnærminger til  h+1.

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

  8. Vi regner ut stigningstallene til de to sekantene.

  9. Vi regner ut gjennomsnittet av stigningstallet til de to sekantene.

  10. Vi regner ut forskjellen mellom de to sekantene.

  11. Vi legger den siste tilnærmingen inn i variabelen tangent.

  12. Vi halverer avstanden og starter løkka på nytt.

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

Da kan vi få et program som ser slik ut:

python
1def f(x):
2    return x**3+4*x**2-x
3
4x = 1                #punktet vi skal finne den deriverte i
5avstand = 1          #hvor langt vi skal gå til hver side
6h = 0.0001           #hvor nøyaktig vi krever at tilnærmingen skal være
7
8
9tangent = 20         #startverdi for den deriverte
10
11forskjell = h+1      #startverdi for while-løkka
12
13
14while abs(forskjell) > h:                  #vilkåret for løkka er at forskjellen mellom  
15                                           #denne og forrige tilnærming er større enn h
16    sek_v = (f(x)-f(x-avstand))/avstand    #stigningstallet til venstre sekant
17    sek_h = (f(x+avstand)-f(x))/avstand    #stigningstallet til høyre sekant
18    tangent_2 = (sek_v + sek_h)/2          #gjennomsnittet til de to stigningstallene
19    forskjell = tangent_2 - tangent        #forskjellen mellom denne og forrige tilnærming
20    tangent = tangent_2                    #legger den siste tilnærmingen inn i 
21                                           #plassholderen "tangent"
22    avstand = avstand/2                    #halverer avstanden til punktet x = 1
23
24print(f"Den deriverte i {x} er tilnærmet lik {tangent:.4f}.")
25

Relatert innhold