Используются ли гиперболические тригонометрические функции для вычисления гиперболических орбит?

Следующий комментарий действительно интригует!

Я бы сказал: «Да, уравнения для перехода от средней аномалии к эксцентричной аномалии и к истинной аномалии действительно отличаются для гиперболических орбит, чем для эллиптических, если это часть вашего процесса». Самые большие различия заключаются в изменении знака некоторых терминов и использовании гиперболических тригонометрических функций, а не круговых тригонометрических функций.

Вопрос: Используются ли гиперболические тригонометрические функции при вычислении гиперболических орбит? Если да, то как?

Обновление: я только что нашел этот ответ , который я написал некоторое время назад, который был вызван этим ответом

Единственный раз, когда я когда-либо использовал аркгиперболический тангенс, был в вычислениях орбитальной механики.
@Paul Можете ли вы поделиться более подробной информацией или дать ссылку? Следует ли перевести все триггерные функции в гиперболические для расчета всех элементов орбиты? Как насчет того, чтобы при преобразовании в декартовы координаты также использовать гиперболические триггерные функции?
@lancew можно связать один вопрос с другим, но мы должны ограничивать комментарии к данному вопросу самим вопросом, а не другим вопросом, иначе все запутается. Кроме того, комментарии предназначены для уточнения рассматриваемого вопроса, а не для возникновения новых вопросов.
Связь между эксцентрическими и истинными аномалиями включает гиперболический тангенс. Уравнение для средней аномалии включает гиперболический синус.
@ Пол, это специально для гиперболических орбит или для всех коник?

Ответы (1)

Уравнения положения гиперболической траектории содержат гиперболические синус, косинус и тангенс.

Гипербола определяется уравнением:

Икс 2 а 2 у 2 б 2 "=" 1

Его можно описать несколькими параметрическими уравнениями:

Используя гиперболические функции синуса и косинуса (1), постройте голубой график:

Икс "=" ± а чушь ( т ) у "=" б грех ( т ) т е р

Используя комплексную экспоненциальную функцию (2), постройте пурпурный график:

г "=" с е т + с ¯ е т с "=" а + я б 2 с ¯ "=" а я б 2 т е р

Решая определение для x, (3), график синий:

Икс "=" а у 2 б 2 + 1 у е р

Решение определения для y, (4), зеленый график:

у "=" б Икс 2 а 2 1 Икс а , Икс а

Используя косинус и тангенс, (5), нарисуйте желтый график:

Икс "=" а потому что ( т ) "=" а сек ( т ) у "=" б загар ( т ) 0 т 2 π т π 2 , т 3 π 2

Используя рациональное параметрическое уравнение (6), постройте красный график:

Икс "=" ± а т 2 + 1 2 т у "=" б т 2 1 2 т т е р , т > 0

Используя синус и косинус с комплексными аргументами, (7), график серый:

г "=" а потому что ( я т ) + б грех ( я т ) т е р

Я не нашел документации о сложных аргументах для функций sin и cos Python Numpy, но она просто отлично работает.

Уравнение (7) выглядит аналогично:

г "=" а потому что ( т ) + я б грех ( т ) 0 т 2 π
используется для вычисления эллипса или окружности.

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()

введите описание изображения здесь

Я только что добавил обновление к моему вопросу со ссылкой
Думаете, вы еще сможете когда-нибудь добавить примеры Python?
Есть прогресс в примерах? Если вы можете просто ввести здесь несколько уравнений в MathJax, а не просто иметь ссылку, этого может быть достаточно. Вот несколько примеров , которых может быть достаточно.
@Uwe Есть ли шанс, что вы все еще собираетесь делать эти примеры Python?
Это уже выглядит великолепно, спасибо! (любой текст, начинающийся как минимум с четырех пробелов, будет отображаться как блок кода шрифтом с равными интервалами. (примеры: 1 , 2 ))