a) b) F = a a z = B + G B + G = a B g = = B g a z = B g c) v(t) v(0)= a z dt = B gdt v(t) = ( b g) t + v 0 z(t) z(0) = v(t)dt = ( B g) t + v 0 dt z(t) = 1 2 (B g) t2 + v 0 t + z 0 1
d) a z = F z = B + G + F D = B g D v z v z = B g D v z v z a z = B g D v z v z e) Dette er et plot ed realistiske verdier so vi kjørte i python ed prograet i k) f) a=0 a z = 0 = B g D v z v z B g = v D z g) Generelt uttrykk for luftotstand gis ved. F D = D v v Med vind vil uttrykket dered bli. Dette fordi vinden beveger seg ed en fart,w, rundt legeet. O vind retningen er lik fartsretning, vil derfor luftotstanden bli indre. F D = D v w (v w) Siden luftotstanden er avhengig av både fart og vind, og disse står noralt på hverandre, kan vi se på denne likningen so en koponering av to likninger i henholdsvis x- og z-retning. F Dx = D v x w x (v x w x ) F Dz = D v z w z (v z w z ) Hvor wz=0 siden vinden kun virker i x-retning. 2
h) i) Krefter i x-retning: FDx Krefter i z-retning: FDz, B og G Newtons 2. Lov gir: a z = B+G+F Dz = B g D v z (v x w x ) 2 +v2 z a x = F Dx = D (v x w x) (v x w x)2 +v2 z j) Grunnen til at vi i dette tilfellet kan kalle bevegelsene i x- og z-retning for koplete, er at de saen beskriver bevegelsen til ballongen. k) fro pylab iport * # PARAMETERS dt = 0.001 g = -9.81 = 1 R = 0.5 rho = 1.2 D = 12.0*rho*R**2 # s # /s^2 # kg # # kg/^3 3
end = 500 w = [1,0,0] B = [0,0,5] G = [0,0,*g] # Nuber of steps # Windspeed - /s # N # N # FUNCTIONS def Fd(vi,wi): return -D*abs(vi-wi)*(vi-wi) def F_tot(xi,i): return B[xi]+G[xi]+Fd(v[xi][i],w[xi]) def Acc(xi,i): return F_tot(xi,i)/ def Eul(x,xd): return x + xd*dt # LISTS # StartPosission X = [0] Y = [0] Z = [0] r = [X,Y,Z] # StartVelocity vx = [0] vy = [0] vz = [0] v = [vx,vy,vz] ax = [Acc(0,0)] ay = [Acc(1,0)] az = [Acc(2,0)] a = [ax,ay,az] # StartTie t = [0] # Graphics gr = ['x','y','z'] ------------------------ 4
i = 0 for i in range(0,end): t.append(t[i]+i*dt) for xi in range(0,3): a[xi].append(acc(xi,i)) v[xi].append(eul(v[xi][i],a[xi][i])) r[xi].append(eul(r[xi][i],(v[xi][i]))) if xi == 0: print " " print "G= %.2f B= %.2f Fd=%.10f" %(G[xi],B[xi],Fd(v[xi][i],w[xi])) print "Ftot= %.2f" %(B[xi]+G[xi]+Fd(v[xi][i],w[xi])) print "t=%.3f a%s= %.3f v%s= %.3f r%s= %.3f"%(t[i],gr[xi],a[xi][i],gr[xi],v[xi][i],gr[xi],r[xi][i]) print "-------------------" # Posission subplot(3,2,1) plot(t,r[0],'r') ylabel('posission X [r] ') subplot(3,2,2) plot(t,r[2],'r') ylabel('posission Z [r] ') # Velocity subplot(3,2,3) plot(t,v[0],'g') ylabel('velocity X [v] /s') subplot(3,2,4) plot(t,v[2],'g') ylabel('velocity Z [v] /s') subplot(3,2,5) plot(t,a[0],'y') ylabel('acceleration X [a] /s^2') subplot(3,2,6) 5
plot(t,a[2],'y') ylabel('acceleration Z [a] /s^2') show() l) Ballongen slippes ved t0 =0 i possisjon r0=(0,0) og akselerer grunnet B > G. Farten øker inntil FDz v blir så stor at B=G+FDz. Dette gir oss a=0, og farten holder seg konstant i z-retning. I x-retning vil w>0 gi oss FDx v,w>0, og ballongen vil akselerere i x-retning. ) V Tx 5. s 1 V Tz 7. s 1 V T 5 2 + 7 2 = 8,6. s 1 n) fro pylab iport * # PARAMETERS dt = 0.001 g = -9.81 = 1 R = 0.5 rho = 1.2 D = 12.0*rho*R**2 end = 500 w0 = [1,0,0] d = 10 # s # /s^2 # kg # # kg/^3 # Nuber of steps # StartWindspeed - /s # B = [0,0,2**-g] G = [0,0,*g] # N # N # FUNCTIONS def wind(xi,zi): return w0[xi]*(1-exp(-zi/d)) def Fd(vi,xi,zi): return -D*abs(vi-wind(xi,zi))*(vi-wind(xi,zi)) def F_tot(xi,zi,i): return B[xi]+G[xi]+Fd(v[xi][i],xi,zi) def Acc(xi,zi,i): 6
return F_tot(xi,zi,i)/ def Eul(x,xd): return x + xd*dt # LISTS # StartPosission X = [0] Y = [0] Z = [0] r = [X,Y,Z] # StartVelocity vx = [0] vy = [0] vz = [0] v = [vx,vy,vz] ax = [Acc(0,r[2][0],0)] ay = [Acc(1,r[2][0],0)] az = [Acc(2,r[2][0],0)] a = [ax,ay,az] # StartTie t = [0] # Graphics gr = ['x','y','z'] ------------------------ i = 0 for i in range(0,end): t.append(t[i]+i*dt) for xi in range(0,3): a[xi].append(acc(xi,r[2][i],i)) v[xi].append(eul(v[xi][i],a[xi][i])) r[xi].append(eul(r[xi][i],(v[xi][i]))) if xi == 0: print "t=%.3f a%s= %.3f v%s= %.3f r%s= %.3f"%(t[i],gr[xi],a[xi][i],gr[xi],v[xi][i],gr[xi],r[xi][i]) print "-------------------" # Posission 7
subplot(3,2,1) plot(t,r[0],'r') ylabel('posission X [r] ') subplot(3,2,2) plot(t,r[2],'r') ylabel('posission Z [r] ') # Velocity subplot(3,2,3) plot(t,v[0],'g') ylabel('velocity X [v] /s') subplot(3,2,4) plot(t,v[2],'g') ylabel('velocity Z [v] /s') subplot(3,2,5) plot(t,a[0],'y') ylabel('acceleration X [a] /s^2') subplot(3,2,6) plot(t,a[2],'y') ylabel('acceleration Z [a] /s^2') show() o) a = 0 B G = D v w 0 (1 e z d) (v w 0 (1 e z d)) B G D = v w 0 (1 e z d) (v w 0 (1 e z d)) 8
p) Drivkraften oppover er avhengig av differansen i teperatur ello ballongen og ogivelsene. Dette gir: B (T s (t) T 0 ) Når flaen blir slukket vil teperaturen i ballongen gå ot teperaturen i ogivelsene, og vi får dered B=0 etter en viss tid. Dette vil igjen føre til at ballongen daler nedover. 9
Alternativt progra ed atriseregning: # OBLIG 2 fro pylab iport * # PARAMETERS dt = 0.001 g = -9.81 = 1 R = 0.1 rho = 1.2 D = 12.0*rho*R**2 tie = 10 d = 10 n = int((tie/dt)) # s # /s^2 # kg # # kg/^3 # seconds # # FUNCTIONS def Acc(v): return F_tot(v)/ def F_tot(v): return B+G+Fd(v) def Fd(v): return -D*abs(v-w0)*(v-w0) def wind(r): return w0*(1-exp(-r[i][2]/d)) def Eul(x,xd): return x + xd*dt # VECTORS w0 = zeros((3)) w0[0]= 25 # X w0[1]= 0 # Y w0[2]= 0 # Z B = zeros((3)) B[0]= 0 # X B[1]= 0 # Y B[2]= 200 # Z G = zeros((3)) G[0] = 0 # X G[1] = 0 # Y G[2] = *g # Z r = zeros((n,3)) r[0] = 0 # X r[1] = 0 # Y r[2] = 0 # Z v = zeros((n,3)) v[0] = 0 # X v[1] = 0 # Y v[2] = 0 # Z a = zeros((n,3)) a[0]=acc(v[0]) t = zeros((n,1)) t[0] = 0 # StartWindspeed - /s # Boyancy # Gravity # Possision # Velocity # Tie ------------------------ 10
for i in range(0,n-1): t[i+1]=i*dt for xi in range(0,3): a[i+1]=acc(v[i]) v[i+1]=eul(v[i],a[i]) r[i+1]=eul(r[i],v[i]) # Posission subplot(3,1,1) plot(t,r,'r-') ylabel('posission X [r] ') # Velocity subplot(3,1,2) plot(t,v,'g-') ylabel('velocity X [v] /s') subplot(3,1,3) plot(t,a,'y-') ylabel('acceleration X [a] /s^2') show() fro atplotlib iport pyplot iport pylab fro pl_toolkits.plot3d iport Axes3D iport rando fig = pylab.figure() ax = Axes3D(fig) rx = [] ry = [] rz = [] for i in range(0,n): rx.append(r[i][0]) ry.append(r[i][1]) rz.append(r[i][2]) ax.plot(rx,ry,rz,'-r') pyplot.show() Der en kjøring gir: 11