Tilnærmede verdier for den deriverte med programmering - Elektroniske kretser og nettverk (EL-ELE vg1) - NDLA

Hopp til innhold
Oppgave

Tilnærmede verdier for den deriverte med programmering

Med programmering kan vi finne tilnærmede verdier for den deriverte.

3.4.40

Vi ser på funksjonen

f(x)=x2+2

og finner at den deriverte funksjonen f'(x) er

f'(x)=2x

Ut ifra denne kan vi for eksempel regne ut den deriverte når  x=0,5.

f'(0,5)=2·0,5=1

Relatert innhold

Fagstoff
Definisjonen av den deriverte

Her ser vi hvordan vi kan finne den deriverte til en funksjon ved manuell regning, og vi definerer den deriverte funksjonen.

a) Spørsmål

Hva betyr det at  f'(0,5)=1?

Svar

At  f'(0,5)=1  betyr at stigningstallet til tangenten til grafen når x=0,5, er 1. Det betyr også at den momentane vekstfarten til funksjonen når x=0,5, er 1.

Det er vanskelig å lage et program som kan finne den deriverte funksjonen til en vilkårlig funksjon. Målet vårt er nå å lage et program som kan regne ut tilnærmede verdier for den deriverte til en funksjon uten at vi kjenner den deriverte funksjonen. Til det kan vi bruke at den deriverte funksjonen f'(x) er den verdien

ΔyΔx=fx+Δx-fxΔx

nærmer seg når Δx går mot null.

b) Spørsmål

Hvorfor kan vi ikke sette  Δx=0  direkte i uttrykket?

Svar

Dersom vi prøver å sette  Δx=0  rett inn i uttrykket, får vi 0 i nevneren på brøken.

Vi prøver nå å regne ut verdien av brøkuttrykket med en liten verdi for Δx. Vi setter  Δx=0,1.

f'0,5  f0,5+0,1-f0,50,1=f0,6-f0,50,1=0,62+2-0,52+20,1=1,1

Vi kommer nokså nærme det rette svaret, som altså er 1. Vi burde få et bedre svar dersom vi gjør Δx enda mindre. Vi setter Δx=0,01.

c) Utregning

Bruk den samme framgangsmåten som over, og finn en tilnærming til f'(0,5) ved å sette  Δx=0,01.

Løsning

f'0,5  f0,5+0,01-f0,50,01=f0,51-f0,50,01=1,01

Vi fikk som forventet en mye bedre tilnærming til det riktige svaret, men vi kan få det til enda bedre.

d) Utregning

Bruk den samme framgangsmåten som over, og finn tilnærminger til f'(0,5) ved å sette  Δx=0,001  og deretter  Δx=0,0001.

Fasit

 Δx=0,001 :  f'(0,5)1,001

 Δx=0,0001:  f'(0,5)1,0001

Slik kan vi fortsette og få bedre og bedre tilnærminger, men vi kommer aldri helt til den riktige verdien, som er 1. La oss først sette opp en tabell over resultatene.

Δx0,1 0,01 0,001 0,0001f'(0,5) 1,1   1,01  1,001  1,0001

Vi må sette ei grense for når vi synes vi er nærme nok. Til dette kan vi bruke at endringen fra én tilnærmet verdi for f'(0,5) til den neste blir mindre og mindre etter hvert som Δx blir mindre og mindre. Når endringen blir liten nok, kan vi si oss fornøyde med svaret. Dette er ting vi kan teste i det programmet vi skal lage.

e) Algoritme

Nå kan vi starte med programmet. Lag et oppsett der du skriver med ord hvordan programmet skal virke – en algoritme for programmet.

Løsningsforslag

Det er flere måter å løse dette på, og her er ett forslag.

Vi kan la programmet regne ut nye tilnærmede verdier for deriverte ved å la verdien for Δx bli én tidel av den forrige verdien, slik vi gjorde manuelt over. Så lar vi programmet gjøre dette helt til endringen i den tilnærmede verdien for den deriverte blir mindre enn eller lik 0,00001, som kan være et greit mål på hvor nærme vi er det riktige svaret.

Algoritmen for programmet blir slik:

  • Brukeren skriver inn en vilkårlig x-verdi, som blir lagret i variabelen xverdi.
  • Vi lar variabelen deltax få startverdi lik 0,1.
  • Programmet regner ut en tilnærmet verdi for den deriverte med formelen  fx+Δx-fxΔx der vi bruker verdiene til variablene xverdi og deltax.
  • Vi deler verdien av deltax på 10 og regner ut en ny verdi for den deriverte med den nye deltax-verdien.
  • Så lenge differansen mellom den nye og den forrige verdien for den deriverte er større enn 0,00001, skal vi regne ut en ny tilnærmet verdi for den deriverte med en ny deltax-verdi som er én tidel av den forrige deltax-verdien. Så skal vi sammenligne den nye verdien for den deriverte med den forrige. Dette skal vi fortsette med til differansen er mindre enn eller lik 0,00001.
  • Til slutt skal den siste verdien for den deriverte skrives ut til skjermen.

f) Koding

Skriv koden til et program som passer til algoritmen over. Du kan lage programmet i den editoren du bruker til vanlig, eller du kan bruke den interaktive editoren nedenfor. (NB! Det kan ta litt tid fra du trykker på avspillingsknappen til programmet blir kjørt!)

Tips

Programmet kan bruke en egendefinert funksjon f som regner ut funksjonsverdier for en vilkårlig x-verdi og en egendefinert funksjon fderivert som regner ut tilnærmede verdier for den deriverte for en vilkårlig x-verdi og med en vilkårlig verdi for Δx. Alternativt kan vi sette opp regnestykkene direkte i stedet for å bruke funksjoner i programmet, men programmet blir mer oversiktlig om vi bruker egendefinerte funksjoner.

Du kan bruke en while-løkke til å teste om svaret er godt nok.

I while-løkken kan du skrive ut verdiene av Δx og de tilnærmede verdiene av den deriverte slik at du kan se hvordan disse verdiene utvikler seg for hver gang løkken kjører.

Tips dersom programmet går i en evig løkke

Legg inn en test på at dersom løkken har gått mer enn 20 ganger, skal programmet hoppe ut.

g) Testing

Test programmet på funksjonen  f(x)=-x2-2. Får du like gode svar som med den opprinnelige funksjonen? Hvorfor/hvorfor ikke?

Tips

Legg utskrift av variabelen derivert inn i while-løkken for å følge med på utviklingen.

h) Testing

Test programmet på funksjonen  f(x)=6x5-2  med  x=-3. Får du riktig svar? Eventuelt: Hvorfor blir det ikke rett svar?

Tips

Hvor mange desimaler klarer editoren å operere med? Endre på vilkåret for at while-løkken skal kjøre slik at det blir testet på den relative differansen i stedet for selve differansen.

i) Algoritme og koding

Lag programmet slik at brukeren kan skrive inn en vilkårlig polynomfunksjon av grad 3 eller mindre.

Skrevet av Bjarne Skurdal.
Sist faglig oppdatert 25.04.2020