Python-kode for stasjonære punkter R1 V26
Programkoden nedenfor er ikke helt ferdig.
def f(x):
return 1/3*x**3 + 5/3*x**2 + 25/9*x
def g(x):
h = 0.000001
return (f(x + h) - f(x))/h
x = -4
slutt = 4
dx = 0.002
maks_avvik = 0.000001
while (x < slutt):
x = x + dx
if abs(g(x)) < maks_avvik: #sjekker om g(x) er nær 0
if g(x - dx) * g(x + dx) > 0:
print("f har et A for x =", x)
elif g(x - dx) < g(x + dx):
print("f har et B for x =", x)
elif g(x - dx) > g(x + dx):
print("f har et C for x =", x)
Forklar sammenhengen mellom og i koden.
Hvilke tre ulike begreper skal stå i stedet for A, B og C i linje 18, 21 og 24?
Når programmet kjøres, skrives det ut én setning.
I hvilken linje står denne setningen? Husk å begrunne svaret.
Fasit
er en numerisk tilnærming til (den deriverte av ).
A = terrassepunkt, B = bunnpunkt, C = toppunkt
Linje 18: «f har et terrassepunkt for x = …»
LøsningsforslagKI-generert
Funksjonen beregner den deriverte til numerisk ved hjelp av Newton-kvotienten (forskjellsformelen):
er en numerisk tilnærming til den deriverte .
Koden sjekker fortegnsskiftet til rundt et stasjonært punkt ved å sammenligne og :
- Linje 18 (A):
g(x - dx) * g(x + dx) > 0— begge har samme fortegn, altså skifter ikke fortegn. Det er ikke et topp- eller bunnpunkt, men et terrassepunkt. - Linje 21 (B):
g(x - dx) < g(x + dx)— går fra negativ til positiv, altså er synkende til venstre og stigende til høyre. Det er et bunnpunkt. - Linje 24 (C):
g(x - dx) > g(x + dx)— går fra positiv til negativ. Det er et toppunkt.
A = terrassepunkt, B = bunnpunkt, C = toppunkt.
Vi finner de stasjonære punktene til ved å løse .
Vi gjenkjenner dette som et fullstendig kvadrat:
Dette har ett dobbelt nullpunkt: .
Siden for alle , skifter aldri fortegn. Det betyr at og begge er ikke-negative rundt , slik at produktet .
Den første betingelsen (g(x - dx) * g(x + dx) > 0) slår til, og programmet skriver ut:
«f har et terrassepunkt for x = …»
Setningen som skrives ut, er fra linje 18.