Programmering maksimum av funksjon med while-løkke

Programmering maksimum av funksjon med while-løkke

Lest inn av KI og ikke kontrollert manuelt enda — kan inneholde feil.

En elev har skrevet programkoden nedenfor.

def f(x):
    return x/(1+x**2)    # Definerer funksjonen f(x)=x/(1+x^2)

x = 0
h = 0.001
while f(x) <= f(x+h):
    x = x+h

print(x)

Forklar hva som skjer når programmet kjøres. Hva ønsker eleven å finne ut?

Gjør nødvendige beregninger, og bestem svaret som eleven ønsker å finne.

Fasit

Programmet finner (tilnærmet) x-verdien der f(x)f(x) har sitt maksimum.

f(x)f(x) har maksimum i x=1x = 1, og f(1)=12f(1) = \frac{1}{2}

LøsningsforslagKI-generert

Programmet starter med x=0x = 0 og en liten skrittlengde h=0,001h = 0{,}001.

while-løkken sammenligner f(x)f(x) med f(x+h)f(x+h): så lenge neste verdi er større enn nåværende verdi (dvs. f(x)f(x+h)f(x) \leq f(x+h)), økes xx med hh. Løkken fortsetter altså oppover langs grafen så lenge funksjonen stiger.

Når f(x)>f(x+h)f(x) > f(x+h), er vi «over toppen» — neste steg ville gi en lavere funksjonsverdi — og løkken stopper. xx er da tilnærmet det punktet der f(x)f(x) har sitt maksimum.

Eleven ønsker å finne x-verdien der f(x)=x1+x2f(x)=\dfrac{x}{1+x^2} har sitt maksimum (og indirekte maksverdien f(x)f(x)).


For å finne eksakt maksimum deriverer vi f(x)=x1+x2f(x) = \dfrac{x}{1+x^2} med kvotientregelen:

f(x)=(1+x2)1x2x(1+x2)2=1+x22x2(1+x2)2=1x2(1+x2)2f'(x) = \frac{(1+x^2)\cdot 1 - x \cdot 2x}{(1+x^2)^2} = \frac{1+x^2 - 2x^2}{(1+x^2)^2} = \frac{1-x^2}{(1+x^2)^2}

Vi setter f(x)=0f'(x) = 0:

1x2=0    x2=1    x=±11 - x^2 = 0 \implies x^2 = 1 \implies x = \pm 1

Siden f(x)f(x) er definert for alle reelle xx og vi søker maksimum for x0x \geq 0 (programmet starter i x=0x = 0 og øker), er x=1x = 1 løsningen.

Vi kontrollerer at det er et maksimum: f(x)>0f'(x) > 0 for 0<x<10 < x < 1 og f(x)<0f'(x) < 0 for x>1x > 1, så x=1x = 1 gir lokalt (og globalt) maksimum.

Maksimalverdien er:

f(1)=11+12=12f(1) = \frac{1}{1+1^2} = \frac{1}{2}

Programmet vil skrive ut x1,000x \approx 1{,}000 (det numeriske svaret avviker med høyst h=0,001h = 0{,}001 fra eksakt svar).

Tastatursnarveier

Navigasjon

⌘K / Ctrl+K
Åpne søk
G F
Gå til Fag
G E
Gå til Eksamener
G T
Gå til Temaer
G K
Gå til Kompetansemål
G H
Hjem
?
Vis snarveier

I oppgave

←/→ · J/K
Forrige / neste oppgave
0
Marker som ikke prøvd
1
Marker som prøvd
2
Marker som trenger hjelp
3
Marker som klart
S
Vis / skjul løsningsforslag
A
Legg til i liste
Esc
Tilbake / avslutt