ВНИМАНИЕ! На форуме началось голосование в конкурсе - астрофотография месяца МАЙ!
0 Пользователей и 1 Гость просматривают эту тему.
Но сейчас я совершенно не собираюсь рассматривать поправки, которые дает ОТО, т.к. занимаюсь расчетом смещения которое дает классическая механика.
Чтобы повысить точность полученных результатов я переделал в 4-ой версии программы модель из двухмерной в трехмерную (а в дальнейшем и учту скорость распространения сил гравитации, что должно устранить погрешность расчетов с использованием классической механики при бесконечной скорости распространения гравитации и дать для Меркурия требуемые 575 секунд, т.е. для поправки по ОТО остается ноль)
Было бы интересно, при какой скорости распространения гравитации в модели все поправки по ОТО уходят в ноль.
Поскольку Вы занимаетесь классической небесной механикой, Вам, вероятно, может оказаться полезной информация о величинах гравитационных масс планет и соотношениях между ними:http://www.scientific.ru/dforum/altern/1123601551
Для этого я написал программу Solsys3 (скачать программу и исходники можно здесь http://ser.t-k.ru/ или на зеркале http://modsys.narod.ru/ ), где движение всех планет моделируется в одной плоскости, скорость распространения гравитации равна бесконечности и система отсчета неподвижна, т.е. стопроцентно Ньютоновский подход.
Каким методом интегрируются уравнения движения?
Цитата: Дмитрий Вибе от 28 Сен 2007 [07:43:52]Каким методом интегрируются уравнения движения?Методом Рунге_Кутта по 4-м коэффициентам.С наилучшими пожеланиями Сергей Юдин.
Рунге-Кутт четвёртого порядка Вселенную не вскроет. Силёнок маловато..
1.Для численного интегрирования движения планет на больших промежутках времени будет маловато точности 8-байтового типа Double (Visual Basic 6), который Вы используете (15 значащих разрядов мантиссы).
2.Вы неверно понимаете, о каком смещении перигелия идет речь. В Вашей программе момент прохождения перигелия определяется, как минимальное расстояние от центра - это совсем не то, что надо. В небесной механике, как это сложилось чисто исторически, уравнения Кеплера никто, естественно, численно не интегрировал (до появления компьютеров), а вместо этого искались аналитические решения в виде рядов. Эти решения записывались в виде параметров невозмущенной кеплеровой орбиты, на которую накладывались два типа возмущения: 1) отклонения от кеплеровой орбиты и 2) вековое изменение параметров самой кеплеровой орбиты. В итоге, если искать перигелий Вашим способом, то будете получать те скачки, которые Вы обнаружили (они определяются поправками вида 1). А то смещение перигелия, о котором все говорят в связи с ОТО, это поправки типа 2 - вековое изменение средних значений орбитальных (кеплеровых) элементов. Так что придется Вам сначала разобраться с небесной механикой.
Пока у меня по всем критериям проходит и за 25 лет работы с ним он зарекомендовал себя очень хорошо.
А у Вас есть какие то конкретные возражения или предложения или только общие соображения.
1. Он не "долбаный". И "не точнее". Там все те же типы согласно IEEE-754.
Наблюдаются азимут и высота планеты в такой-то момент времени. Затем эти азимут и высота пересчитываются в экваториальные, а затем в эклиптикальные координаты.
Далее решается задача, обратная кеплеровой - по ряду наблюдений координат получить параметры орбиты. Их получают и выясняестя, что на длительных сроках кроме периодических изменений есть и секулярные (вековые). И выясняется, что у орбиты планеты меняется линия апсид. Для того, чтобы нам самим знать, сколько до кого, солнечный параллакс измеряется тоже.В астрономии нет "замеров перигелия".
Справедливости ради необходимо отметить, что в C++ кроме типа "double", который имеет размер 8 байт, есть ещё тип "long double", который имеет размер 10 байт и естественно точнее. У него под мантиссу отводится 8 байт, а под экспоненту 2 байта. Похоже, что в Basic этого типа нет.
Проводил как-то несколько лет назад эксперименты по влиянию количества разрядов на точность численного интегрирования. Гонял орбиту Радиоастрона. Количество разрядов задавал в диапазоне от 16 до 32. Интегрировал в Mathematica, используя ее стандартные функции. Точность там можно задавать любую. Получилось, что после 24 разрядов орбита перестала изменяться (количественно, я уже не помню). Т.е. в терминах языков Вам нужна как минимум "triple precision" .