Fysik 1/Logbog uge 40
Fra Meinertz Wiki
Meinertz (diskussion | bidrag) |
Meinertz (diskussion | bidrag) m (T) |
||
| Linje 66: | Linje 66: | ||
print ball.pos.x | print ball.pos.x | ||
</pre> | </pre> | ||
| + | |||
| + | [[Kategori:Fysik 1]] | ||
Nuværende version fra 8. nov 2009, 17:12
Gruppe 1 består i denne uge af
- Henrik Bo Hoffmann Carlsen
- Kristian Due Andersen
- Jonas Meinertz Hansen
Indledende overvejelser
Vi vil forsøge at simulere vores katapultforsøg, ved at opbygge et system hvor projektiler bliver affyret i retning og hastighed tilsvarende det virkelige forsøg vi lavede. Vi vil f.eks. bruge en form for rand-funktion samt vores usikkerheder fra første forsøg, til at få resultater der ligner dem vi fik fra det fysiske forsøg mest muligt.
Da mine egne måledata fra laboratorieøvelsen i uge 38 var utilstrækkelige i deres antal, er værdierne der er benyttet i denne uge indsamlet af Henrik fra gruppen.
Programmet skal fungere således:
Logikken i programmet er rimelig simpel (hvis man har nogenlunde styr på den klassiske mekanik). Vi definerer en sfære som repræsenterer projektilet. Dette projektil kan (da vi ser bort fra vindmodstand) antages kun at blive påvirket af tyngdekraften imens den bevæger sig i sin bane, og da tyngdekraften er konstant og nedadrettet kan vi definere den som en nedadrettet vektor med størrelsen 9.82. Vi behøver ikke at tage højde for projektilets masse da vores simulation viser hvad der sker efter affyringen, og vi kan derfor blot sættet projektilets initielle hastighed til en vektor med samme størrelse som resultatet fra laboratorieøvelsen i uge 38 og retning som vi målte katapultens affyringsvinkel til. Dertil lægges også usikkerheden, som nemt omregnes fra standardafvigelse med funktionen gauss.
Man vælger et passende tidsinterval og laver en løkke der ændrer projektilets hastighed med accelerationen ganget med tidsintervallet, og ændrer projektilets position med hastigheden ganget med tidsintervallet så længe projektilets y-koordinat (vertikale position) er positiv. Når projektilets y-koordinat er lig med (eller en lillebitte smule under) 0, så lader man programmet udskrive boldens position og starter forfra (ved at lade det gentage med en løkke).
Det endelige resultat
# -*- coding: utf-8 -*-
from visual import *
from random import gauss
ball=sphere(pos=(0,0,0),radius=0.05,color=color.blue)
arrowtails="atorigin"
#avec=arrow(color=color.green,shaftwidth=0.1)
#vvec=arrow(color=color.yellow,shaftwidth=0.3)
ball.acceleration=vector(0,-9.82,0) # projektilets acceleration
path=curve(radius=0.01,color=color.red) # vi tegner projektilets bane
autoscale=1 # sørger for at vi ser affyringen fra samme placering hele tiden
scene.range=(2,1,2) # angiver hvor stort et område vi skal se
scene.center=(1.5,0,0) # angiver centrum for vores udsyn
dt=0.0002 # sætter tidsintervallet (delta t)
throws = 25 #hvor mange gange der skal kastes
thrown = 0 # hvor mange gange der er kastet
while thrown < throws: # så længe projektilet er kastet færre gange end det skal
ball.pos = (0,0,0) # nulstil projektilets position
ball.velocity=vector(gauss(3.71,0.134),gauss(3.71,0.134),0) # sætter projektilets begyndelseshastighed (med usikkerhed)
thrown += 1 # angiver at projektilet er kastet igen så vi kan holde styr på hvor mange gange der er kastet
t=0 # nulstiller tiden
while ball.pos.y >= 0: # så længe projektilets vertikale position er positiv
#rate(1000) #slows animation by 1/arg seconds
ball.velocity = ball.velocity+ball.acceleration*dt # ændrer projektilets hastighed med acceleration gange tidsinterval
ball.pos=ball.pos+ball.velocity*dt # ændrer projektilets position med hastighed gange tidsinterval
t=t+dt # ændrer tiden
path.append(pos=ball.pos) # opdater skitseringen af projektilets bane
#avec.axis=ball.acceleration
#vvec.axis=ball.velocity
#if arrowtails=="onball":
# avec.pos=ball.acceleration
# vvec.pos=ball.vel
#if arrowtails=="atorigin":
# avec.pos=ball.pos
# vvec.pos=ball.pos
# udskrive kastets nummer, hvor længe projektilet var i luften, og hvor det landede
print "----"
print thrown
print t
print ball.pos.x