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

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