Programmering av en bevegelsessimulering

Ferdig labrapport: programmer en enkel bevegelsessimulering i Python som oppdaterer fart og posisjon i hvert tidssteg, og sammenlign resultatet med teori og målinger.

Faglig kvalitetssikret av lærere og toppstudenter · Følger læreplanen (LK20) · Sist oppdatert 2026-09-09

HensiktFramgangsmåteTeoriSensorspørsmål

Du trenger ikke en avansert modell for å simulere bevegelse – bare en løkke som oppdaterer farten og posisjonen litt om gangen. Med noen få linjer Python kan du gjenskape et fritt fall eller et kast, plotte banen og sammenligne med både teori og virkelige målinger.

Programmering av bevegelse i Fysikk 1 forklart enkelt

Mange elever søker etter programmering bevegelse Fysikk 1, Python-simulering av fart og posisjon, Euler-metoden bevegelse, numerisk fysikk forsøk og modellere kast i Python når de skal levere labrapport eller forberede seg til muntlig-praktisk. Programmering er et eget kompetanseområde i LK20, og dette forsøket viser hvordan du kan bruke kode til å utforske fysikk i stedet for bare å sette tall inn i ferdige formler.

Ideen er enkel: vi deler tiden inn i mange små steg Δt og oppdaterer tilstanden i hvert steg. Først regner vi ut den nye farten av akselerasjonen, deretter den nye posisjonen av farten. Denne steg-for-steg-metoden kalles Euler-metoden, og den er kjernen i nesten all numerisk fysikk. Styrken er at den også fungerer når kreftene endrer seg underveis – for eksempel ved luftmotstand – der de vanlige bevegelseslikningene ikke lenger gjelder. Forsøket knytter dermed Fysikk 1-temaet rettlinjet bevegelse sammen med programmering, og lærer deg å vurdere når en modell er god nok.

Dette søker elever ofte hjelp til
  • Må jeg kunne mye programmering? Nei – noen få linjer med en løkke holder. Poenget er å forstå hvordan fart og posisjon oppdateres i hvert steg.
  • Hva gjør løkka i hvert tidssteg? Den oppdaterer først farten med a·Δt, deretter posisjonen med v·Δt, og bygger slik opp bevegelsen fra starttilstanden.
  • Hvorfor avviker simuleringen litt fra formelen? Fordi metoden antar konstant fart i hvert lille tidssteg. Denne diskretiseringsfeilen krymper når du gjør Δt mindre.
  • Hvorfor bruke simulering når formlene finnes? Fordi koden også takler situasjoner uten enkel formel, som luftmotstand eller krefter som varierer.
  • Hvordan vet jeg at koden er riktig? Sammenlign med en kjent analytisk løsning, for eksempel fritt fall. Stemmer de, er metoden riktig implementert.

Hensikt

Lage en enkel numerisk simulering av bevegelse med konstant akselerasjon i Python, og sammenligne den simulerte banen med teoretiske formler og målte data.

Hypotese

En steg-for-steg-oppdatering av fart og posisjon gir tilnærmet de samme verdiene som de analytiske formlene v = v₀ + at og s = v₀t + ½at², og avviket blir mindre når tidssteget krymper.

HMS og sikkerhet

Før du starter
  • Rent databasert forsøk uten fysiske farer.
  • Lagre koden underveis så du ikke mister arbeid.
  • Pass på god arbeidsstilling foran skjermen.

Utstyr du trenger

  • Datamaskin med Python (f.eks. via et nettbasert miljø)
  • Bibliotek for plotting (matplotlib)
  • Eventuelt måledata fra et fall- eller kastforsøk
  • Editor eller notatbok-miljø

Framgangsmåte – steg for steg

  1. Definer starttilstand: posisjon, fart og akselerasjon (f.eks. g).
  2. Velg et lite tidssteg Δt og en sluttid.
  3. Lag en løkke som i hvert steg oppdaterer farten: v = v + a·Δt.
  4. Oppdater deretter posisjonen: s = s + v·Δt.
  5. Lagre posisjon og tid i lister og plott banen.
  6. Sammenlign den simulerte banen med formelen s = v₀t + ½at² og med eventuelle måledata.

Observasjoner og resultater

For et fritt fall fra ro med g = 9,81 m/s² og Δt = 0,01 s:

Tid (s)Simulert s (m)Formel s (m)
0,51,241,23
1,04,934,91
1,511,0611,04
Resultat

Den simulerte posisjonen ligger svært nær formelverdien. Avviket skyldes at metoden tar diskrete steg. Krymper du Δt, blir simuleringen enda nærmere de analytiske verdiene.

Teorien bak

Framgangsmåten: sett starttilstand og tidssteg Δt, la løkka oppdatere v = v + a·Δt og s = s + v·Δt for hvert steg, plott banen og sammenlign med s = v₀t + ½at².

Bevegelse med konstant akselerasjon kan løses analytisk med v = v₀ + a·t og s = v₀·t + ½·a·t². I en numerisk simulering deler vi i stedet tiden inn i små steg Δt og oppdaterer trinnvis (Euler-metoden):

v_ny = v + a·Δt  og  s_ny = s + v·Δt

Hvert steg antar at farten er konstant gjennom det korte intervallet. Det gir en liten feil, men jo mindre Δt er, desto mindre blir feilen og desto bedre stemmer simuleringen med fasit. Styrken ved metoden er at du kan legge til luftmotstand eller varierende krefter der de analytiske formlene ikke lenger gjelder.

Typiske problemstillinger sensor stiller

Hva gjør løkka i hvert tidssteg?

Den oppdaterer først farten med a·Δt og deretter posisjonen med v·Δt. Slik bygges bevegelsen opp steg for steg fra starttilstanden.

Hvorfor avviker simuleringen litt fra formelen?

Fordi metoden antar konstant fart i hvert lille tidssteg. Det gir en diskretiseringsfeil som krymper når Δt blir mindre.

Hva er fordelen med simulering framfor formlene?

Du kan modellere situasjoner uten enkel analytisk løsning, for eksempel bevegelse med luftmotstand eller krefter som endrer seg med tid eller fart.

Sensortips – slik imponerer du

Slik får du toppkarakter
  • Vis hvordan avviket minker når du reduserer Δt.
  • Forklar at metoden generaliserer til krefter der formlene ikke holder.
  • Plott simulering og teori i samme figur for tydelig sammenligning.

Slik vurderer sensor

Det som gir karakter 6
  • Fungerende kode med korrekt oppdatering av fart og posisjon.
  • Sammenligning av simulering med teori og/eller måledata.
  • Drøfting av tidssteg og diskretiseringsfeil.

Typiske elevfeil å unngå

Vanlige feil
  • Å oppdatere posisjonen før farten på en inkonsekvent måte.
  • Å velge for stort tidssteg, slik at feilen blir stor.
  • Å ikke sammenligne med en analytisk løsning eller måledata.

Feilkilder

  • Diskretiseringsfeil fra endelig tidssteg.
  • Avrundingsfeil i flyttall.
  • Feil startverdier eller feil fortegn på akselerasjonen.

Variasjoner av forsøket

  • Legg til luftmotstand proporsjonal med v eller v² og se hvordan banen endres.
  • Simuler et skrått kast med både x- og y-bevegelse.
  • Sammenlign Euler-metoden med en mer nøyaktig metode.

Sentrale begreper

  • Numerisk simulering – Å løse et problem ved å regne mange små steg i stedet for en formel.
  • Tidssteg (Δt) – Det lille tidsintervallet simuleringen går fram med i hvert steg.
  • Euler-metoden – En enkel metode som oppdaterer fart og posisjon trinnvis.
  • Diskretiseringsfeil – Feilen som oppstår fordi tiden deles i endelige steg.

Kompetansemål forsøket dekker

  • Bruke programmering til å modellere og utforske fysiske fenomener.
  • Sammenligne numeriske modeller med analytiske løsninger og målinger.
  • Vurdere gyldighet og begrensninger ved en modell.

Ofte stilte spørsmål

Må jeg kunne mye programmering?

Nei. Noen få linjer med en løkke holder. Poenget er å forstå hvordan fart og posisjon oppdateres steg for steg.

Hvorfor bruke simulering når formlene finnes?

Fordi simulering også takler tilfeller uten enkle formler, som luftmotstand eller krefter som varierer.

Hvordan vet jeg at koden er riktig?

Sammenlign med en kjent analytisk løsning, for eksempel fritt fall. Stemmer de, er metoden implementert riktig.

Kjennetegn på et sterkt svar

På muntlig-praktisk vil sensor høre at du forstår hva koden faktisk gjør, ikke bare at den kjører. Disse punktene løfter svaret fra godt til svært godt:

  • Du forklarer oppdateringen i hvert steg: v ← v + a·Δt og deretter s ← s + v·Δt.
  • Du sammenligner den simulerte banen med den analytiske formelen s = v₀t + ½at².
  • Du viser at avviket krymper når Δt blir mindre, og knytter dette til diskretiseringsfeilen.
  • Du begrunner hvorfor metoden er nyttig: den takler luftmotstand eller varierende krefter der formlene ikke gjelder.
  • Du tester koden mot et kjent tilfelle, for eksempel fritt fall, for å bekrefte at den er riktig.
  • Du knytter forsøket til programmering og modellering som eget kompetanseområde i LK20.

Vanlige misforståelser

  • «Simuleringen er feil fordi den ikke treffer formelen helt.» Nei. Et lite avvik er forventet; det er diskretiseringsfeilen, og den krymper når Δt blir mindre.
  • «Større tidssteg gir bedre resultat fordi det går fortere.» Nei. Større Δt gir raskere kjøring, men dårligere nøyaktighet.
  • «Man må kunne avansert programmering.» Nei. En enkel løkke med to oppdateringslinjer er nok.
  • «Simulering er bare en tungvint måte å bruke formlene på.» Nei. Poenget er at simulering også løser tilfeller uten enkel formel, som luftmotstand.

Slik drøfter du feilkilder og usikkerhet

I en numerisk simulering er den viktigste «feilkilden» diskretiseringsfeilen. Fordi metoden antar at farten er konstant gjennom hvert tidssteg, oppstår det et lite avvik i hvert steg, og avvikene hoper seg opp utover i banen. Dette er ikke en målefeil, men en konsekvens av at vi løser problemet trinnvis. Et godt grep er å kjøre simuleringen med to eller tre ulike Δt og vise at avviket mot den analytiske løsningen krymper når Δt blir mindre.

I tillegg kommer små avrundingsfeil fordi datamaskinen regner med flyttall med begrenset presisjon, men disse er som regel ubetydelige sammenlignet med diskretiseringsfeilen. Feil startverdier eller feil fortegn på akselerasjonen gir derimot store og åpenbare avvik, og er verdt å dobbeltsjekke. For å vurdere om modellen er til å stole på, sammenligner du den med en kjent analytisk løsning som fritt fall – stemmer de godt, kan du bruke metoden også der formlene ikke finnes.

Slik forklarer du forsøket muntlig

Jeg deler tiden inn i mange små steg Δt. I hvert steg oppdaterer jeg først farten ved å legge til akselerasjonen ganget med tidssteget, v ← v + a·Δt, og deretter posisjonen ved å legge til farten ganget med tidssteget, s ← s + v·Δt. Slik bygger jeg opp hele bevegelsen fra starttilstanden, steg for steg. Metoden gir et lite avvik fordi farten egentlig endrer seg litt gjennom hvert steg, men avviket blir mindre når jeg gjør Δt mindre. Fordelen med simulering er at jeg også kan legge til luftmotstand eller krefter som varierer, der de vanlige bevegelseslikningene ikke lenger gjelder.

Simuleringen i en god labrapport

I en labrapport om bevegelsessimulering bør du vise selve oppdateringen tydelig: v ← v + a·Δt og s ← s + v·Δt i en løkke. Forklar hvilke startverdier du brukte (posisjon, fart og akselerasjon), hvilket tidssteg Δt du valgte, og hvor lenge simuleringen gikk. Legg ved et plott der den simulerte banen og den analytiske formelen s = v₀t + ½at² er tegnet i samme figur, slik at leseren ser hvor godt de stemmer overens.

I drøftingen er tidssteget det viktigste. Vis gjerne en liten tabell over avviket for to eller tre ulike Δt, så det blir tydelig at feilen krymper når Δt blir mindre. Forklar at avviket kommer av at metoden antar konstant fart gjennom hvert intervall, og nevn at flyttall gir en bitte liten avrundingsfeil i tillegg. Avslutt med å peke på styrken ved metoden: den lar deg legge til luftmotstand eller andre krefter der formlene ikke lenger gjelder, og da blir simuleringen den eneste praktiske veien til svaret.

Klar for muntlig-praktisk?

Øv på programmeringsforsøket og resten av Fysikk 1 med oppgaver, eksamenstrener og kapittelgjennomgang.

Til eksamenstreneren

Relaterte sider

Grafer for fritt fallFritt fallNewtons andre lovFysikk 1Alle Fysikk 1-forsøkKrefter og Newtons loverForsøk: fritt fallEksamenstrenerEksamensoppgaver med fasit

Relaterte sider

← Tilbake til ifingo