1.3
Python for fysikk

1.3 Python for fysikk

Variabler, lister, løkker og if-tester i Python brukt på formler og måledata: tabeller, gjennomsnitt, modeller og plott.

70 min
9 oppgaver
PythonVariablerLister og løkkerIf-testerMåledataPlotting
Du leser den lesevennlige versjonen
Din fremgang i kapitlet
0 / 9 oppgaver

Hvorfor programmere i fysikk?

Mye av regningen i fysikk er den samme regningen gjentatt. Den kinetiske energien til en bil ved fire ulike farter, farten mellom ti målepunkter i et forsøk, fallstrekningen for en hel rekke tider: formelen er den samme, bare tallene skifter. Et program gjør slike gjentakelser raskt, uten slurvefeil, og kan tegne resultatene som en graf etterpå.

Vi bruker Python, og vi trenger overraskende lite av det. Noen få byggesteiner rekker langt: variabler som tar vare på tall, lister med mange verdier, løkker som gjør det samme for hver verdi, if-tester som bare gjør noe når en betingelse er oppfylt, og et bibliotek som tegner grafer. Med dem kan vi både regne ut formler og behandle målinger fra egne forsøk. Senere, i kapittel 3.4, bruker vi de samme byggesteinene til å regne ut bevegelse steg for steg.

Variabler og regning

En variabel er et navn på et tall: m = 0.50 og v = 12.0. Python vet ingenting om enheter, så enheten skriver vi i en kommentar bak #, og vi holder oss til SI-enheter gjennom hele programmet. Regnetegnene er de vanlige, med to ting å passe på: gange skrives *, og opphøyd i skrives **, så 12mv2\tfrac{1}{2}mv^2 blir 0.5 * m * v**2. Skriver du v^2, får du noe helt annet.

Python følger vanlig regnerekkefølge, så s / (2 * a) og s / 2 * a er to forskjellige ting. Bruk parenteser når du er i tvil. Desimaltall skrives med punktum, 0.5, fordi komma skiller to verdier fra hverandre.

Med print skriver programmet ut resultatet. En f-streng som f"{Ek:.1f} J" bestemmer hvor mange desimaler som vises, slik at utskriften blir lett å lese. Med m=0,50m = 0{,}50 kg og v=12,0v = 12{,}0 m/s skriver programmet 36.0 J.

📝Oppgave Quiz 1

Lister, løkker og tabeller

En liste samler mange verdier under ett navn: farter = [30, 50, 80, 110]. Elementene nummereres fra null, så farter[0] er 30 og farter[3] er 110. Med en for-løkke går programmet gjennom lista og gjør de samme linjene for hver verdi. Linjene som hører til løkka, har innrykk, og det er innrykket alene som forteller Python hvor løkka slutter.

Slik lager vi en tabell fra en formel. For en stein som slippes fra ro, er s=12gt2s = \tfrac{1}{2}gt^2. En løkke over tidene 0, 0,5, 1,0, 1,5 og 2,0 s skriver ut 0, 1,23, 4,91, 11,04 og 19,62 m. Tabellen viser noe formelen sier, men som er lettere å se i tall: dobbelt så lang tid gir fire ganger så lang strekning.

Noen ganger vet vi ikke hvor mange ganger noe skal gjentas. En sprettball som når 70 % av forrige høyde, skal sprette til den ikke lenger kommer over en viss høyde. Da passer en while-løkke, som går så lenge en betingelse er sann. Og en if-test gjør bare noe når betingelsen er oppfylt, for eksempel å skrive en advarsel når stopplengden blir over 50 m.

📝Oppgave Quiz 2

Måledata, modeller og plott

Den virkelige nytten kommer når vi har målinger. En vogn slippes fra ro på et skråplan, og en bevegelsessensor måler posisjonen hvert 0,2 s: 0, 0,050, 0,190, 0,435, 0,765 og 1,205 m. Vi legger tidene og posisjonene i hver sin liste og lar en løkke regne ut gjennomsnittsfarten i hvert intervall, si−si−1ti−ti−1\displaystyle \frac{s_i - s_{i-1}}{t_i - t_{i-1}}. Fartene blir 0,25, 0,70, 1,23, 1,65 og 2,20 m/s. Farten øker med omtrent like mye hver gang, så akselerasjonen ser ut til å være konstant.

Det kan vi teste med en modell. Er akselerasjonen konstant, er s=12at2s = \tfrac{1}{2}at^2, og hvert målepunkt gir en verdi for a=2st2\displaystyle a = \frac{2s}{t^2}. Gjennomsnittet blir 2,42 m/s². Nå kan programmet regne ut modellen for mange tider og tegne den som en kurve, med målingene som punkter i samme koordinatsystem. Ligger punktene på kurven, uten at avvikene følger et mønster, beskriver modellen bevegelsen godt.

Plottet lager vi med biblioteket matplotlib: plt.plot(t, s, "o") for målepunktene og plt.plot(t_modell, s_modell) for kurven, med størrelse og enhet på begge aksene. Det er den samme arbeidsmåten vi bruker senere, når en modell skal sammenlignes med et forsøk.

📝Oppgave Quiz 3

Oppsummering

Et program gjør den samme beregningen mange ganger, raskt og uten regnefeil. Variabler tar vare på tallene, med enheten i en kommentar, og regnetegnene er vanlige bortsett fra * for gange og ** for opphøyd i. Desimaltall skrives med punktum.

Lister samler mange verdier, nummerert fra null. En for-løkke gjør det samme for hver verdi og lager tabeller fra formler, en while-løkke går så lenge en betingelse er sann, og en if-test gjør noe bare når betingelsen er oppfylt. Innrykket bestemmer hvilke linjer som hører sammen.

Med måledata i lister regner programmet ut gjennomsnittsfart, gjennomsnitt og konstanter i en modell, og matplotlib tegner målingene som punkter og modellen som en kurve. Ligger punktene på kurven, passer modellen. De samme byggesteinene bruker vi i kapittel 3.4 til å regne ut bevegelse steg for steg.

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.