Почему мое математическое решение vis-viva оказалось таким близким, несмотря на то, что оно было неправильным? При каких условиях это было бы хорошим приближением?

Я пытался ответить на уравнение скорости и расстояния от Солнца космического корабля с солнечным парусом, но что-то упускаю.

Я подготовил математическое решение и получил около 0,4 года, чтобы достичь нулевой скорости на основе уравнения vis-viva. Очевидно, я сделал некоторую ошибку в предположениях, потому что это означает, что он находится на круговой орбите с нулевой скоростью, что означает бесконечное расстояние, а бесконечное расстояние за конечное время — это плохо.

Когда я решаю численно, я получаю аналогичное число около 0,5 лет, чтобы достичь положительной энергии, гелиоцентрического C3, скорости убегания и т. д., и я верю в эту симуляцию.

Вопрос: Почему мое математическое решение vis-viva оказалось таким близким, несмотря на то, что оно было неправильным? При каких условиях это было бы хорошим приближением?


Этот ответ говорит:

Математика

Учитывая начальное ускорение на 1 а.е. 8.17 × 10 4 м / с 2 .

Наклоните его на 45 градусов, чтобы сделать тягу тангенциальной, разделите на 2 поскольку теперь он наклонен к Солнцу и учитывает падение с расстоянием от Солнца:

а 0 "=" 5,78 × 10 4 м / с 2

а ( р ) "=" а 0 А U 2 р 2

в прямом направлении (в том же направлении, что и скорость течения).

уравнение vis-viva :

в 2 "=" г М р

Сейчас

г в г т "=" а 0 А U 2 г М 2 в 4

где г М стандартный гравитационный параметр Солнца 1,327 × 10 20 м 3 / с 2 . Знак минус появляется потому, что мы знаем, что вопреки первому инстинкту, когда у нас есть ускоряющая сила в прямом направлении, мы, вопреки интуиции, замедляемся на ту же величину. Это также цитируется в нескольких других сообщениях здесь, я поищу другие ответы, чтобы процитировать...

Перепишите и решите:

г т г в "=" г М 2 а 0 А U 2 в 4

т ( в ) "=" т 0 г М 2 4 а 0 А U 2 в 3

Если мы установим т ( в 0 ) "=" 0 другими словами, в нулевой момент времени мы движемся с орбитальной скоростью в 0 "=" г М / А U получаем 0,408 года.

Численно

Интересно, что когда я пытаюсь смоделировать то же самое численно, я получаю время выхода 0,515 года! Меня это удивляет по двум причинам:

  1. Скорость никогда не достигает нуля, а это означает, что приведенная выше математика неверна!
  2. И все же это довольно близко!

Заключение

На побег уйдет примерно полгода, но полного уравнения у меня пока нет.

Дальнейшее чтение:

побег на солнечном парусе

import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint as ODEint

AU = 150E+06 * 1000   # meters
GM = 1.327E+20   # m^3/s^2
a0 = 8.17E-04 / np.sqrt(2)  # dv/dt at 1 AU
year = 365.2564 * 24 * 3600 

coef = ( GM**2 / (4 * a0 * AU**2) )

v0 = np.sqrt(GM/AU)
print('v0: ', v0)
print('coef: ', coef)

t0 = coef / v0**3
print('t0 / year: ', t0 / year)

def deriv(X, t):
    x, v = X.reshape(2, -1)
    vhat = v / np.sqrt((v**2).sum())
    rsq = (x**2).sum()
    acc_thrust = vhat * a0 * rsq / AU**2
    acc = acc_thrust - GM * x * rsq**-1.5
    return np.hstack((v, acc))

X0 = np.array([AU, 0, 0, v0])

time = np.linspace(0, 0.6, 10001) * year  # half year

answer, info = ODEint(deriv, X0, time, full_output=True)

print(answer.shape)

x, y, vx, vy = answer.T
r, speed = [np.sqrt((thing**2).sum(axis=0))
            for thing in answer.T.reshape(2, 2, -1)]

E = 0.5 * speed**2 - GM/r
E_norm = np.abs(E[0])

i_esc = np.argmax(E>=0)
things = time, r, x, y, speed, E
t_esc, r_esc, x_esc, y_esc, s_esc, E_esc = [thing[i_esc]
                                            for thing in things]

print('t_esc / year: ', t_esc / year)

if True:
    plt.figure()
    plt.subplot(2, 2, 1)
    plt.plot(time/year, r/AU)
    plt.plot([t_esc/year], [r_esc/AU], 'ok')
    plt.ylabel('r/AU')
    plt.xlabel('time (years)')
    
    plt.subplot(2, 2, 2)
    plt.plot(time/year, speed/1000)
    plt.plot([t_esc/year], [s_esc/1000], 'ok')
    plt.ylabel('speed (km/s)')
    plt.xlabel('time (years)')

    plt.subplot(2, 2, 3)
    plt.plot(time/year, E/E_norm)
    plt.plot([t_esc/year], [E_esc/E_norm], 'ok')
    plt.plot(time/year, np.zeros_like(time), '-k')
    plt.ylabel('Energy (norm)')
    plt.xlabel('time (years)')

    plt.subplot(2, 2, 4)
    plt.plot(x/AU, y/AU)
    plt.plot([x_esc/AU], [y_esc/AU], 'ok')
    plt.plot([0], [0], 'oy')
    th = np.linspace(0, 2*np.pi, 201)
    plt.plot(np.cos(th), np.sin(th), '-r', linewidth=0.5)
    plt.ylim(-1, 1.5)
    plt.gca().set_aspect('equal')
    plt.xlabel('AU')
    plt.ylabel('AU')
    plt.show()
"Наклоните его на 45 градусов, чтобы сделать тягу тангенциальной" - тангенциальной к чему? Перпендикулярно направлению на Солнце? Это невозможно.
Почему вы предполагаете, что есть замедление, если вы увеличиваете ускорение?
Третий вопрос: это уравнение vis-viva справедливо только для идеально круговой орбиты. После любой тяги, приложенной в любом направлении, она уже недействительна.
@asdfex напишите это как ответ!
@asdfex уравнение vis-viva работает и для сильно эллиптических орбит, если вы используете общую форму, если они не толкают.
@ConnorGarcia Да, но только в более сложной форме, а не в сокращенной, используемой здесь.

Ответы (1)

Во-первых, вы, кажется, имеете следующее непонимание векторов силы солнечного паруса:

Наклоните его на 45 градусов, чтобы сделать тягу тангенциальной.

Тяга не тангенциальная под углом 45 градусов.

неправильные векторы

На самом деле солнечный парус всегда имеет тягу, перпендикулярную парусу , и, таким образом, не может достичь тяги, идеально касательной к Солнцу, поскольку тогда поперечное сечение было бы равно нулю.

Ваша обработка угла 45 градусов также не работает. Величина вектора тяги масштабируется на потому что 2 ( θ ) , так как площадь поперечного сечения уменьшается, а свет сохраняет большую часть своего первоначального импульса с большим углом.

Это означает, что у вас есть тангенциальная составляющая потому что 2 ( θ ) грех ( θ ) (половина вашего значения) и радиальный компонент потому что 3 ( θ ) (что вы не учли).

Это существенно повлияет на вашу следующую часть, которая предполагает круговую орбиту. При радиальном ускорении орбита не может оставаться круговой, что делает недействительным аргумент о живой силе, который вы приводите. Другая проблема заключается в том, что используемый вами частный случай vis-viva применим только к скорости круговых орбит. Чтобы это приближение имело смысл, вы должны гарантировать, что орбита остается примерно круговой, что сложно, поскольку всегда есть радиальная тяга от паруса.

Ваш код выглядит так, как будто он также зависит от фиктивного дифференциального уравнения, полученного из исходной ошибочной модели солнечного паруса.

Отвечать:

Почему мое математическое решение vis-viva оказалось таким близким, несмотря на то, что оно было неправильным?

Вероятно, это не близко, так как его сравнивают с альтернативным расчетом, основанным на той же самой уязвимости.

"тангенциально к парусу" - я полагаю, вы имеете в виду перпендикулярно.