Mir wurden eine anfängliche x- und y-Position und eine anfängliche Geschwindigkeit gegeben, und ich wurde gebeten, die Flugbahn in 1-Sekunden-Intervallen grafisch darzustellen.
Das ist, was ich bisher habe:
Wenn , und die Zeit ist 0,1,2,3 ... und so weiter.
Wenn Sie diese Gleichungen für jede Sekunde verwenden, können Sie feststellen, dass das Diagramm glockenförmig ist, wobei der höchste Punkt bei etwa 600 Sekunden ~ 325 m beträgt:
Normalerweise werden wir in der Physik in perfektem Zustand ohne Luftwiderstand unterrichtet. Aber was wäre, wenn es Luftwiderstand gäbe? Wie würde es dieses Problem beeinflussen? Wie kann ich es zu meinen Berechnungen hinzufügen und sehen, was der Unterschied ist?
Mit Schleppkraft und Gravitationskraft , die Bewegungsgleichungen sind (siehe meine Antwort auf diese Frage )
Ich habe die obigen Gleichungen noch nie analytisch gelöst gesehen. Hier ist ein Python-Code, der die Lösung mit und ohne Luftwiderstand darstellt. Kopieren Sie zum Ausführen myFile.py in eine Textdatei und führen Sie es aus
python myFile.py
von der Kommandozeile.
from pylab import *
import math
# Physical constants
g = 9.8
m = 1.0
rho = 1.0
Cd = 1.0
A = math.pi * pow(0.01,2.0)
alpha = rho * Cd * A / 2.0
beta = alpha / m
# Initial conditions
X0 = 1.0
Y0 = 0.0
Vx0 = 70.0
Vy0 = 80.0
# Time steps
steps = 1000
t_HIT = 2.0*Vy0/g
dt = t_HIT / steps
# No drag
X_ND = list()
Y_ND = list()
for i in xrange(steps+1):
X_ND.append(X0 + Vx0 * dt * i)
Y_ND.append(Y0 + Vy0 * dt * i - 0.5 * g * pow(dt * i,2.0))
# With drag
X_WD = list()
Y_WD = list()
Vx_WD = list()
Vy_WD = list()
for i in xrange(steps+1):
X_ND.append(X0 + Vx0 * dt * i)
Y_ND.append(Y0 + Vy0 * dt * i - 0.5 * g * pow(dt * i,2.0))
# With drag
X_WD = list()
Y_WD = list()
Vx_WD = list()
Vy_WD = list()
X_WD.append(X0)
Y_WD.append(Y0)
Vx_WD.append(Vx0)
Vy_WD.append(Vy0)
stop = 0
for i in range(1,steps+1):
if stop != 1:
speed = pow(pow(Vx_WD[i-1],2.0)+pow(Vy_WD[i-1],2.0),0.5)
# First calculate velocity
Vx_WD.append(Vx_WD[i-1] * (1.0 - beta * speed * dt))
Vy_WD.append(Vy_WD[i-1] + ( - g - beta * Vy_WD[i-1] * speed) * dt)
# Now calculate position
X_WD.append(X_WD[i-1] + Vx_WD[i-1] * dt)
Y_WD.append(Y_WD[i-1] + Vy_WD[i-1] * dt)
# Stop if hits ground
if Y_WD[i] <= 0.0:
stop = 1
# Plot results
plot(X_ND, Y_ND)
plot(X_WD, Y_WD)
show()
Alan Römer
QMechaniker
Neugierig
Floris
LDC3
John Alexiou