Bruk programmering til å modellere og utforske naturfaglige fenomener.
Moderne naturvitenskap er uløselig knyttet til datamaskiner og programmering. Fra å forutsi vær til å simulere klimaendringer, fra å analysere DNA-sekvenser til å modellere pandemier - programmering gjør det mulig å utforske fenomener som ville vært umulige å studere på andre måter.
Hvorfor programmering i naturfag?
- Beregninger: Gjør tusenvis av beregninger på sekunder
- Visualisering: Lag grafer og animasjoner av data
- Simulering: Test "hva hvis"-scenarier uten virkelige eksperimenter
- Automatisering: Repeter analyser med ulike verdier
- Modellering: Bygg matematiske modeller av naturfenomener
I dette kapittelet skal du lære:
- Grunnleggende programmering i Python
- Hvordan bruke variabler, løkker og betingelser
- Hvordan lage enkle naturvitenskapelige modeller
- Hvordan visualisere data med grafer
- Kritisk vurdering av programmodeller
``pythonVariabler med ulike datatyper
masse = 5.0 # Desimaltall (float)
antall = 10 # Heltall (int)
navn = "Natrium" # Tekst (string)
er_metall = True # Sann/usann (boolean)
Matematiske operatorer:
Operator Betydning Eksempel + Addisjon 5 + 3 = 8 - Subtraksjon 5 - 3 = 2 Multiplikasjon 5 3 = 15 / Divisjon 5 / 2 = 2.5 Potens 5 2 = 25 // Heltallsdivisjon 5 // 2 = 2 % Rest (modulo) 5 % 2 = 1
Nyttige funksjoner:
`python
import math
math.sqrt(16) # Kvadratrot: 4.0
math.pi # Pi: 3.14159...
abs(-5) # Absoluttverdi: 5
round(3.7) # Avrunding: 4
``Lag et program som beregner energien til en foton gitt bølgelengden, og omvendt.
Der:
- E = energi (Joule)
- h = Plancks konstant (6.626 × 10⁻³⁴ J·s)
- c = lyshastigheten (3 × 10⁸ m/s)
- λ = bølgelengde (meter)
``pythonKonstanter
h = 6.626e-34 # Plancks konstant (J·s)
c = 3e8 # Lyshastighet (m/s)
Forklaring: Grønt lys med bølgelengde 550 nm har en fotonenergi på ca. 2.26 eV.
Skriv et program som beregner fart (v), gitt avstand (s) og tid (t). Test programmet med s = 150 m og t = 12 s.
``pythonTell fra 1 til 5
for i in range(1, 6):
print(f"Telling: {i}")
While-løkke - når du ikke vet hvor mange ganger:
`python
Halvering til under 1
verdi = 100
antall = 0
while verdi >= 1:
print(f"Steg {antall}: {verdi}")
verdi = verdi / 2
antall = antall + 1
print(f"Antall halveringer: {antall}")
`range()-funksjonen:
`python
range(5) # 0, 1, 2, 3, 4
range(1, 6) # 1, 2, 3, 4, 5
range(0, 10, 2) # 0, 2, 4, 6, 8 (steg 2)
`Lister - samle mange verdier:
`python
temperaturer = [18, 20, 22, 19, 21]
print(temperaturer[0]) # Første element: 18
print(len(temperaturer)) # Antall elementer: 5
temperaturer.append(23) # Legg til element
``Skriv et program som beregner gjennomsnittlig temperatur fra en liste med målinger: [18.5, 19.2, 20.1, 18.8, 19.5]
``python
temperatur = 25
if temperatur > 30:
print("Varmt!")
elif temperatur > 20:
print("Behagelig")
elif temperatur > 10:
print("Kjølig")
else:
print("Kaldt!")
`
Sammenligningsoperatorer:
| Operator | Betydning |
|---|---|
| == | Er lik |
| != | Er ikke lik |
| > | Større enn |
| < | Mindre enn |
| >= | Større enn eller lik |
| <= | Mindre enn eller lik |
python
alder = 16
harbillett = True
if alder >= 15 and harbillett:
print("Velkommen til filmen!")
elif alder < 15: print("Du er for ung.")
else:
print("Du trenger billett.")
``| Operator | Betydning |
|---|---|
| and | Begge må være sanne |
| or | Minst én må være sann |
| not | Snur sann til usann |
Lag et program som simulerer radioaktiv nedbrytning med halveringstid på 10 år, og plotter resultatet.
``python
import matplotlib.pyplot as plt
# Skriv ut for hvert 10. år
if tid % 10 == 0:
print(f"År {tid}: {mengde:.1f} atomer ({mengde/N0
Utskrift:
`
År 0: 1000.0 atomer (100.0%)
År 10: 500.0 atomer (50.0%)
År 20: 250.0 atomer (25.0%)
År 30: 125.0 atomer (12.5%)
År 40: 62.5 atomer (6.2%)
År 50: 31.2 atomer (3.1%)
``Forklaring: Mengden halveres hver 10. år. Etter 5 halveringstider (50 år) er bare 3.1% igjen.
Modifiser programmet for radioaktiv nedbrytning til å finne ut hvor mange år det tar før bare 1% av stoffet er igjen. (Start med 1000 enheter, halveringstid 10 år)
``python
import matplotlib.pyplot as plt
Formatstrenger for utseende:
Kode Betydning 'b-' Blå linje 'r--' Rød stiplet 'go' Grønne sirkler 'k^' Svarte trekanter 'b-o' Blå linje med sirkler
Flere nyttige funksjoner:
`python
plt.figure(figsize=(10, 6)) # Størrelse på figur
plt.subplot(1, 2, 1) # Flere grafer ved siden av hverandre
plt.scatter(x, y) # Punktdiagram
plt.bar(x, y) # Stolpediagramplt.savefig('graf.png') # Lagre som bilde
``Lag et program som simulerer eksponentiell befolkningsvekst med 2% årlig vekst. Start med 1000 individer og simuler 50 år. Plot resultatet.
Grunnleggende Python:
- Variabler: Lagrer verdier (tall, tekst, lister)
- Operatorer: +, -, , /, (potens)
- Print: Skriv ut resultater
Løkker:
- for: Når du vet antall gjentakelser
- while: Når du ikke vet antall gjentakelser
- Lister: Samle mange verdier
Betingelser:
- if/elif/else: Ta beslutninger i koden
- Sammenligninger: ==, !=, >, <, >=, <=
- Logiske: and, or, not
Visualisering med matplotlib:
- plt.plot() for linjediagram
- plt.xlabel(), plt.ylabel(), plt.title() for tekst
- plt.grid(), plt.legend(), plt.show()
Modellering i naturfag:
- Radioaktiv nedbrytning: N = N₀ · 0.5^(t/t½)
- Eksponentiell vekst: N = N₀ · (1+r)^t
- Fotonenergi: E = h·c/λ
Det viktigste å huske:*
- Programmering automatiserer beregninger
- Modeller er forenklinger - vurder alltid begrensninger
- Visualisering gjør data lettere å forstå
Lag et program som simulerer en rovdyr-byttedyr-modell (Lotka-Volterra).
Startbetingelser:
- Byttedyr (kaniner): 100
- Rovdyr (rever): 20
- Reproduksjonsrate kaniner: 0.1 per måned
- Dødsrate kaniner pga. rever: 0.01 per møte
- Dødsrate rever (uten mat): 0.1 per måned
- Reproduksjonsrate rever (med mat): 0.005 per fanget kanin
Simuler 100 måneder og plot begge populasjonene.
Vurder følgende programmodell kritisk:
``python``Modell for å forutsi karakterer basert på studietimer
studietimer = 10
karakter = studietimer * 0.5 + 1
print(f"Forventet karakter: {karakter}")
a) Hva forutsier modellen for 10 timers studier?
b) Hva er begrensningene med denne modellen?
c) Hvordan kunne modellen forbedres?
I dette kapittelet har du lært:
- Programmering i naturfag: Hvordan Python brukes som verktøy for beregninger, visualisering og modellering av naturfaglige fenomener
- Grunnleggende Python: Variabler, matematiske operatorer, print-funksjonen og nyttige importerte funksjoner
- Løkker og lister: For-løkker, while-løkker og lister for å gjenta beregninger og samle data
- Betingelser: If/elif/else-setninger for å ta beslutninger i programmet
- Visualisering med matplotlib: Lage grafer og diagrammer for å presentere data
- Modellering: Simulere naturvitenskapelige fenomener som radioaktiv nedbrytning og befolkningsvekst
| Begrep | Forklaring |
|---|---|
| Variabel | En «boks» som lagrer verdier (tall, tekst, lister) |
| For-løkke | Gjenta kode et bestemt antall ganger |
| While-løkke | Gjenta kode så lenge en betingelse er sann |
| Matplotlib | Python-bibliotek for å lage grafer og diagrammer |
| Modellering | Bruke programkode til å simulere naturfaglige fenomener |