Programmering i Python: oppgaver med fasit
15 oppgaver i programmering i Python i R1, med løsning steg for steg og fasit. Prøv selv først, og trykk «Vis løsning» når du vil sjekke svaret. Oppgavene er sortert fra kort til lang løsning.
Lær dette i Sophus: 10.5 Programmering på R1-eksamen i Matematikk R1, med forklaring som tekst, støtteark og øving med nye tall hver gang. Se leksjonen
Lettere oppgaver
Oppgave 1
Hva skriver programmet ut?
a = 3
for n in range(4):
a = 2*a + 1
print(a)
Vis løsning på oppgave 1
Lag en tabell over a. a starter på 3 og blir 7, 15, 31, 63. range(4) gir 4 runder, og print står etter løkka, så programmet skriver ut 63.
Fasit: 63
Oppgave 2
Hva skriver programmet ut?
a = 3
for n in range(3):
a = 2*a - 2
print(a)
Vis løsning på oppgave 2
Lag en tabell over a. a starter på 3 og blir 4, 6, 10. range(3) gir 3 runder, og print står etter løkka, så programmet skriver ut 10.
Fasit: 10
Oppgave 3
Hva skriver programmet ut?
s = 0
for n in range(1, 5):
s = s + 4*n + 2
print(s)
Vis løsning på oppgave 3
range(1, 5) gir n = 1, 2, …, 4.
Leddene er 6, 10, 14, 18, og summen er 6 + 10 + 14 + 18 = 48.
Fasit: 48
Oppgave 4
Følgen er gitt ved a₁ = 2 og aₙ₊₁ = 2aₙ. Programmet skal finne det første leddnummeret n der aₙ er større enn 1 000, men det skriver ut 1. Hva mangler?
a = 2
n = 1
while a <= 1000:
a = 2*a
print(n)
- A: n = 0 før løkka
- B: n = n + 1 inne i løkka
- C: a = a + 1 inne i løkka
- D: print(n) inne i løkka
Vis løsning på oppgave 4
n settes til 1 og endres aldri, så programmet skriver ut 1.
Legg til n = n + 1 inne i løkka, rett under linjen som regner ut a.
Da skriver programmet ut 10.
Fasit: B: n = n + 1 inne i løkka
Oppgave 5
Hva skriver programmet ut?
s = 0
for n in range(1, 6):
s = s + 5*n
print(s)
Vis løsning på oppgave 5
range(1, 6) gir n = 1, 2, …, 5.
Leddene er 5, 10, 15, 20, 25, og summen er 5 + 10 + 15 + 20 + 25 = 75.
Fasit: 75
Middels vanskelige
Oppgave 6
En bestand på 500 dyr vokser med 10 % per år. Programmet finner hvor mange år det tar før bestanden er minst 1 500. Hva skriver det ut?
N = 500
aar = 0
while N < 1500:
N = N * 1.1
aar = aar + 1
print(aar)
Vis løsning på oppgave 6
Etter 11 år er bestanden 500 · 1,1¹¹ ≈ 1 426,6, som er under 1 500.
Etter 12 år er den 500 · 1,1¹² ≈ 1 569,2.
Løkka stopper, og programmet skriver ut 12.
Fasit: 12
Oppgave 7
En bestand på 200 dyr vokser med 20 % per år. Programmet finner hvor mange år det tar før bestanden er minst 400. Hva skriver det ut?
N = 200
aar = 0
while N < 400:
N = N * 1.2
aar = aar + 1
print(aar)
Vis løsning på oppgave 7
Etter 3 år er bestanden 200 · 1,2³ = 345,6, som er under 400.
Etter 4 år er den 200 · 1,2⁴ ≈ 414,7.
Løkka stopper, og programmet skriver ut 4.
Fasit: 4
Oppgave 8
Programmet skal skrive ut summen av de 9 første oddetallene (1 + 3 + 5 + …). Hvilken linje skal stå der det står ____?
s = 0
for n in range(1, 10):
____
print(s)
- A: s = s + 2*n + 1
- B: s = s + 2*n - 1
- C: s = 2*n - 1
- D: s = s + n
Vis løsning på oppgave 8
Oddetall nummer n er 2n − 1: n = 1 gir 1, n = 2 gir 3.
Linjen s = s + 2*n - 1 legger til ett oddetall per runde.
Programmet skriver da ut 81, fordi summen av de 9 første oddetallene er 9² = 81.
Fasit: B: s = s + 2*n - 1
Oppgave 9
Programmet løser likningen 2ˣ = 5 med halveringsmetoden. Du vil løse 3ˣ = 5 i stedet, med a = 1 og b = 2. Hvilken linje skal stå i funksjonen f?
def f(x):
return 2**x - 5
a = 2
b = 3
while b - a > 0.001:
m = (a + b) / 2
if f(a) * f(m) <= 0:
b = m
else:
a = m
print(round(m, 2))
- A: return 3**x + 5
- B: return x**3 - 5
- C: return 3^x - 5
- D: return 3**x - 5
Vis løsning på oppgave 9
Skriv likningen som 3ˣ − 5 = 0.
Da er løsningen nullpunktet til f(x) = 3ˣ − 5, og i Python skrives potens med **: return 3**x - 5.
Intervallet passer, fordi 3¹ = 3 er mindre enn 5 og 3² = 9 er større.
Fasit: D: return 3**x - 5
Oppgave 10
Programmet regner ut en tilnærmet verdi for den deriverte. Hva skriver det ut?
def f(x):
return x**2 + 3*x
h = 0.1
x = 1
print(round((f(x + h) - f(x)) / h, 3))
Vis løsning på oppgave 10
For f(x) = x² + 3x er f(x + h) − f(x) delt på h = 2x + 3 + h.
Med x = 1 og h = 0,1 blir det 2 · 1 + 3 + 0,1 = 5,1.
Den eksakte verdien er f′(1) = 5.
Fasit: 5,1
Mer krevende
Oppgave 11
Programmet regner ut en tilnærmet verdi for den deriverte. Hva skriver det ut?
def f(x):
return x**2 - 3*x
h = 0.001
x = 3
print(round((f(x + h) - f(x)) / h, 3))
Vis løsning på oppgave 11
For f(x) = x² − 3x er f(x + h) − f(x) delt på h = 2x − 3 + h.
Med x = 3 og h = 0,001 blir det 2 · 3 − 3 + 0,001 = 3,001.
Den eksakte verdien er f′(3) = 3.
Fasit: 3,001
Oppgave 12
Programmet gjør én runde av halveringsmetoden for f(x) = x² − 35. Hva er a og b etter runden?
def f(x):
return x**2 - 35
a = 5
b = 6
m = (a + b) / 2
if f(a) * f(m) <= 0:
b = m
else:
a = m
print(a, b)
- A: a = 5,5 og b = 5,5
- B: a = 5 og b = 6
- C: a = 5 og b = 5,5
- D: a = 5,5 og b = 6
Vis løsning på oppgave 12
m = 5 + 6 delt på 2 = 5,5. f(5) = 25 − 35 = −10 og f(5,5) = 30,25 − 35 = −4,75. f(a) og f(m) har samme fortegn, så a = m.
Programmet skriver ut 5.5 6.
Fasit: D: a = 5,5 og b = 6
Oppgave 13
Programmet gjør én runde av halveringsmetoden for f(x) = x² − 6. Hva er a og b etter runden?
def f(x):
return x**2 - 6
a = 2
b = 3
m = (a + b) / 2
if f(a) * f(m) <= 0:
b = m
else:
a = m
print(a, b)
- A: a = 2,5 og b = 2,5
- B: a = 2 og b = 3
- C: a = 2,5 og b = 3
- D: a = 2 og b = 2,5
Vis løsning på oppgave 13
m = 2 + 3 delt på 2 = 2,5. f(2) = 4 − 6 = −2 og f(2,5) = 6,25 − 6 = 0,25.
Fortegnet skifter mellom a og m, så b = m.
Programmet skriver ut 2 2.5.
Fasit: D: a = 2 og b = 2,5
Oppgave 14
Programmet gjør ett steg med Newtons metode for f(x) = x² − 37. Svaret rundes av til to desimaler. Hva skriver programmet ut?
x = 6
x = x - (x**2 - 37) / (2*x)
print(round(x, 2))
Vis løsning på oppgave 14
f(6) = 36 − 37 = −1 og f′(6) = 2 · 6 = 12.
Ny x = 6 − −1 delt på 12 ≈ 6,08.
Programmet skriver ut 6.08.
Det er nær √37 ≈ 6,08.
Fasit: 6,08
Oppgave 15
Programmet gjør ett steg med Newtons metode for f(x) = x² − 46. Svaret rundes av til to desimaler. Hva skriver programmet ut?
x = 7
x = x - (x**2 - 46) / (2*x)
print(round(x, 2))
Vis løsning på oppgave 15
f(7) = 49 − 46 = 3 og f′(7) = 2 · 7 = 14.
Ny x = 7 − 3 delt på 14 ≈ 6,79.
Programmet skriver ut 6.79.
Det er nær √46 ≈ 6,78.
Fasit: 6,79
Fasit
Vis fasit til alle oppgavene
- Oppgave 1: 63
- Oppgave 2: 10
- Oppgave 3: 48
- Oppgave 4: B: n = n + 1 inne i løkka
- Oppgave 5: 75
- Oppgave 6: 12
- Oppgave 7: 4
- Oppgave 8: B: s = s + 2*n - 1
- Oppgave 9: D: return 3**x - 5
- Oppgave 10: 5,1
- Oppgave 11: 3,001
- Oppgave 12: D: a = 5,5 og b = 6
- Oppgave 13: D: a = 2 og b = 2,5
- Oppgave 14: 6,08
- Oppgave 15: 6,79
Oppgavene hører til leksjon 10.5 i modulen Eksamensforberedelse, som øves til del 2. Les mer om eksamen i R1, og bruk formelarket for R1 når du øver.
Les også
- Programmering på R1-eksamen – forklart steg for steg
- Del 2 med kalkulator: oppgaver med fasit
- Alle oppgavene i R1
- Begrepene i R1 forklart
Oppgavene er laget av Sophus med de samme oppgavemalene som i kurset, og løsningene er kontrollert av en regnekontroll. Ser du likevel en feil, si fra på kontakt@sophus.no, så retter vi den.