Hopp til innhald
Oppgåve

Korleis bestemme den deriverte i eit punkt numerisk

Her finn du oppgåver for å øve på å finne den deriverte numerisk.

2.3.40

Utvid programmet frå teorisida slik at ein brukar kan leggje inn eit valfritt punkt der ein skal finne den deriverte.

Løysingsforslag
Python
1def f(x):
2    return x**3+4*x**2-x
3
4x = float(input("I kva punkt vil du finne den deriverte?"))                
5                     #innhentar det punktet vi skal finne den deriverte i
6avstand = 1          #kor langt vi skal gå til kvar side
7h = 0.0001           #kor nøyaktig vi krev at tilnærminga skal vere
8
9
10tangent = 20         #startverdi for den deriverte
11
12skilnad = h+1        #startverdi for while-lykkja
13
14
15while abs(skilnad) > h:                    #vilkåret for lykkja er at skilnaden mellom  
16                                           #denne og førre tilnærming er større enn h
17    sek_v = (f(x)-f(x-avstand))/avstand    #stigingstalet til venstre sekant
18    sek_h = (f(x+avstand)-f(x))/avstand    #stigingstalet til høgre sekant
19    tangent_2 = (sek_v + sek_h)/2          #gjennomsnittet til dei to stigingstala
20    skilnad = tangent_2 - tangent          #skilnaden mellom denne og førre tilnærming
21    tangent = tangent_2                    #legg den siste tilnærminga inn i 
22                                           #plasshalderen "tangent"
23    avstand = avstand/2                    #halverer avstanden til punktet x = 1
24
25print(f"Den deriverte i {x} er tilnærma lik {tangent:.4f}.")
26

2.3.41

Ta utgangspunkt i funksjonen f(x)=2x3+x2-2x. Du skal no finne tilnærmingsverdiar til den deriverte i eit valfritt punkt ved hjelp av ein sekant som går gjennom to punkt på kvar side av dette punktet.

a) Skriv ein algoritme som du kan bruke som utgangspunkt for dette programmet.

Løysingsforslag
  1. Først definerer vi funksjonen.

  2. Vi må innhente x-verdien frå brukaren.

  3. Vi må ha ein variabel for kor langt frå 1 punkt B og C skal liggje, vi startar med 1.

  4. Vi må ha ei grense for kor nøyaktig tilnærminga skal vere.

  5. Vi må ha ein startverdi for stigingstalet til sekanten gjennom B og C.

  6. Vi må ha ein variabel for forskjellen mellom to etterfølgjande tilnærmingar.

  7. Vi må lage ei lykkje som halverer avstanden frå punkt B og C til A så lenge forskjellen på to etterfølgjande tilnærmingar er større enn den grensa vi valde i punkt 4.

  8. Vi må skrive ut tilnærminga når vi har kome langt nok.

b) Lag programmet.

Løysingsforslag
Python
1def f(x):
2    return 2*x**3+x**2-2*x
3
4#definerer funksjonen
5
6x = float(input("I kva punkt vil du finne den deriverte?")) 
7#innhentar det punktet vi skal finne den deriverte i
8avstand = 1 #lagar ein variabel som gir avstanden frå (1,f(1))
9h = 0.0001 #lagar ei grense for kor nøyaktig tilnærminga skal vere
10
11tangent = abs((f(x+avstand)-f(x-avstand))/(2*avstand) + 2)
12#lagar ein variabel for første tilnærming og legg til 2 for å vere sikker 
13#på at vilkåret i lykkja ikkje blir oppfylt i første ledd 
14
15forskjell = sek - tangent
16#lagar ein variabel for forskjellen mellom to påfølgjande tilnærmingar
17
18while abs(forskjell) > h:
19    
20    sek = (f(x+avstand)-f(x-avstand))/(2*avstand)
21    forskjell = sek - tangent
22    #finn forskjellen mellom dei to tilnærmingane
23    tangent = sek 
24    #tilordnar tangentverdien til den førebels siste tilnærminga
25    avstand = avstand/2 #halverer forskjellen for å gå nærare
26
27print(f"Den deriverte i {x} er tilnærma lik {tangent:.4f}.")

c) Utvid programmet så du kan leggje inn ein valfri tredjegradsfunksjon.

Løysingsforslag
Python
1def f(a,b,c,d,x):
2    return a*x**3+b*x**2-c*x+d
3
4#definerer funksjonen
5print("Ein tredjegradsfunksjon er på forma a*x^3+b*x^2+c*+d.")
6a = float(input("Kva er a i funksjonen din?"))
7b = float(input("Kva er b i funksjonen din?"))
8c = float(input("Kva er c i funksjonen din?"))
9d = float(input("Kva er d i funksjonen din?"))
10#hentar inn koeffisientane i tredjegradsfunksjonen
11
12x = float(input("I kva punkt vil du finne den deriverte?")) 
13#innhentar det punktet vi skal finne den deriverte i
14avstand = 1 #lagar ein variabel som gir avstanden frå (m,f(m))
15h = 0.0001 #lagar ei grense for kor nøyaktig tilnærminga skal vere
16
17
18tangent = abs((f(a,b,c,d,x+avstand)-f(a,b,c,d,x-avstand))/(2*avstand) + 2)
19#lagar ein variabel for første tilnærming og legg til 2 for å vere sikker 
20#på at vilkåret i lykkja ikkje blir oppfylt i første ledd
21
22forskjell = sek - tangent
23#lagar ein variabel for forskjellen mellom to påfølgjande tilnærmingar
24
25while abs(forskjell) > h:
26    #lagar ei lykkje som testar nærare og nærare punktet
27    avstand = avstand/2 #halverer forskjellen for å gå nærare
28    sek = (f(a,b,c,d,x+avstand)-f(a,b,c,d,x-avstand))/(2*avstand)
29    forskjell = sek - tangent
30    #finn forskjellen mellom dei to tilnærmingane
31    tangent = sek 
32    #tilordnar tangentverdien til den førebels siste tilnærminga
33
34print(f"Den deriverte i {x} er tilnærma lik {tangent:.4f}.")