Eulers metode i små tidssteg, fall med luftmotstand i Python, valg av tidssteg og modell mot måling.
Når akselerasjonen ikke står stille
Bevegelseslikningene fra kapittel 2.3 er effektive, men de har én forutsetning: akselerasjonen må være konstant. For en stein i fritt fall uten luftmotstand holder det, for der er tyngden den eneste kraften og hele veien.
Med luftmotstand går det ikke. Luftmotstanden vokser med farten, og med positiv retning nedover gir Newtons andre lov . Akselerasjonen endrer seg altså med farten, og farten endrer seg med akselerasjonen. Det finnes ingen fast verdi av vi kan sette inn i bevegelseslikningene.
Løsningen er å dele bevegelsen opp i korte tidssteg. Over et kort nok steg endrer farten seg så lite at akselerasjonen nesten er konstant. Da kan vi regne steget ut, regne ut akselerasjonen på nytt med den nye farten, og fortsette. Det blir mange steg, men hvert steg er enkelt, og et program gjør dem på et øyeblikk.
Eulers metode -- ett lite steg av gangen
Ideen bak Eulers metode kommer rett fra definisjonene. Akselerasjon er fartsendring per tid, så over et kort tidssteg er . Fart er posisjonsendring per tid, så . Ett steg består da av fire ting: regn ut akselerasjonen fra kreftene med farten du har nå, finn ny fart , finn ny posisjon , og legg til tiden.
Ta en fallskjermhopper på 80 kg med kg/m før skjermen åpnes, og bruk et grovt tidssteg på 1 s. I starten er farten null, så m/s², og etter ett sekund er farten 9,81 m/s. Nå er det litt luftmotstand, og akselerasjonen faller til 9,51 m/s². Etter to sekunder er farten 19,32 m/s, akselerasjonen 8,64 m/s², og etter tre sekunder er farten 27,96 m/s. Uten luftmotstand ville den vært 29,4 m/s. Vi ser hvordan luftmotstanden bremser økningen litt mer for hvert steg.
Når akselerasjonen faktisk er konstant, gir metoden helt riktig fart. En bil som akselererer med 2 m/s² fra ro, får 2, 4, 6, 8 og 10 m/s etter fem steg på ett sekund, akkurat som . Feilen kommer først når akselerasjonen endrer seg innenfor et steg, og den blir mindre jo kortere steget er.
Fra idé til program
I Python blir Eulers metode en while-løkke. Før løkka setter vi konstantene og startverdiene. Inne i løkka står de fire linjene for ett steg, og betingelsen i while bestemmer når vi er ferdige, for eksempel while s < 100 for et fall på 100 m. Lister tar vare på tidene og fartene, så vi kan plotte farten mot tiden etterpå.
En ball på 0,50 kg med kg/m sluppet fra 100 m gir et lærerikt resultat. Programmet bruker 4,88 s på fallet, og farten ved bakken er 35,5 m/s. Uten luftmotstand ville fallet tatt 4,52 s og endt i 44,3 m/s. Terminalfarten er m/s, og den gir en rask kontroll: farten i programmet skal flate ut mot og aldri gå forbi. Gjør den det, er fortegnet på luftmotstanden trolig feil.
To valg avgjør om programmet er til å stole på. Det ene er tidssteget. Feilen i Eulers metode er omtrent proporsjonal med , så ti ganger mindre steg gir omtrent ti ganger mindre feil. Kjør programmet med halvt så stort steg: endrer svaret seg lite, er steget lite nok. Det andre er stoppbetingelsen. while v > 0 stopper når en ball snur på toppen, ikke når den treffer bakken, så tenk gjennom hva løkka egentlig venter på.
Luftmotstanden trenger ikke være . Svært små og lette ting, som støv og frø, følger bedre . I programmet er det bare én linje som endres, og det er nettopp styrken: alle krefter vi kan skrive som en formel, kan stå i akselerasjonslinja.
Modell mot måling
Et program er bare så godt som modellen i det. For å teste modellen slipper vi noe lett, for eksempel en muffinsform av papir på 0,80 g, filmer fallet og leser av hvor langt den har falt hvert tidels sekund. Etter 1,0 s har formen falt 1,14 m. Uten luftmotstand ville den falt 4,9 m, så luftmotstanden er alt annet enn liten.
Så lar vi programmet prøve seg fram. Vi simulerer fallet med flere verdier av og lagrer posisjonen ved de samme tidene som i målingene. For hver regner vi ut summen av de kvadrerte avvikene mellom modell og måling. Kvadreringen gjør at positive og negative avvik ikke opphever hverandre. For muffinsformen blir summen minst for kg/m, og da treffer modellen alle målepunktene innenfor en centimeter.
Svaret kan kontrolleres uten programmet. Den siste delen av fallet er nesten rett i –-grafen: formen faller med terminalfarten, som stigningstallet gir til 1,24 m/s. Da er kg/m, nesten det samme.
Til slutt vurderer vi selve modellen. Passer kurven dårlig for alle verdier av , kan det være formen på modellen som er feil, og vi prøver . En annen test er å legge to former i hverandre: med skal terminalfarten bli ganger så stor, med dobbelt så stor. Slik blir programmet ikke bare en kalkulator, men et verktøy for å finne ut hvordan naturen faktisk oppfører seg.
Oppsummering
Når akselerasjonen endrer seg underveis, gjelder ikke bevegelseslikningene. Eulers metode deler bevegelsen i korte tidssteg og bruker definisjonene direkte: og , med akselerasjonen regnet ut på nytt fra kreftene i hvert steg. Med konstant akselerasjon gir metoden riktig fart, og ellers blir feilen mindre jo kortere steget er.
I Python blir metoden en løkke med konstanter, startverdier, fire linjer per steg og en stoppbetingelse. Et fall med luftmotstand eller krever bare en annen akselerasjonslinje, og terminalfarten er en rask kontroll av at programmet regner riktig. Tidssteget prøves ved å halvere det og se om svaret endrer seg.
Til slutt møtte vi modell mot måling: vi sammenligner programmet med målinger fra video eller forsøk, prøver oss fram med til summen av de kvadrerte avvikene er minst, kontrollerer med den målte terminalfarten og vurderer om modellen har riktig form.
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.
