Programmering på R1-eksamen – forklart steg for steg
Fra våren 2027 kan eksamen i R1 be deg skrive et program selv, og alt skrives for hånd. Her lærer du hva et program er, hvordan du leser det med en tabell, og de metodene som går igjen i R1.
Dette er leksjon 10.5 Programmering på R1-eksamen i Sophus. I kurset har den øving og støtteark (video kommer senere). Den er med når du har tilgang til faget, men leksjon 1.1 er gratis. Se leksjonen
Hva er et program?
Et program er en oppskrift som datamaskinen følger linje for linje, ovenfra og ned. En variabel er et navn på et tall. Linjen a = 2 betyr at a får verdien 2. Linjen a = 3*a − 1 betyr: regn ut høyre side med den gamle a, og la svaret bli den nye a.
På eksamen fra 2027 har du ingen datamaskin. Du kan ikke kjøre programmet, så du må lese det slik datamaskinen gjør det. Det er lettere enn det høres ut, for programmene er korte.
Byggesteinene
- print(a) skriver ut verdien av a.
- for n in range(4): gjentar linjene som er rykket inn, fire ganger. n blir 0, 1, 2 og 3.
- while betingelse: gjentar linjene som er rykket inn, så lenge betingelsen er sann.
- def f(x): lager en funksjon, og return gir svaret tilbake.
- Potens skrives med to gangetegn etter hverandre, ikke med ^, slik du ser i programmene under. Desimaltall skrives med punktum, som 1.15.
Les programmet med en tabell
Lag én kolonne for hver variabel og én rad for hver runde i løkka. Fyll ut tabellen for hånd. Programmet under starter med a = 2 og regner a = 3*a − 1 fire ganger. Det er den rekursive formelen aₙ₊₁ = 3aₙ − 1.
3 · 2 − 1 = 5
3 · 5 − 1 = 14
Etter to runder er a altså 14. To runder til gir 41 og 122.
Metodene som går igjen i R1
Numerisk derivasjon: et program kan ikke la h gå mot null, men det kan bruke en liten h, som 0,001, og regne ut f(x + h) − f(x) delt på h. Svaret er nesten den deriverte.
Halveringsmetoden: skifter f fortegn mellom a og b, ligger et nullpunkt der. Programmet ser på midtpunktet m og beholder den halvdelen der fortegnet skifter, til intervallet er lite nok.
Newtons metode: start med en gjetning x og gå langs tangenten ned til x-aksen. Den nye gjetningen er x − f(x) delt på f′(x). For f(x) = x² − 7 og x = 3 gir det første steget 8 delt på 3, og det neste 127 delt på 48, som er nær √7.
Vekst: en løkke kan gange med vekstfaktoren én gang per år, og en while-løkke kan telle årene til en grense passeres.
3 − 3² − 7 delt på 2 · 3 = 8 delt på 3
127 delt på 48 ≈ 2,6458
√7 ≈ 2,6458
Eksempler
Eksempel 1: en rekursiv formel
Hva skriver programmet ut?
a = 2
for n in range(4):
a = 3*a - 1
print(a)
3 · 2 − 1 = 5
3 · 5 − 1 = 14
3 · 14 − 1 = 41
3 · 41 − 1 = 122
Svar: Programmet skriver ut 122.
range(4) gir fire runder. print står uten innrykk, etter løkka, så bare den siste verdien skrives ut.
Eksempel 2: numerisk derivasjon
Hva skriver programmet ut, og hva er den eksakte verdien av f′(2)?
def f(x):
return x**3 - 2*x
h = 0.001
x = 2
print(round((f(x + h) - f(x)) / h, 3))
2³ − 2 · 2 = 4
2,001³ − 2 · 2,001 − 4 delt på 0,001 ≈ 10,006
3 · 2² − 2 = 10
Svar: Programmet skriver ut 10.006. Den eksakte verdien er f′(2) = 10.
f′(x) = 3x² − 2, så f′(2) = 10. Programmet gir en tilnærming. Med en mindre h kommer svaret enda nærmere 10.
Eksempel 3: halveringsmetoden
Programmet løser likningen 2ˣ = 5. Hva skriver det ut?
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))
2² − 5 = −1
2³ − 5 = 3
2 opphøyd i 2,32 ≈ 4,99
Svar: Programmet skriver ut 2.32.
f(2) er negativ og f(3) er positiv, så nullpunktet ligger mellom 2 og 3. Løkka halverer intervallet til det er kortere enn 0,001. Sjekk svaret på kalkulatoren: 2 opphøyd i 2,32 er nesten 5.
Eksempel 4: skriv programmet selv
Følgen er gitt ved a₁ = 3 og aₙ₊₁ = 2aₙ + 1. Skriv et program som finner det første leddnummeret n der aₙ er større enn 1 000.
a = 3
n = 1
while a <= 1000:
a = 2*a + 1
n = n + 1
print(n)
2 · 3 + 1 = 7
2 · 255 + 1 = 511
2 · 511 + 1 = 1 023
Svar: Programmet skriver ut 9, fordi a₉ = 1 023 er det første leddet over 1 000.
a og n starter på det første leddet. Hver runde regner ut neste ledd og øker n med 1. Løkka går så lenge a ikke er over 1 000. Leddene er 3, 7, 15, 31, 63, 127, 255, 511 og 1 023.
Eksempel 5: simuler vekst
En bestand på 200 dyr vokser med 15 % per år. Programmet finner hvor mange år det tar før bestanden er minst 1 000. Hva skriver det ut?
N = 200
aar = 0
while N < 1000:
N = N * 1.15
aar = aar + 1
print(aar)
200 · 1,15¹¹ ≈ 930,5
200 · 1,15¹² ≈ 1 070,1
Svar: Programmet skriver ut 12.
Etter 11 år er bestanden fortsatt under 1 000, så løkka går én runde til. Du kan også løse 1,15ˣ = 5 med logaritmer og runde opp.
Øv selv: 15 oppgaver i programmering i Python med fasit og løsning steg for steg.
Vanlige feil
- Å tro at range(4) gir 1, 2, 3 og 4. Den gir 0, 1, 2 og 3, altså fire runder.
- Å skrive ^ for potens. I Python skrives potens med to gangetegn etter hverandre.
- Å glemme kolon etter for, while, if og def, eller å rykke inn ujevnt, så det er uklart hva som hører til løkka.
- Å glemme å øke telleren i en while-løkke. Da skriver programmet ut startverdien, eller løkka stopper aldri.
- Å flytte feil ende i halveringsmetoden. Skifter fortegnet mellom a og m, er det b som flyttes til m.
På eksamen
Programmering kommer på del 2. Skal du skrive et program, skriv det for hånd med tydelig innrykk og kolon, og forklar kort med ord hva det gjør. Skal du finne hva et program skriver ut, lag en tabell over variablene for de første rundene, og regn ut verdiene rundt grensen på kalkulatoren.
Leksjonen hører til modulen Eksamensforberedelse og øves til del 2. Les mer om eksamen i R1, og bruk formelarket for R1 når du øver.
Begreper: løkke rekursiv formel numerisk derivasjon halveringsmetoden Newtons metode
Les også
- Programmering i Python: oppgaver med fasit
- Eksamen i matte R1: dette må du kunne · blogg
- Prøv en gratis oppgave i R1
Mer om matte R1
- Alle modulene i matte R1
- Eksamen i R1: del 1, del 2 og hjelpemidler
- Eksamensguide for R1: oppgavetypene med eksempler
- Formelark for R1
- Begrepene i R1 forklart
- De 10 vanligste feilene i R1
- Temaer i R1 forklart med eksempler
- Oppgaver med fasit i R1, ordnet etter tema
Ser du en feil? Si fra på kontakt@sophus.no, så retter vi den.