3.4
Numeriske metodar for rørsle

3.4 Numeriske metodar for rørsle

Eulers metode i små tidssteg, fall med luftmotstand i Python, val av tidssteg og modell mot måling.

80 min
14 oppgaver
Eulers metodeTidsstegPythonLuftmotstandTerminalfartModell mot måling
Du leser den tradisjonelle versjonen
Din fremgang i kapitlet
0 / 14 oppgaver

Numeriske metodar for rørsle

I kapittel 2.3 brukte vi rørslelikningane. Dei gjeld berre når akselerasjonen er konstant. Det er han i fritt fall utan luftmotstand, der den einaste krafta er tyngda og a=ga = g.

Med luftmotstand er det annleis. For ein ball som fell, med positiv retning nedover og luftmotstand L=kv2L = kv^2, gir Newtons andre lov

ma=mg−kv2ma = mg - kv^2

a=g−kmv2a = g - \frac{k}{m}v^2

Akselerasjonen avheng av farten, og farten endrar seg heile tida. Det finst ingen fast verdi av aa å setje inn i rørslelikningane.

I dette kapittelet deler vi rørsla opp i mange korte tidssteg. I kvart steg reknar vi ut akselerasjonen frå kreftene akkurat då, og brukar han til å finne ny fart og ny posisjon. Eit program gjer dei mange stega for oss.

I dette kapittelet


- Eulers metode: Δv=a Δt\Delta v = a\,\Delta t og Δs=v Δt\Delta s = v\,\Delta t i små tidssteg
- Fall med luftmotstand i Python, med lister og plott
- Luftmotstand L=kv2L = kv^2 og L=kvL = kv, og terminalfarten som kontroll
- Val av tidssteg og stoppvilkår
- Modell mot måling: bestemme kk ved å samanlikne programmet med målingar frå video eller forsøk
Eulers metode
Eulers metode reknar ut ei rørsle i korte tidssteg Δt\Delta t. I kvart steg blir akselerasjonen aa rekna ut frå kreftene, og så blir farten og posisjonen oppdaterte:

vny=v+a Δtsny=s+vny Δttny=t+Δtv_{\text{ny}} = v + a\,\Delta t \qquad s_{\text{ny}} = s + v_{\text{ny}}\,\Delta t \qquad t_{\text{ny}} = t + \Delta t

Akselerasjonen blir rekna som konstant innanfor kvart steg. Jo kortare tidssteg, jo meir nøyaktig blir resultatet.

Eulers metode

Frå akselerasjon til ny fart


Akselerasjonen er fartsendring per tid. Over eit kort tidssteg Δt\Delta t endrar akselerasjonen seg lite, så

a=ΔvΔta = \frac{\Delta v}{\Delta t}

Δv=a Δt\Delta v = a\,\Delta t

vny=v+a Δtv_{\text{ny}} = v + a\,\Delta t

Frå fart til ny posisjon


På same måte er farten posisjonsendring per tid. Det gir Δs=v Δt\Delta s = v\,\Delta t (vis dette i oppgåve 3), og

sny=s+vny Δts_{\text{ny}} = s + v_{\text{ny}}\,\Delta t

Eitt steg


I kvart tidssteg gjer vi fire ting, i denne rekkjefølgja:
- reknar ut akselerasjonen frå kreftene med farten vi har no
- finn ny fart med Δv=a Δt\Delta v = a\,\Delta t
- finn ny posisjon med Δs=v Δt\Delta s = v\,\Delta t
- legg Δt\Delta t til tida

Så gjentek vi, med den nye farten. Her brukar vi den nye farten når posisjonen blir flytta. Somme program flyttar posisjonen først, med farten frå starten av steget. Med kort tidssteg gir dei to rekkjefølgjene nesten same svar.

Kvifor metoden verkar


Innanfor eitt steg reknar vi som om akselerasjonen er konstant. Det er ikkje heilt rett når krafta endrar seg, men feilen i kvart steg blir liten når steget er kort. Når akselerasjonen faktisk er konstant, gir metoden heilt rett fart: vv–tt-grafen er då ei rett linje, og kvart steg aukar farten med nøyaktig a Δta\,\Delta t.
✏️Eksempel 1: Eulers metode for hand

Ein fallskjermhoppar med masse 80 kg hoppar frå eit helikopter som står stille i lufta. Før skjermen blir opna, er luftmotstanden L=kv2L = kv^2 med k=0,25k = 0{,}25 kg/m.

Bruk Eulers metode med Δt=1,0\Delta t = 1{,}0 s, og rekn ut farten etter 1, 2 og 3 s. Samanlikn med farten utan luftmotstand.

Positiv retning nedover.

a=g−kmv2=9,81−0,2580v2=9,81−0,003125 v2a = g - \frac{k}{m}v^2 = 9{,}81 - \frac{0{,}25}{80}v^2 = 9{,}81 - 0{,}003125\,v^2

tt (s)vv (m/s)aa (m/s²)vny=v+a Δtv_{\text{ny}} = v + a\,\Delta t (m/s)
009,819{,}810+9,81⋅1,0=9,810 + 9{,}81 \cdot 1{,}0 = 9{,}81
19,819{,}819,81−0,003125⋅9,812=9,519{,}81 - 0{,}003125 \cdot 9{,}81^2 = 9{,}519,81+9,51⋅1,0=19,329{,}81 + 9{,}51 \cdot 1{,}0 = 19{,}32
219,3219{,}329,81−0,003125⋅19,322=8,649{,}81 - 0{,}003125 \cdot 19{,}32^2 = 8{,}6419,32+8,64⋅1,0=27,9619{,}32 + 8{,}64 \cdot 1{,}0 = 27{,}96

Utan luftmotstand:
v=gt=9,81 m/s2⋅3,0 s=29,4 m/sv = gt = 9{,}81 \text{ m/s}^2 \cdot 3{,}0 \text{ s} = 29{,}4 \text{ m/s}
Svar: Farten er ca. 9,8 m/s, 19,3 m/s og 28,0 m/s etter 1, 2 og 3 s. Utan luftmotstand ville han vore 29,4 m/s etter 3 s. Akselerasjonen minkar fordi luftmotstanden aukar med farten.

Eulers metode i Python

Eit program for Eulers metode har alltid dei same delane:
- konstantar: gg, masse, luftmotstandstal og tidssteget dt
- startverdiar: tid, posisjon og fart når rørsla startar
- ei løkke som gjer eitt tidssteg kvar gong: akselerasjon, ny fart, ny posisjon, ny tid
- eit stoppvilkår som avsluttar løkka, til dømes når ballen er ved bakken
- lister som tek vare på verdiane, så vi kan skrive ut og plotte dei

Fall utan luftmotstand


g = 9.81        # m/s^2
dt = 0.01       # tidssteg i s
t = 0.0
s = 0.0         # m, positiv nedover
v = 0.0         # m/s, positiv nedover

while s < 100:
    a = g
    v = v + a * dt
    s = s + v * dt
    t = t + dt

print(f"{t:.2f} s   {v:.1f} m/s")

Løkka går så lenge ballen har falle mindre enn 100 m. Programmet skriv ut 4.52 s 44.3 m/s. Rørslelikningane gir t=2s/g=4,52t = \sqrt{2s/g} = 4{,}52 s og v=gt=44,3v = gt = 44{,}3 m/s. Utan luftmotstand kan vi altså kontrollere programmet med rørslelikningane.

Med luftmotstand


For å ta med luftmotstanden endrar vi berre linja for akselerasjonen:

    a = g - k * v**2 / m

Resten av programmet er det same. Det er styrken til metoden: alle krefter vi kan skrive som ein formel, kan stå i denne linja.

✏️Eksempel 2: Fall med luftmotstand

Ein ball med masse 0,50 kg blir sleppt frå 100 m høgd. Luftmotstanden er L=kv2L = kv^2 med k=0,0024k = 0{,}0024 kg/m.

a) Lag eit program som reknar ut falltida og farten ved bakken, og som plottar farten mot tida.

b) Samanlikn med fritt fall utan luftmotstand, og kontroller resultatet med terminalfarten.

a) Positiv retning nedover, a=g−kmv2a = g - \dfrac{k}{m}v^2.

from math import sqrt
import matplotlib.pyplot as plt

g = 9.81        # m/s^2
m = 0.50        # masse i kg
k = 0.0024      # luftmotstandstal i kg/m
dt = 0.001      # tidssteg i s

t = 0.0         # tid i s
s = 0.0         # strekning i m, positiv nedover
v = 0.0         # fart i m/s, positiv nedover
tider = [t]
farter = [v]

while s < 100:
    a = g - k * v**2 / m
    v = v + a * dt
    s = s + v * dt
    t = t + dt
    tider.append(t)
    farter.append(v)

print(f"Falltid: {t:.2f} s")
print(f"Fart ved bakken: {v:.1f} m/s")
print(f"Terminalfart: {sqrt(m * g / k):.1f} m/s")

plt.plot(tider, farter)
plt.xlabel("t (s)")
plt.ylabel("v (m/s)")
plt.show()

Utskrift:

Falltid: 4.88 s
Fart ved bakken: 35.5 m/s
Terminalfart: 45.2 m/s

Svar: a) Falltida er 4,88 s, og farten ved bakken er 35,5 m/s.

b) Utan luftmotstand:

t=2sg=2⋅100 m9,81 m/s2=4,52 st = \sqrt{\frac{2s}{g}} = \sqrt{\frac{2 \cdot 100 \text{ m}}{9{,}81 \text{ m/s}^2}} = 4{,}52 \text{ s}

v=gt=9,81 m/s2⋅4,52 s=44,3 m/sv = gt = 9{,}81 \text{ m/s}^2 \cdot 4{,}52 \text{ s} = 44{,}3 \text{ m/s}

Terminalfart, kvt2=mgkv_t^2 = mg:

vt=mgk=0,50 kg⋅9,81 m/s20,0024 kg/m=45,2 m/sv_t = \sqrt{\frac{mg}{k}} = \sqrt{\frac{0{,}50 \text{ kg} \cdot 9{,}81 \text{ m/s}^2}{0{,}0024 \text{ kg/m}}} = 45{,}2 \text{ m/s}

Svar: b) Utan luftmotstand tek fallet 4,52 s, og farten blir 44,3 m/s. Med luftmotstand tek fallet 0,36 s lenger, og farten er 8,8 m/s lågare. Farten ved bakken er mindre enn terminalfarten 45,2 m/s, slik han må vere: ballen nærmar seg terminalfarten, men rekk ikkje å nå han på 100 m.

Luftmotstand i programmet

To modellar


Luftmotstanden verkar alltid mot rørsla. To modellar er vanlege:

ModellPassar forTerminalfart
L=kv2L = kv^2dei fleste gjenstandar i lufta: ballar, menneske, bilarvt=mgkv_t = \sqrt{\dfrac{mg}{k}}
L=kvL = kvsvært små eller lette gjenstandar med låg fart: støv, frø, små droparvt=mgkv_t = \dfrac{mg}{k}

Eininga til kk er kg/m i den første modellen og kg/s i den andre. Kva for ein modell som passar, avgjer vi med målingar, sjå avsnittet om modell mot måling.

Terminalfarten som kontroll


Når farten nærmar seg terminalfarten, går kraftsummen og akselerasjonen mot null. Eit rett program gir difor ein fart som flatar ut ved vtv_t, og aldri ein fart over vtv_t for ein gjenstand som blir sleppt frå ro. Rekn ut vtv_t med formelen og samanlikn med utskrifta. Det er ein rask kontroll av at akselerasjonslinja har rett forteikn.

Forteikn når retninga skiftar

For eit fall er det enklast å velje positiv retning nedover. Då verkar tyngda i positiv retning og luftmotstanden i negativ.
Blir ballen kasta opp, skiftar rørsla retning, og luftmotstanden skiftar retning med ho. Med positiv retning oppover kan vi skrive det med ein if-test:

    if v > 0:                       # på veg opp: luftmotstanden verkar nedover
        a = -g - k * v**2 / m
    else:                           # på veg ned: luftmotstanden verkar oppover
        a = -g + k * v**2 / m

Modell mot måling

Eit program gir berre rette svar dersom modellen er god. Vi testar modellen ved å samanlikne programmet med målingar.

Målingane


Vi filmar eit fall og les av posisjonen i kvart bilete med eit videoanalyseprogram, eller vi brukar ein rørslesensor. Då får vi ein tabell med tid og posisjon. Gjenstanden bør vere lett i forhold til storleiken, til dømes ei muffinsform, eit kaffifilter eller ein fjørball, så luftmotstanden betyr mykje alt etter kort fall.

Bestemme kk ved å prøve seg fram


- Vi køyrer programmet med ein gjetta verdi av kk og lagrar posisjonen ved dei same tidene som i målingane.
- Vi samanliknar modell og måling, i eit plott eller med summen av dei kvadrerte avvika ∑(smodell−sma˚lt)2\sum (s_{\text{modell}} - s_{\text{målt}})^2.
- Vi prøver nye verdiar av kk til summen er så liten som mogleg.

Avvika blir kvadrerte så positive og negative avvik ikkje opphevar kvarandre, og så store avvik tel meir enn små.

Kontroll og vurdering


- Terminalfarten: den siste, rette delen av ss–tt-grafen gir vtv_t som stigingstal. Då er k=mgvt2k = \dfrac{mg}{v_t^2}, uavhengig av programmet.
- Forma på modellen: passar kurva dårleg for alle verdiar av kk, kan det vere modellen som er feil. Prøv L=kvL = kv i staden for L=kv2L = kv^2, eller mål terminalfarten med dobbel masse: med L=kv2L = kv^2 blir han 2\sqrt{2} gonger så stor, med L=kvL = kv dobbelt så stor.
- Gyldigheitsområde: ein modell som passar for eit kort fall i eit klasserom, treng ikkje passe for høgare fart eller ei anna form.
✏️Eksempel 3: Muffinsform i fritt fall

Ei muffinsform av papir har masse 0,80 g. Ho blir sleppt frå ro, og fallet blir filma. Tabellen viser kor langt forma har falle:

tt (s)0,10,20,30,40,50,60,70,80,91,0
ss (m)0,050,140,270,390,520,640,760,891,021,14

a) Lag eit program som simulerer fallet med L=kv2L = kv^2 for k=3,0k = 3{,}0, 4,04{,}0, 5,05{,}0, 6,06{,}0 og 7,0⋅10−37{,}0 \cdot 10^{-3} kg/m, og som reknar ut summen av dei kvadrerte avvika frå målingane. Kva for ein kk passar best?
b) Bestem terminalfarten frå målingane, og kontroller kk med han.

c) Kor langt ville forma falle på 1,0 s utan luftmotstand? Vurder modellen.

a) Positiv retning nedover. Programmet lagrar posisjonen kvart 0,1 s, altså kvart 100. steg.

i % 100 er resten når i blir delt på 100, så i % 100 == 0 er sann for i = 100, 200, 300, …

Tal med tiarpotens blir skrivne med e: 3.0e-3 tyder 3,0⋅10−33{,}0 \cdot 10^{-3}, og {k:.1e} skriv ut k på same form med éin desimal.

g = 9.81        # m/s^2
m = 0.00080     # masse i kg
dt = 0.001      # tidssteg i s
malt = [0.05, 0.14, 0.27, 0.39, 0.52, 0.64, 0.76, 0.89, 1.02, 1.14]   # s i m, kvart 0,1 s

for k in [3.0e-3, 4.0e-3, 5.0e-3, 6.0e-3, 7.0e-3]:
    v = 0.0
    s = 0.0
    modell = []
    for i in range(1, 1001):         # 1000 steg = 1,0 s
        a = g - k * v**2 / m
        v = v + a * dt
        s = s + v * dt
        if i % 100 == 0:             # lagre kvart 0,1 s
            modell.append(s)
    sum_avvik = 0.0
    for j in range(len(malt)):
        sum_avvik = sum_avvik + (modell[j] - malt[j])**2
    print(f"k = {k:.1e}: sum = {sum_avvik:.4f} m^2")

Utskrift:

k = 3.0e-03: sum = 0.2746 m^2
k = 4.0e-03: sum = 0.0488 m^2
k = 5.0e-03: sum = 0.0002 m^2
k = 6.0e-03: sum = 0.0260 m^2
k = 7.0e-03: sum = 0.0854 m^2

Svar: a) k=5,0⋅10−3k = 5{,}0 \cdot 10^{-3} kg/m gir klart minst sum av kvadrerte avvik.

b) Frå 0,5 s til 1,0 s aukar ss jamt, så forma fell med terminalfarten:

vt=ΔsΔt=1,14 m−0,52 m1,0 s−0,5 s=1,24 m/sv_t = \frac{\Delta s}{\Delta t} = \frac{1{,}14 \text{ m} - 0{,}52 \text{ m}}{1{,}0 \text{ s} - 0{,}5 \text{ s}} = 1{,}24 \text{ m/s}

k=mgvt2=0,00080 kg⋅9,81 m/s2(1,24 m/s)2=5,1⋅10−3 kg/mk = \frac{mg}{v_t^2} = \frac{0{,}00080 \text{ kg} \cdot 9{,}81 \text{ m/s}^2}{(1{,}24 \text{ m/s})^2} = 5{,}1 \cdot 10^{-3} \text{ kg/m}

Svar: b) vt=1,24v_t = 1{,}24 m/s, som gir k=5,1⋅10−3k = 5{,}1 \cdot 10^{-3} kg/m. Det stemmer med a).

c)

s=12gt2=12⋅9,81 m/s2⋅(1,0 s)2=4,9 ms = \tfrac{1}{2}gt^2 = \tfrac{1}{2} \cdot 9{,}81 \text{ m/s}^2 \cdot (1{,}0 \text{ s})^2 = 4{,}9 \text{ m}

Svar: c) 4,9 m, meir enn fire gonger så langt som målt. Luftmotstanden er avgjerande for ei muffinsform. Modellen med L=kv2L = kv^2 og k=5,0⋅10−3k = 5{,}0 \cdot 10^{-3} kg/m treffer alle målingane innanfor 1 cm, så han beskriv dette fallet godt.

Oppgaver

Lett4 oppgaver
1Opplasting
2Opplasting
3Opplasting
4Python
Medium6 oppgaver
5Opplasting
6Opplasting
7Opplasting
8Opplasting
9Opplasting
10Opplasting
Vanskelig4 oppgaver
11Python
12Opplasting
13Opplasting
14Python

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.