Bruk programmering til å modellere matematiske sammenhenger.
Matematisk modellering med kode
I matematikk lagar vi ofte modellar — forenkla skildringar av verkelegheita. Ein modell kan til dømes skildre korleis ein folkesetnad veks, korleis temperaturen endrar seg, eller kor mykje pengar du sparer over tid.
Med programmering kan vi gjere modellane levande: vi kan rekne ut verdiar for mange tidspunkt, finne når noko skjer, og skrive ut tabellar som viser utviklinga.
I dette kapittelet skal du:
- Modellere lineær vekst (jamn auke) med kode
- Modellere eksponentiell vekst (prosentvis auke) med kode
- Lage tabellar som viser utviklinga over tid
- Bruke programmering til å løyse likningar ved systematisk prøving
- Utforske matematiske samanhengar med kode
der er stigingstalet (fast endring per steg) og er startverdien.
I Python kan vi modellere dette med ei 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 aukar verdien med 50 kr for kvar månad — ei jamn auke.
Ola set inn 500 kr i sparebøssa kvar månad. Han har 2000 kr frå før. Skriv eit Python-program som viser kor mykje Ola har etter kvar månad i eitt år. Kor lang tid tek 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øyser :
\checkmark
der er startverdien og er vekstfaktoren.
- Viss veksten er , er vekstfaktoren
- Vekst: (t.d. for 5 % auke)
- Reduksjon: (t.d. 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 gangar vi med vekstfaktoren i kvart steg — verdien veks raskare og raskare.
Kari set 5000 kr i banken med 3 % årleg rente (rentes rente). Skriv eit program som viser saldoen kvart år i 20 år. Kor lang tid tek det før pengane er dobla?
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å .
Ein tommelfingerregel seier at doblingstida er omtrent år der er rentesatsen i prosent: år. \checkmark
Løyse likningar med systematisk prøving
Nokre likningar er vanskelege å løyse for hand, men med programmering kan vi finne tilnærma løysingar ved å prøve mange verdiar systematisk.
Metoden vert kalla numerisk løysing eller brute force:
1. Vel eit intervall der løysinga sannsynlegvis finst
2. Prøv mange verdiar i dette intervallet
3. Finn verdien som gjev den minste skilnaden mellom venstre og høgre side
Python er perfekt for dette fordi han kan prøve tusenvis av verdiar på brøkdelen av eit sekund.
For å løyse ei likning numerisk, prøver vi mange verdiar av og finn den som gjev nærast 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 verdiar mellom 0 og 4, og finn den som gjev nærast 5. Jo fleire verdiar vi prøver, desto meir nøyaktig vert svaret.
Ola sparer 200 kr i månaden i ein konto med 0,3 % månadleg rente (rentes rente). Han startar med 0 kr. Skriv eit Python-program som finn ut:
a) Kor mykje 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: Kvar månad legg vi først til renter på eksisterande saldo (gange med ), og deretter legg vi til det nye innskotet på 200 kr. Med rentes rente veks saldoen raskare og raskare.
Ein bil køyrer med konstant fart 80 km/t. Skriv eit Python-program som lagar ein tabell som viser kor langt bilen har køyrt etter 1, 2, 3, ..., 10 timar. Bruk formelen der er strekning, er fart og er tid.
Ein by har 25 000 innbyggjarar og veks med 2 % per år. Skriv eit Python-program som lagar ein tabell over folkesetnaden for kvart av dei neste 10 åra.
Skriv eit Python-program som samanliknar lineær og eksponentiell vekst:
- Lineær: Startar på 100, aukar med 50 per år
- Eksponentiell: Startar på 100, aukar med 10 % per år
Lag ein tabell for 20 år som viser begge verdiane. Når vert den eksponentielle veksten større enn den lineære?
Bruk Python til å finne ei tilnærma løysing av likninga ved å prøve verdiar av mellom 0 og 10. Finn med to desimalars nøyaktigheit.
Du har 10 000 kr og vil kjøpe ein mobiltelefon som kostar 12 000 kr. Du sparer 400 kr per månad. Skriv eit Python-program som finn ut:
a) Etter kor mange månader har du nok pengar?
b) Viss mobilens pris fell med 2 % per månad (han vert billigare med tida), etter kor mange månader har du råd?
Skriv eit Python-program som:
a) Skriv ut dei 30 første Fibonacci-tala
b) Reknar ut forholdet for kvart Fibonacci-tal og viser at forholdet nærmar seg det gylne snittet
Formlar per dag:
- Nye smitta:
- Friskmelde:
- Oppdatering:
Etter kor mange dagar er det flest sjuke samtidig?
- Viss er partal: del på 2
- Viss er oddetal: gang med 3 og legg til 1
Gjenta. Formodninga seier at du alltid endar opp på 1, uansett startverdi.
Skriv eit Python-program som:
a) Viser sekvensen for (denne er overraskande lang!)
b) Finn kva startverdi mellom 1 og 1000 som gjev 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 bakteriar etter timar. Det rette svaret er ca. . Finn feilen og forklar kva som gjekk gale.
Eksponentiell vekst tyder at ein storleik veks med eit fast beløp i kvar periode.
Oppsummering
I dette kapittelet har du lært:
- Lineær vekst med kode: Å modellere jamn auke () ved å leggje til eit fast beløp i kvart steg i ei løkke
- Eksponentiell vekst med kode: Å modellere prosentvis auke () ved å gange med ein vekstfaktor i kvart steg
- Lage tabellar: Å bruke løkker til å rekne ut og skrive ut verdiar for mange tidspunkt
- Numerisk løysing: Å finne tilnærma løysingar av likningar ved å prøve mange verdiar systematisk med ein datamaskin
Nøkkelomgrep
| Omgrep | Forklaring |
|---|---|
| Lineær vekst | Storleiken aukar med eit fast beløp for kvart tidssteg: |
| Eksponentiell vekst | Storleiken aukar med ein fast prosentdel for kvart tidssteg: |
| Vekstfaktor | Talet vi gangar med for kvart steg; for vekst |
| Numerisk løysing | Å finne ei tilnærma løysing ved systematisk prøving av mange verdiar |
| Modellering | Å bruke matematikk og kode til å skildre og forutseie verkelege fenomen |
| Doblingstid | Tida det tek for ein storleik å 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.