Hopp til innholdet

Programmering i Python: oppgaver med fasit

Matematikk R1 · Vg2, realfagsmatematikk · 15 oppgaver · eksamen: del 2

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

Fra leksjon 10.5 Programmering på R1-eksamen

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

Fra leksjon 10.5 Programmering på R1-eksamen

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

Fra leksjon 10.5 Programmering på R1-eksamen

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)
  1. A: n = 0 før løkka
  2. B: n = n + 1 inne i løkka
  3. C: a = a + 1 inne i løkka
  4. 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

Fra leksjon 10.5 Programmering på R1-eksamen

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

Fra leksjon 10.5 Programmering på R1-eksamen

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

Fra leksjon 10.5 Programmering på R1-eksamen

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

Fra leksjon 10.5 Programmering på R1-eksamen

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)
  1. A: s = s + 2*n + 1
  2. B: s = s + 2*n - 1
  3. C: s = 2*n - 1
  4. 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

Fra leksjon 10.5 Programmering på R1-eksamen

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))
  1. A: return 3**x + 5
  2. B: return x**3 - 5
  3. C: return 3^x - 5
  4. 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

Fra leksjon 10.5 Programmering på R1-eksamen

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

Fra leksjon 10.5 Programmering på R1-eksamen

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

Fra leksjon 10.5 Programmering på R1-eksamen

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)
  1. A: a = 5,5 og b = 5,5
  2. B: a = 5 og b = 6
  3. C: a = 5 og b = 5,5
  4. 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

Fra leksjon 10.5 Programmering på R1-eksamen

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)
  1. A: a = 2,5 og b = 2,5
  2. B: a = 2 og b = 3
  3. C: a = 2,5 og b = 3
  4. 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

Fra leksjon 10.5 Programmering på R1-eksamen

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

Fra leksjon 10.5 Programmering på R1-eksamen

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

Fra leksjon 10.5 Programmering på R1-eksamen

Fasit

Vis fasit til alle oppgavene
  1. Oppgave 1: 63
  2. Oppgave 2: 10
  3. Oppgave 3: 48
  4. Oppgave 4: B: n = n + 1 inne i løkka
  5. Oppgave 5: 75
  6. Oppgave 6: 12
  7. Oppgave 7: 4
  8. Oppgave 8: B: s = s + 2*n - 1
  9. Oppgave 9: D: return 3**x - 5
  10. Oppgave 10: 5,1
  11. Oppgave 11: 3,001
  12. Oppgave 12: D: a = 5,5 og b = 6
  13. Oppgave 13: D: a = 2 og b = 2,5
  14. Oppgave 14: 6,08
  15. 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å

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.