Tengo un gran trozo de hielo de agua que necesita ir desde (digamos) uno de los polos de Marte hasta su ecuador.
Despreciando la atmósfera, ¿cómo calcularía el delta-v necesario para esta trayectoria y cuál sería el valor resultante?
Pregunta inspirada en el comentario de @SteveLinton .
Ángulo de separación dado , masa corporal y radio del cuerpo , antes de encontrar delta-V, debemos encontrar el eje mayor de la elipse, o más precisamente, la mitad de su longitud (distancia desde el centro de la elipse hasta el punto más extremo):
Dado que, delta-V viene dada por la siguiente ecuación:
El lanzamiento debe realizarse en ángulo :
Para aterrizaje motorizado, duplique los requisitos delta-V.
El crédito es para el Blog de Hop - Viajar en mundos sin aire . El artículo contiene la derivación de las ecuaciones anteriores y un enlace a una hoja de cálculo útil donde puede calcular los parámetros de salto para cualquier cuerpo celeste y cualquier ángulo de separación elegido:
Para el viaje del polo al ecuador (ángulo de separación de 90 grados), en Marte, el delta-V de lanzamiento sería de 3228 m/s. El lanzamiento se realizaría de forma óptima a 22,5 grados.
La solución más cercana que puedo encontrar proviene de la Introducción a los vuelos espaciales de Hale (1994), donde el Capítulo 9 analiza las ecuaciones de rango para tales cuerpos balísticos. Deriva una ecuación
donde
es una cantidad adimensional que mide aproximadamente el doble de la relación entre la energía cinética y la energía potencial en el punto de agotamiento (subíndice “bo”). es el parámetro gravitatorio estándar y es el ángulo de alcance y es el ángulo de lanzamiento.
lo que quieres es tener y el radio de marte, asumiendo un empuje de impulso en la superficie del planeta. Luego puede jugar con la velocidad de agotamiento y el ángulo de lanzamiento hasta que obtenga una solución factible. Tenga en cuenta que aunque muchos ángulos de lanzamiento darán una velocidad de agotamiento, no todos lo harán. Aun así, algunas de las soluciones son inviables porque, por ejemplo, pueden depender de que la órbita atraviese el interior del planeta.
Tenga en cuenta que esta ecuación se basa en muchas suposiciones simplificadoras: tierra que no gira, sin atmósfera, un planeta esférico, trayectoria simétrica y un rango de caída libre insignificante.
La respuesta publicada por @SF. ¡basado en el blog de Hop echa un vistazo!
Aquí hay una verificación numérica. No es bonito, pero continuar las órbitas (que se muestran tanto para Marte como para la Tierra ) durante el 55% de su período se cruza muy bien a 90 grados del punto de partida, ¡sí!
body a(km) dv(m/s) alpha(deg)
----- ----- ------- ----------
Earth 5438 7199 22.5
Mars 2893 3235 22.5
def deriv(X, t):
x, v = X.reshape(2, -1)
acc = -GM * x * ((x**2).sum())**-1.5
return np.hstack((v, acc))
def Hops_hop(theta, R, GM):
a = (1. + np.sin(0.5*theta)) * 0.5 * R
dv = np.sqrt(GM * (2./R - 1./a))
alpha = 0.25 * (pi - theta)
return a, dv, alpha
import numpy as np
from scipy.integrate import odeint as ODEint
import matplotlib.pyplot as plt
halfpi, pi, twopi = [f*np.pi for f in (0.5, 1, 2)]
# standard gravitational parameter
GMe = 3.986E+14 # m^3/s^2
GMm = 4.283E+13 # m^3/s^2
Re = 6371000. # meters
Rm = 3389500. # meters
pairs = (Re, GMe), (Rm, GMm)
theta = halfpi # 90 degrees
answers = []
for R, GM in pairs:
a, dv, alpha = Hops_hop(theta, R, GM)
T = twopi * np.sqrt(a**3/GM)
time = np.linspace(0, 0.55*T, 500)
x0 = R * np.array([ np.sin(0.5*theta), np.cos(0.5*theta)])
v0 = dv * np.array([ np.cos(alpha), -np.sin(alpha) ])
X0 = np.hstack((x0, v0))
answer, info = ODEint(deriv, X0, time, full_output=True)
answers.append(answer)
theta = np.linspace(0, twopi, 361)
unit_circle = [f(theta) for f in (np.cos, np.sin)]
sqrt2 = np.sqrt(2.)
if True:
plt.figure()
for answer, (R, GM) in zip(answers, pairs):
x, y = answer.T[:2]
plt.plot(x, y)
plt.plot(x[:1], y[:1], 'ok')
for answer, (R, GM) in zip(answers, pairs):
x, y = [R*thing for thing in unit_circle]
plt.plot(x, y, '-k')
plt.plot([0, Re/sqrt2], [0, Re/sqrt2], '-k')
plt.plot([0, Re/sqrt2], [0, -Re/sqrt2], '-k')
plt.show()
uwe
UH oh
Jacobo
UH oh
usuario20636
UH oh