Bruk programmering til å modellere matematiske sammenhenger.
Matematisk modellering med kode
I matematikk lager vi ofte modeller — forenklede beskrivelser av virkeligheten. En modell kan for eksempel beskrive hvordan en befolkning vokser, hvordan temperaturen endrer seg, eller hvor mye penger du sparer over tid.
Med programmering kan vi gjøre modellene levende: vi kan beregne verdier for mange tidspunkter, finne når noe skjer, og skrive ut tabeller som viser utviklingen.
I dette kapittelet skal du:
- Modellere lineær vekst (jevn økning) med kode
- Modellere eksponentiell vekst (prosentvis økning) med kode
- Lage tabeller som viser utviklingen over tid
- Bruke programmering til å løse likninger ved systematisk prøving
- Utforske matematiske sammenhenger med kode
der er stigningstallet (fast endring per steg) og er startverdien.
I Python kan vi modellere dette med en løkke:
startverdi = 1000 # b: startverdien
endring = 50 # a: fast endring per måned
verdi = startverdi
for maned in range(1, 13):
verdi = verdi + endring
print(f"Måned {maned}: {verdi} kr")Her øker verdien med 50 kr for hver måned — en jevn økning.
Ola setter inn 500 kr i sparebøssen hver måned. Han har 2000 kr fra før. Skriv et Python-program som viser hvor mye Ola har etter hver måned i ett år. Hvor lang tid tar det før han har 10 000 kr?
saldo = 2000
innskudd = 500
print(f"Start: {saldo} kr")
print("-" * 25)
for maned in range(1, 13):
saldo = saldo + innskudd
print(f"Måned {maned:>2}: {saldo} kr")
# Finn når han når 10 000 kr
saldo = 2000
maned = 0
while saldo < 10000:
saldo = saldo + innskudd
maned = maned + 1
print(f"\nOla når 10 000 kr etter {maned} måneder.")Resultat:
Start: 2000 kr
-------------------------
Måned 1: 2500 kr
Måned 2: 3000 kr
Måned 3: 3500 kr
...
Måned 12: 8000 kr
Ola når 10 000 kr etter 16 måneder.Vi kan sjekke med formelen: . Vi løser :
\checkmark
der er startverdien og er vekstfaktoren.
- Hvis veksten er , er vekstfaktoren
- Vekst: (f.eks. for 5 % økning)
- Reduksjon: (f.eks. for 10 % reduksjon)
I Python:
startverdi = 1000
vekstfaktor = 1.05 # 5 % vekst per år
verdi = startverdi
for aar in range(1, 11):
verdi = verdi * vekstfaktor
print(f"År {aar}: {verdi:.2f} kr")Her ganger vi med vekstfaktoren i hvert steg — verdien vokser raskere og raskere.
Kari setter 5000 kr i banken med 3 % årlig rente (rentes rente). Skriv et program som viser saldoen hvert år i 20 år. Hvor lang tid tar det før pengene er doblet?
saldo = 5000
rente = 0.03
vekstfaktor = 1 + rente
print(f"Start: {saldo:.2f} kr")
print("-" * 30)
for aar in range(1, 21):
saldo = saldo * vekstfaktor
print(f"År {aar:>2}: {saldo:.2f} kr")
# Finn doblingstiden
saldo = 5000
aar = 0
while saldo < 10000:
saldo = saldo * vekstfaktor
aar = aar + 1
print(f"\nPengene er doblet etter {aar} år.")Utdrag av resultatet:
Start: 5000.00 kr
------------------------------
År 1: 5150.00 kr
År 2: 5304.50 kr
År 5: 5796.37 kr
År 10: 6719.58 kr
År 15: 7789.81 kr
År 20: 9030.56 kr
Pengene er doblet etter 24 år.Vi kan sjekke med modellen: . For dobling: , altså .
En tommelfingerregel sier at doblingstiden er omtrent år der er rentesatsen i prosent: år. \checkmark
Løse likninger med systematisk prøving
Noen likninger er vanskelige å løse for hånd, men med programmering kan vi finne tilnærmede løsninger ved å prøve mange verdier systematisk.
Metoden kalles numerisk løsning eller brute force:
1. Velg et intervall der løsningen sannsynligvis befinner seg
2. Prøv mange verdier i dette intervallet
3. Finn verdien som gir den minste forskjellen mellom venstre og høyre side
Python er perfekt for dette fordi den kan prøve tusenvis av verdier på brøkdelen av et sekund.
For å løse en likning numerisk, prøver vi mange verdier av og finner den som gir nærmest 0:
# Løs x^2 - 5 = 0 (altså finn tilnærmet verdi av sqrt(5))
beste_x = 0
minste_avvik = 1000 # Start med et stort tall
for i in range(10001):
x = i / 10000 * 4 # Prøv verdier fra 0 til 4
avvik = abs(x**2 - 5)
if avvik < minste_avvik:
minste_avvik = avvik
beste_x = x
print(f"x ≈ {beste_x:.4f}")Her prøver vi 10 001 verdier mellom 0 og 4, og finner den som gir nærmest 5. Jo flere verdier vi prøver, desto mer nøyaktig blir svaret.
Ola sparer 200 kr i måneden i en konto med 0,3 % månedlig rente (rentes rente). Han starter med 0 kr. Skriv et Python-program som finner ut:
a) Hvor mye har han etter 2 år?
b) Når har han spart 50 000 kr?
rente = 0.003 # 0,3 % per måned
innskudd = 200
# a) Beregn saldo etter 2 år (24 måneder)
saldo = 0
for maned in range(1, 25):
saldo = saldo * (1 + rente) + innskudd
print(f"a) Etter 2 år: {saldo:.2f} kr")
# b) Finn når han når 50 000 kr
saldo = 0
maned = 0
while saldo < 50000:
saldo = saldo * (1 + rente) + innskudd
maned += 1
aar = maned // 12
rest_mnd = maned % 12
print(f"b) Han når 50 000 kr etter {maned} måneder ({aar} år og {rest_mnd} mnd)")Resultat:
a) Etter 2 år: 4964.97 kr
b) Han når 50 000 kr etter 184 måneder (15 år og 4 mnd)Forklaring: Hver måned legger vi først til renter på eksisterende saldo (gange med ), og deretter legger vi til det nye innskuddet på 200 kr. Med rentes rente vokser saldoen raskere og raskere.
En bil kjører med konstant fart 80 km/t. Skriv et Python-program som lager en tabell som viser hvor langt bilen har kjørt etter 1, 2, 3, ..., 10 timer. Bruk formelen der er strekning, er fart og er tid.
En by har 25 000 innbyggere og vokser med 2 % per år. Skriv et Python-program som lager en tabell over befolkningen for hvert av de neste 10 årene.
Skriv et Python-program som sammenligner lineær og eksponentiell vekst:
- Lineær: Starter på 100, øker med 50 per år
- Eksponentiell: Starter på 100, øker med 10 % per år
Lag en tabell for 20 år som viser begge verdiene. Når blir den eksponentielle veksten større enn den lineære?
Bruk Python til å finne en tilnærmet løsning av likningen ved å prøve verdier av mellom 0 og 10. Finn med to desimalers nøyaktighet.
Du har 10 000 kr og vil kjøpe en mobiltelefon som koster 12 000 kr. Du sparer 400 kr per måned. Skriv et Python-program som finner ut:
a) Etter hvor mange måneder har du nok penger?
b) Hvis mobilens pris faller med 2 % per måned (den blir billigere med tiden), etter hvor mange måneder har du råd?
Skriv et Python-program som:
a) Skriver ut de 30 første Fibonacci-tallene
b) Beregner forholdet for hvert Fibonacci-tall og viser at forholdet nærmer seg det gylne snitt
Formler per dag:
- Nye smittede:
- Friskmeldte:
- Oppdatering:
Etter hvor mange dager er det flest syke samtidig?
- Hvis er partall: del på 2
- Hvis er oddetall: gang med 3 og legg til 1
Gjenta. Formodningen sier at du alltid ender opp på 1, uansett startverdi.
Skriv et Python-program som:
a) Viser sekvensen for (denne er overraskende lang!)
b) Finner hvilken startverdi mellom 1 og 1000 som gir den lengste sekvensen
antall = 500
vekst = 20
for time in range(1, 11):
antall = antall + vekst
print(f"Time {time}: {antall} bakterier")Programmet viser at det er bakterier etter timer. Det riktige svaret er ca. . Finn feilen og forklar hva som gikk galt.
Eksponentiell vekst betyr at en størrelse vokser med et fast beløp i hver periode.
Oppsummering
I dette kapittelet har du lært:
- Lineær vekst med kode: Å modellere jevn økning () ved å legge til et fast beløp i hvert steg i en løkke
- Eksponentiell vekst med kode: Å modellere prosentvis økning () ved å gange med en vekstfaktor i hvert steg
- Lage tabeller: Å bruke løkker til å beregne og skrive ut verdier for mange tidspunkter
- Numerisk løsning: Å finne tilnærmede løsninger av likninger ved å prøve mange verdier systematisk med en datamaskin
Nøkkelbegreper
| Begrep | Forklaring |
|---|---|
| Lineær vekst | Størrelsen øker med et fast beløp for hvert tidssteg: |
| Eksponentiell vekst | Størrelsen øker med en fast prosentandel for hvert tidssteg: |
| Vekstfaktor | Tallet vi ganger med for hvert steg; for vekst |
| Numerisk løsning | Å finne en tilnærmet løsning ved systematisk prøving av mange verdier |
| Modellering | Å bruke matematikk og kode til å beskrive og forutsi virkelige fenomener |
| Doblingstid | Tiden det tar for en størrelse å doble seg ved eksponentiell vekst |
Dette kapitlet er skrevet av Anthropics toppmodeller (Claude Opus og Claude Fable) og er foreløpig ikke manuelt gjennomgått — kvalitetskontrollen gjøres av uavhengige KI-agenter, og innmeldte feil rettes fortløpende. Funnet en feil? Meld fra, så retter vi den. Les mer om hvordan innholdet lages.