Ich versuche, buchstäblich einen Schleuderstart in den Weltraum zu modellieren, und ich verwende zwei grundlegende Formeln. Um mein Modell zu vereinfachen, wird ein Objekt mit einer (wirklich großen) Anfangsgeschwindigkeit von der Erdoberfläche am Äquator gestartet und vom Luftwiderstand und der Schwerkraft beeinflusst. Ich verwende folgende Formeln:
Luftwiderstand:
A = Bezugsfläche C = Widerstandsbeiwert F = Widerstandskraft, N. V = Geschwindigkeit, m/s. ρ = Dichte des Fluids (Flüssigkeit oder Gas), kg/m3.
Und : universelle Gravitationskraft:
aber ich bekomme einige seltsame Ergebnisse.
Ich möchte wissen, ob ich die richtigen Formeln für ein Objekt verwende, das im Vergleich zur Erde wirklich wenig Masse hat.
Mehr Info:
Ich verwende ein Python-Programm, um eine Grafik zu zeichnen, die die X- und Y-Position wäre. Für die Methode, die ich verwende (Odeint), brauche ich die Differentialgleichung (weiß nicht, ob der Name auf Englisch korrekt ist), da F = ma:
wenn = meine Objektmasse
also meine Geschwindigkeitsvariation / Zeitvariation = (wobei M2 = Erdmasse)
(Ich denke, es macht Sinn, weil die Schwerkraftbeschleunigung eines Objekts nicht von der Masse dieses Objekts abhängt.)
Ich bin mir fast sicher, dass ich hier einen grundlegenden und schrecklichen Fehler mache, aber ich bin in meinem ersten Jahr am College und brauche wirklich Hilfe, danke.
Eine Sache, die Sie vielleicht stolpern lässt, ist, dass der d
Term in der Gravitationsformel der Abstand zwischen den Massenschwerpunkten der Objekte ist, nicht die Höhe über der Erdoberfläche.
Die andere Sache, die Sie im Auge behalten sollten, sind Ihre Einheiten. Die große G-Gravitationskonstante beträgt ~6,67 x 10 -11 m 3 kg -1 s -2 ; Wenn Sie diesen Wert verwenden, stellen Sie sicher, dass Sie beispielsweise konsequent kg und m anstelle von Gramm und cm verwenden.
Sie haben Recht, dass die Masse eines Objekts berücksichtigt wird, wenn Sie seine Beschleunigung unter der Schwerkraft berücksichtigen. In der Nähe der Erdoberfläche sollten Sie eine Beschleunigung von ~9,8 ms -2 erhalten .
Eine nicht angetriebene ballistische Flugbahn, die den Weltraum von der Erdoberfläche aus erreichen kann, wird einen erschreckenden Luftwiderstand verursachen. Ich weiß, dass der maximale dynamische Druck für eine startende Rakete normalerweise im Bereich von 20 bis 30 kPa liegt, aber Ihr Fall wird viel höher sein, da die maximale Geschwindigkeit - der Moment des Starts) - mit der maximalen Luftdichte zusammenfällt, was nicht der Fall ist für Raketen.
Dies könnte Ihnen beim Einstieg helfen . Es ist nur ein 1D - Radiallöser , aber Sie können mit der Mathematik spielen. Ich habe eine 3D-Version der Ableitungsfunktion eingefügt, um eine Möglichkeit zu zeigen, die Beschleunigung in NumPy zu einem Vektor zu machen. Vergessen Sie nicht, die Rotation der Erde hinzuzufügen.
Die Idee , auf einem Berg wie dem Mt. Kilimenjaro zu beginnen , ist es sicher wert, erkundet zu werden.
Ich habe einfach einen Wert für die Skalenhöhe gewählt , die 1/e-Länge der Abnahme der Dichte mit der Höhe. Es ist nicht wirklich so einfach, und natürlich wird Drag viel komplizierter und viel schlimmer sein! als diese einfache Gleichung, aber es ist zumindest ein Anfang, und Sie können Mathematik hinzufügen / ändern, wenn Sie mehr über den Überschallwiderstand erfahren.
Sie können den dramatischen Geschwindigkeitsverlust noch in der Atmosphäre sehen.
# FROM: https://space.stackexchange.com/questions/16581/what-formulas-do-i-use-to-calculate-the-gravity-and-drag-forces-on-an-object-asc
def deriv(X, t):
r, v = X
acc_grav = -GMe / r**2
acc_drag = -0.5 * rhocalc(r) * v**2 * Cd * A / mass
return [v, acc_grav + acc_drag]
def rhocalc(r):
altitude = r - re
rho = rho_0 * np.exp(-altitude / h_scale)
return rho
def deriv3D(X, t):
r, v = X[:3], X[3:] # 3D state vector np.array([x, y, z, vx, vy vz])
acc_grav = -GMe * r * ((r**2).sum(axis=0))**-1.5
acc_drag = -0.5 * rhocalc(r) * v*np.sqrt((v**2).sum()) * Cd * A / mass
return np.hstack((v, acc_grav + acc_drag))
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint as ODEint
GMe = 3.986E+14 # m^3/s^2
mass = 1000 # kg
Cd = 1.0
A = 0.1 # m^2
rho_0 = 1.3 # kg/m^3 or mg/cm^3
h_scale = 7600 # m scale height
re = 6371000. #m radius of earth
alt = 0. #m launch altitude
v0 = 3000. #m/s launch velocity
X0 = [re+alt, v0] # 1D state vector
print deriv(X0, 0)
t = np.linspace(0, 90, 1000)
tol = 1E-9
answer, blob = ODEint(deriv, X0, t, rtol=tol, atol=tol, full_output=True)
plt.figure()
r, v = answer.T
plt.subplot(4, 1, 1)
plt.plot(t, r-re)
plt.title('altitude (m)')
plt.subplot(4, 1, 2)
plt.plot(t, v)
plt.title('velocity (m/s)')
plt.subplot(4, 1, 3)
plt.plot(t, rhocalc(r))
plt.title('density (kg/m^3)')
plt.subplot(4, 1, 4)
plt.plot(t[:-1], blob['hu'])
plt.title('step size (sec)')
plt.yscale('log')
plt.show()
Kim Halter
Loren Pechtel
Loren Pechtel
Markus Adler
SF.
SF.