Телескопы покупают здесь


A A A A Автор Тема: Подскажите калькулятор для расчета орбиты (не эфемериды!)  (Прочитано 816 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн JorgelАвтор темы

  • Новичок
  • *
  • Сообщений: 28
  • Благодарностей: 0
  • Мне нравится этот форум!
    • Сообщения от Jorgel
Дано: расстояние и скорость в перигелии. Надо узнать расстояние в афелии, время полного оборота, а также расстояние (по прямой в км) до Солнца в произвольный момент времени t, где t=0 в момент прохождения перигелия.
Никакие координаты в небе Земли не нужны, про Землю вообще забудьте ;) Все расстояния - от Солнца.

Оффлайн волотька хрюкалин

  • *****
  • Забанен!
  • Сообщений: 1 128
  • Благодарностей: 83
    • Сообщения от волотька хрюкалин
Нафиг там калькуляторы?

Из выражения т.н. интеграла энергии

\[\large V_{q}^{2}=GM\left ( \frac{2}{q}-\frac{1}{a} \right )\]

находите большую полуось орбиты a.

Далее из третьего уточненного закона Кеплера находите период обращения T.

Эксцентриситет орбиты будет равен:

\[\large e=1-\frac{q}{a}\]

Афелийное расстояние:

\[\large Q=a(1+e)=2a-q\]

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

\[\large M=\frac{2\pi }{T}\left ( t-t_{0} \right )\]

Затем одним из методов (графическими, приближенными и т.д.) надо будет решить трансцендентное уравнение Кеплера относительно эксцентрической аномалии E:

\[\large M=E-e\cdot sinE\]

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

\[\large r=a\left ( 1-e\cdot cosE \right )\]
« Последнее редактирование: 23 Авг 2021 [16:00:59] от Starry Guide »

Оффлайн Toth

  • *****
  • Сообщений: 2 602
  • Благодарностей: 175
    • Сообщения от Toth
Затем одним из методов (графическими, приближенными и т.д.) надо будет решить трансцендентное уравнение Кеплера относительно эксцентрической аномалии E:
Вот тут например расписано как -
О. Монтенбрук, Т. Пфлегер "Астрономия на персональном компьютере"

PS Кстати, орбита может оказаться и гиперболической (a<0; e>1). В той книге для гиперболических тоже есть формулы.
Конечно никаких периодов и афелиев не будет.
« Последнее редактирование: 23 Авг 2021 [16:38:50] от Toth »

Оффлайн JorgelАвтор темы

  • Новичок
  • *
  • Сообщений: 28
  • Благодарностей: 0
  • Мне нравится этот форум!
    • Сообщения от Jorgel
"Попроси у юниксоида туалетную бумагу, и он даст тебе топор и карту делянки";)
Я потому и прошу кадбкулятор, чтобы самому не считать. Я, честно говоря, вообще не понял, на каком языке все это было. Что такое large,  frac, left, right,  cdot? Что за обратные слэщи и фигурные скобки? Что за переменная q? Что такое трансцендентные уравнения - даже в вузе не проходил, а с тех пор 30 лет прошло, сейчас и дифференциальное-то не решу.
Так что дайте мне все-таки ссылку на софт какой-нибудь (бесплатный), который это решает. Ну или программу на С (или Паскале), на худой конец.

Оффлайн xd

  • *****
  • Сообщений: 17 977
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Профиль - Внешний вид форума - Включить рендеринг формул
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

Оффлайн Toth

  • *****
  • Сообщений: 2 602
  • Благодарностей: 175
    • Сообщения от Toth
Ну или программу на С (или Паскале), на худой конец.
В той книге, что я упоминал - в старом издании 199.. годов - исходники на Паскале, в новом 2002 г - на Си++.

Оффлайн Dust Raider

  • ***
  • Сообщений: 117
  • Благодарностей: 7
  • Мне нравится этот форум!
    • Сообщения от Dust Raider
Дано: расстояние и скорость в перигелии. Надо узнать расстояние в афелии, время полного оборота, а также расстояние (по прямой в км) до Солнца в произвольный момент времени t, где t=0 в момент прохождения перигелия.
Вот такой куркулятор есть. Ищите на английском, у нас почти никто не пишет такого рода калькуляторы.

"Попроси у юниксоида туалетную бумагу, и он даст тебе топор и карту делянки"
С одной стороны вы правы, но вообще-то тут не такие уж жОсцкие формулы. Астрономия это очень во многом цифры, здесь надо не лениться считать.

Оффлайн Ulmo

  • *****
  • Сообщений: 1 888
  • Благодарностей: 67
    • Сообщения от Ulmo
Я потому и прошу кадбкулятор, чтобы самому не считать.
Скорей всего вы его не найдете. Уж больно специфическая задача. Скорей всего подобные расчеты будут входить как часть в более глобальную программу и вырезанном виде просто не будут работать.

Оффлайн Toth

  • *****
  • Сообщений: 2 602
  • Благодарностей: 175
    • Сообщения от Toth
Сделал, пользуйтесь. Если ОС - Видновс. Установки не надо, просто запустить .exe.

PS Так как вводить в 2 поля можно что угодно ( почти  ;) ), то если v окажется меньше круговой, то мы в перигелии, а если больше то мы не в перигелии, а в афелии.
Предполагается, что в исходных данных вектор скорости перпендикулярен радиус-вектору.
« Последнее редактирование: 24 Авг 2021 [15:06:27] от Toth »


Оффлайн волотька хрюкалин

  • *****
  • Забанен!
  • Сообщений: 1 128
  • Благодарностей: 83
    • Сообщения от волотька хрюкалин
здесь надо не лениться считать.
Ему по ходу не только считать лень, но и поисковиком пользоваться. Пока научился говорить только слово "дайте" ;D

Оффлайн JorgelАвтор темы

  • Новичок
  • *
  • Сообщений: 28
  • Благодарностей: 0
  • Мне нравится этот форум!
    • Сообщения от Jorgel
Сделал, пользуйтесь. Если ОС - Видновс. Установки не надо, просто запустить .exe.


Очень круто, спасибо!!! Только у меня вся кириллица на форме превратилась в "?", можете это испраивть? Мржно просто заменить на английский, если так проще.
И заодно - можете добавить еще и обратную задачу, т.е. задаем расстояние до Солнца, получаем время до перигелия?

Сравнил результаты с тем калькулятором, который посоветовал Dust Raider (ему тоже спасибо!), они несколько отличаютс (см. вложение). Интересно, у кого точнее. Возможно, вы использовали более точную массу Солнца? (У них только 4 знака, дальше нули)
Если скажете ваше реальнон имя, напишу вам благодарность в том тексте, ради которого все это нужно ;)

Оффлайн Toth

  • *****
  • Сообщений: 2 602
  • Благодарностей: 175
    • Сообщения от Toth
Вот, изменил.


Возможно, вы использовали более точную массу Солнца? (У них только 4 знака, дальше нули)
Использовал из DE/LE405 - GM =1.3271244001799E+20 в системе СИ.
Произведение GM известно гораздо точнее, чем по отдельности G и M.

можете добавить еще и обратную задачу, т.е. задаем расстояние до Солнца, получаем время до перигелия?
Расстояния мало, надо еще скорость, и не просто значения r и v, а векторы положения и скорости. Это называется определение орбит.
Если надо, посмотрю, я это делал, просто там много лишнего, путаница будет.

Оффлайн Toth

  • *****
  • Сообщений: 2 602
  • Благодарностей: 175
    • Сообщения от Toth

Оффлайн JorgelАвтор темы

  • Новичок
  • *
  • Сообщений: 28
  • Благодарностей: 0
  • Мне нравится этот форум!
    • Сообщения от Jorgel
Вот, изменил.

Спасибо!
Вторая программа у меня не запустилась, т.к. не 32-битная, но там, действительно, слишком много параментов. Мне нужно только на основнии тех, что я сказал - расстояние и скорость в перигелии ;)

Расстояния мало, надо еще скорость, и не просто значения r и v, а векторы положения и скорости. Это называется определение орбит.
Если надо, посмотрю, я это делал, просто там много лишнего, путаница будет.

Получается, определить время, зная расстояние, более сложная задача, чем определить расстояние, зная время? Тогда, может, добавить ф-цию, которая генерировала бы таблицу расстояний с шагом в заданное число дней? Т.е. добавить еще поле "step", и если он не задан (равен 0), то все как сейчас, а если задан, то после общих для всей орбиты параметров выдавать таблицу расстояний (можно и скоростей до кучи) от заданного дня до перигелия с шагом step. Всего один цикл добавить ;)

Оффлайн Toth

  • *****
  • Сообщений: 2 602
  • Благодарностей: 175
    • Сообщения от Toth
Т.е. добавить еще поле "step", и если он не задан (равен 0), то все как сейчас, а если задан ...
Проще всегда step. Можно просто задать начало=конец.


Оффлайн Toth

  • *****
  • Сообщений: 2 602
  • Благодарностей: 175
    • Сообщения от Toth
Получается, определить время, зная расстояние, более сложная задача, чем определить расстояние, зная время?
Для примера - такая задача.
Дано - вектор положения и вектор скорости, определяем элементы орбиты.
Потом, не меняя величины скорости, меняем только её направление , и определяем элементы орбиты.
Получаем - время перигелия разное, и расстояния перигелия/афелия разные.

Оффлайн JorgelАвтор темы

  • Новичок
  • *
  • Сообщений: 28
  • Благодарностей: 0
  • Мне нравится этот форум!
    • Сообщения от Jorgel

Проще всегда step. Можно просто задать начало=конец.

Спасибо! Я, наверное, уже надоел, но все-таки - последние, но важные пожелания:
1) Сделать таблицу, а не отдельные колонки, а то их по отдельности скроллировать неудобно. Если у вас исходник на Дельфи или C++ Builder, там это совсем просто.
2) Сделать в этой таблице не 2, а 3 колонки, первую - число дней
3) Сейчас, как я понимаю, можно посчитать только только в одном направлении - от перигелия в космос. Понятно, что оно симметрично и можно читать таблицу снизу вверх, но хотелось бы все-таки, чтобы можно было в обе стороны. Т.е. чтобы можно было задать и 0, 60, 2, и 60, 0, 2. Примерно так:

if day1>day2 then delta:=-step else delta:=step;
steps:=integer(abs(day1-day2)/step);
day:=day1;
for i:=1 to steps do
begin
 calculate(day);  (* функция, заподняющая ряд таблицы *)
 day:=day+delta;
end;

Оффлайн JorgelАвтор темы

  • Новичок
  • *
  • Сообщений: 28
  • Благодарностей: 0
  • Мне нравится этот форум!
    • Сообщения от Jorgel
Дано - вектор положения и вектор скорости, определяем элементы орбиты.
Потом, не меняя величины скорости, меняем только её направление , и определяем элементы орбиты.
Получаем - время перигелия разное, и расстояния перигелия/афелия разные.
Так ведь это уже другая орбита получится! Именно что с другим перигелием/афелием. Сам собой вектор скорости поменяться не может, только под воздействием внешней силы (будь то гравитация третьего тела или двигатель). А если у нас орбита постоянная и известны расстояние и скорость в перигелии, то соотношение межлу длиной радиус-вектора и временем до перигелия (с точность до направления "к" или "от") взаимно однозначное.

Оффлайн Toth

  • *****
  • Сообщений: 2 602
  • Благодарностей: 175
    • Сообщения от Toth
Сделать таблицу, а не отдельные колонки, а то их по отдельности скроллировать неудобно
Зато копировать из/в  Memo можно, а из StringGrid - я не знаю как.

Оффлайн JorgelАвтор темы

  • Новичок
  • *
  • Сообщений: 28
  • Благодарностей: 0
  • Мне нравится этот форум!
    • Сообщения от Jorgel
Зато копировать из/в  Memo можно, а из StringGrid - я не знаю как.
Да, действительно Ну тогда просто формировать одну колонку как str(day)+str(distance)+str(velocity), только, конечно, отформатированные (дополненые пробелами) до определенной длины. Чтобы выглядело примерно как сейчас, но без перемычек между ними ;)