Estoy tratando de modelar un lanzamiento de honda al espacio, literalmente, y estoy usando 2 fórmulas básicas. Simplificando mi modelo, un objeto con una velocidad inicial (realmente grande) se lanza desde la superficie de la Tierra en el ecuador, y se ve afectado por la resistencia del aire y la gravedad. Estoy usando las siguientes fórmulas:
Resistencia del aire:
A = Área de referencia C = Coeficiente de arrastre F = Fuerza de arrastre, N. V = Velocidad, m/s. ρ = Densidad del fluido (líquido o gas), kg/m3.
Y : fuerza gravitatoria universal:
pero estoy obteniendo algunos resultados extraños.
Quiero saber si estoy usando las fórmulas correctas para un objeto que tiene una masa realmente baja en comparación con la Tierra.
Más información:
Estoy usando un programa de Python para trazar un gráfico que sería la posición X e Y. Para el método que estoy usando (Odeint) necesito la ecuación diferencial (no sé si el nombre es correcto en inglés), como F = ma:
si = la masa de mi objeto
entonces mi variación de velocidad/variación de tiempo = (siendo M2 = masa terrestre)
(Creo que tiene sentido porque la aceleración de la gravedad de un objeto no depende de la masa de ese objeto).
Estoy casi seguro de que estoy cometiendo un error básico y terrible aquí, pero estoy en mi primer año en la universidad y realmente necesito ayuda, gracias.
Una cosa que puede estar haciéndote tropezar es que el d
término en la fórmula gravitatoria es la distancia entre los centros de masa de los objetos, no la altitud sobre la superficie de la Tierra.
La otra cosa a tener en cuenta son tus unidades. La gran constante gravitatoria G es ~6,67 x 10 -11 m 3 kg -1 s -2 ; si está usando ese valor, asegúrese de usar constantemente kg y m en lugar de gramos y cm, por ejemplo.
Tienes razón en que la masa de un objeto se descuenta cuando consideras su aceleración bajo la gravedad. Cerca de la superficie de la Tierra debería obtener una aceleración de ~9,8 ms -2 .
Una trayectoria balística sin motor que puede llegar al espacio desde la superficie de la Tierra va a incurrir en una cantidad aterradora de resistencia. Sé que la presión dinámica máxima para un cohete de lanzamiento suele estar en el rango de 20-30 KPa, pero su caso será mucho mayor, porque la velocidad máxima (el momento del lanzamiento) coincidirá con la densidad máxima del aire, que no es el caso. para cohetes.
Esto podría ayudarlo a comenzar . Es solo un solucionador radial 1D , pero puedes jugar con las matemáticas. Incluí una versión 3D de la función derivada para mostrar una forma de convertir la aceleración en un vector en NumPy. No olvides sumar la rotación de la tierra.
La idea de comenzar en la cima de una montaña como el monte Kilimenjaro vale la pena explorarla.
Simplemente elegí un valor para la altura de la escala , la longitud 1/e de la disminución de la densidad con la altitud. En realidad no es tan simple y, por supuesto , ¡el arrastre será mucho más complicado y mucho peor! que esta simple ecuación, pero es al menos un comienzo, y puede agregar/modificar matemáticas a medida que aprende más sobre la resistencia supersónica.
Puedes ver la dramática pérdida de velocidad mientras aún estás en la atmósfera.
# 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 titular
Loren Pechtel
Loren Pechtel
marca adler
SF.
SF.