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 \(f(x)\) og \(g(x)\) 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.
a) \(g(x)\) er en numerisk tilnærming til \(f'(x)\) (den deriverte av \(f\)).
b) A = terrassepunkt, B = bunnpunkt, C = toppunkt
c) Linje 18: «f har et terrassepunkt for x = …»
a
Funksjonen \(g(x)\) beregner den deriverte til \(f\) numerisk ved hjelp av Newton-kvotienten (forskjellsformelen):
\(g(x)\) er en numerisk tilnærming til den deriverte \(f'(x)\).
b
Koden sjekker fortegnsskiftet til \(g\) rundt et stasjonært punkt ved å sammenligne \(g(x - dx)\) og \(g(x + dx)\):
- Linje 18 (A):
g(x - dx) * g(x + dx) > 0— begge har samme fortegn, altså skifter ikke \(g\) fortegn. Det er ikke et topp- eller bunnpunkt, men et terrassepunkt. - Linje 21 (B):
g(x - dx) < g(x + dx)— \(g\) går fra negativ til positiv, altså er \(f\) synkende til venstre og stigende til høyre. Det er et bunnpunkt. - Linje 24 (C):
g(x - dx) > g(x + dx)— \(g\) går fra positiv til negativ. Det er et toppunkt.
A = terrassepunkt, B = bunnpunkt, C = toppunkt.
c
Vi finner de stasjonære punktene til \(f\) ved å løse \(f'(x) = 0\).
Vi gjenkjenner dette som et fullstendig kvadrat:
Dette har ett dobbelt nullpunkt: \(x = -\dfrac{5}{3}\).
Siden \(f'(x) = \left(x + \frac{5}{3}\right)^2 \geq 0\) for alle \(x\), skifter aldri \(f'\) fortegn. Det betyr at \(g(x - dx)\) og \(g(x + dx)\) begge er ikke-negative rundt \(x = -\frac{5}{3}\), slik at produktet \(g(x-dx) \cdot g(x+dx) > 0\).
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.