¿Se utilizan funciones trigonométricas hiperbólicas para calcular órbitas hiperbólicas?

¡ El siguiente comentario es realmente intrigante!

Yo diría: "Sí, las ecuaciones para pasar de anomalía media a anomalía excéntrica a anomalía verdadera son de hecho diferentes para las órbitas hiperbólicas que para las elípticas, si eso es parte de su proceso". Las mayores diferencias son el cambio de signo en algunos de los términos y el uso de funciones trigonométricas hiperbólicas en lugar de funciones trigonométricas circulares.

Pregunta: ¿Se utilizan funciones trigonométricas hiperbólicas para calcular órbitas hiperbólicas? ¿Si es así, cómo?

Actualización: acabo de encontrar esta respuesta que escribí hace un tiempo, que fue provocada por esta respuesta

La única vez que usé la tangente hiperbólica inversa fue en el cálculo de la mecánica orbital.
@Paul ¿Puede compartir más detalles o proporcionar un enlace? ¿Deberían cambiarse todas las funciones trigonométricas a hiperbólicas para calcular todos los elementos orbitales? ¿Qué tal si al transformar a coordenadas cartesianas, también deberían usarse las funciones trigonométricas hiperbólicas?
@lancew, está bien vincular una pregunta con otra, pero debemos mantener los comentarios sobre una pregunta determinada limitados a la pregunta en sí, no a otra pregunta, de lo contrario, todo se vuelve confuso. También los comentarios son para aclarar la pregunta en cuestión, no para plantear nuevas preguntas.
La relación entre anomalías excéntricas y verdaderas implica tangente hiperbólica. La ecuación para la anomalía media involucra el seno hiperbólico.
@Paul es eso específicamente para órbitas hiperbólicas, ¿o es cierto para todas las cónicas?

Respuestas (1)

Las ecuaciones para la posición en una trayectoria hiperbólica contienen el seno, el coseno y la tangente hiperbólicos.

Una hipérbola se define por la ecuación:

X 2 a 2 y 2 b 2 = 1

Se puede describir mediante varias ecuaciones paramétricas:

Usando las funciones hiperbólicas de seno y coseno, (1), grafique cian:

X = ± a aporrear ( t ) y = b pecado ( t ) t R

Usando la función exponencial compleja, (2), trace magenta:

z = C mi t + C ¯ mi t C = a + i b 2 C ¯ = a i b 2 t R

Resolviendo la definición para x, (3), traza azul:

X = a y 2 b 2 + 1 y R

Resolviendo la definición para y, (4), trazar verde:

y = b X 2 a 2 1 X a , X a

Usando coseno y tangente, (5), traza amarillo:

X = a porque ( t ) = a segundo ( t ) y = b broncearse ( t ) 0 t 2 π t π 2 , t 3 π 2

Usando una ecuación paramétrica racional, (6), trace en rojo:

X = ± a t 2 + 1 2 t y = b t 2 1 2 t t R , t > 0

Usando seno y coseno con argumentos complejos, (7), traza gris:

z = a porque ( i t ) + b pecado ( i t ) t R

No encontré documentación sobre argumentos complejos para las funciones Python Numpy sin y cos, pero simplemente funciona perfectamente.

La ecuación (7) es similar a:

z = a porque ( t ) + i b pecado ( t ) 0 t 2 π
se utiliza para calcular una elipse o un círculo.

import matplotlib.pyplot as plt
import numpy as np
import math as math
#
def check(x,y,a,b,eps):
    a2 = np.square(a)
    b2 = np.square(b)
    res = np.square(x)/a2 - np.square(y)/b2
    test = True
    lowlim = 1.0-eps
    highlim = 1.0+eps
    for i in range(len(res)):
        if res[i] < lowlim or res[i] > highlim : test = False
    return test
#
omega = np.pi*0.5
steps = 15
#
# 1: using hyperbolic sine and cosine, plot cyan
a = 1.0
b = 1.0
eps = 1E-13
t1 = np.linspace(-omega, omega, steps)
x1 = a*np.cosh(t1)
y1 = b*np.sinh(t1)
plt.plot(x1, y1, color='c', marker="x")   
print('cosh sinh check ', check(x1, y1, a, b, eps))
#
# 2: using complex exponential function, plot magenta
a = 1.2
c = (a + b*1j)*0.5
ck = (a - b*1j)*0.5
z2 = c*np.exp(t1) + ck*np.exp(-t1)
plt.plot(np.real(z2), np.imag(z2), color='m', marker="x")   
print('complex exp check ', check(np.real(z2), np.imag(z2), a, b, eps))
#
# 3: solving equation for x, plot blue
ymin = min(y1)
ymax = max(y1)
a = 1.4
a2 = np.square(a)
b2 = np.square(b)
y3 = np.linspace(ymin, ymax, steps)
x3 = a*np.sqrt(np.square(y3)/b2 + 1.0)
plt.plot(x3, y3, color='b', marker="x")
print('normal form y check ', check(x3, y3, a, b, eps))

# 4: solving equation for y, plot green
a = 1.6
a2 = np.square(a)
xmin = a
xmax = a*np.sqrt(np.square(ymax)/b2 + 1.0)
x4 = np.linspace(xmin, xmax, steps//2)
y4 = b*np.sqrt(np.square(x4)/a2 - 1.0)
x4 = np.concatenate((np.flip(x4, 0), x4), axis=None)
y4 = np.concatenate((np.flip(-y4, 0), y4), axis=None)
plt.plot(x4, y4, color='g', marker="x")
print('normal form x check ', check(x4, y4, a, b, eps))

# 5: using cosine and tangent functions, plot yellow
a = 1.8
tmax = np.arctan(ymax/b)
t5 = np.linspace(-tmax, tmax, steps)
x5 = a/np.cos(t5)
y5 = b*np.tan(t5)
plt.plot(x5, y5, color='y', marker="x")   
print('cos tan check ', check(x5, y5, a, b, eps))

# 6: using parametric equation, plot red
a = 2.0
tmin = ymax/b + np.sqrt(np.square(ymax/b) + 1.0)
#t6 = np.geomspace(tmin, 1.0, steps//2)
t6 = np.linspace(tmin, 1.0, steps//2)
x6 = a*(np.square(t6) + 1.0)/(2.0*t6)
xmax = max(x6)
y6 = b*(np.square(t6) - 1.0)/(2.0*t6)
x6 = np.concatenate((x6, np.flip(x6, 0)), axis=None)
y6 = np.concatenate((y6, np.flip(-y6, 0)), axis=None)
plt.plot(x6, y6, color='r', marker="x")   
print('t square check ', check(x6, y6, a, b, eps))

# 7: using sine and cosine with complex arguments, plot grey
a = 2.2
t7 = np.linspace(-omega*1j, omega*1j, steps)
z7 = a*np.cos(t7) + b*np.sin(t7)
plt.plot(np.real(z7), np.imag(z7), color='grey', marker="x")   
print('cos sin check ', check(np.real(z7), np.imag(z7), a, b, eps))

plt.grid(b=None, which='both', axis='both')
plt.axis('scaled')
plt.xlim(0.0,  math.ceil(xmax+0.5))
plt.ylim(math.floor(ymin), math.ceil(ymax))
plt.show()

ingrese la descripción de la imagen aquí

Acabo de agregar una actualización a mi pregunta con un enlace
¿Crees que aún podrás agregar los ejemplos de Python en algún momento?
¿Algún progreso en los ejemplos? Si puede escribir algunas ecuaciones en MathJax aquí en lugar de tener un enlace, eso podría ser suficiente. Aquí hay algunos ejemplos que podrían ser suficientes.
@Uwe ¿Hay alguna posibilidad de que todavía tengas la intención de hacer esos ejemplos de Python?
¡Esto ya se ve genial, gracias! (cualquier texto que comience con al menos cuatro espacios se mostrará como un bloque de código con la misma fuente espaciada. (ejemplos: 1 , 2 ))