Finne verdi programmet skriver ut

Finne verdi programmet skriver ut

Bruk en egnet strategi til å bestemme verdien som skrives ut når programmet nedenfor kjøres.

def O(x):
    return -0.1*x**2 + 2000*x - 50000

x = 0

while O(x + 1) > O(x):
    x = x + 1

print(x)
Fasit

Programmet skriver ut 1000010\,000.

Løsningsforslag

Jeg ser at programmet består av en funksjon O(x)O(x) som muligens er en overskuddsfunksjon. while-løkka i programmet kjører så lenge O(x+1)>O(x)O(x+1)>O(x), altså kjører løkka så lenge O(x)O(x) stiger. Inni løkka økes xx-verdien med 1, altså vil programmet skrive ut xx-koordinaten til toppunktet til O(x)O(x).

Den enkleste måten å bestemme toppunktet på er å derivere OO og sette lik null.

O(x)=0,2x+20000,2x+2000=00,2x=2000x=10000\begin{aligned} O'(x)&=-0{,}2x+2000 \\ -0{,}2x+2000 &= 0\\ 0{,}2x&=2000\\ x&=10\,000 \end{aligned}

Programmet skriver ut 10 000.

Sensorveiledning

Oppgaven gir til sammen 2 poeng

1 poeng for riktig strategi og 1 poeng for riktig utregning.

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