Вычисление синодических периодов в заданной точке орбиты

Вычислить обычный синодический период двух вращающихся тел довольно просто, но что, если я хочу знать, когда они встретятся в определенном положении? Например, если у них общая периапсида. (Под «одной и той же позицией» я подразумеваю, что два вращающихся объекта и центральное тело находятся на одной линии).
Я знаю, что это применимо только в том случае, если вы можете выразить период одного из тел как долю другого, поэтому 1 и sqrt (2) орбита никогда не синхронизируется.
Но что, если я выберу приемлемую маржу? (например, 10 градусов)

В настоящее время я брутфорсирую это.

У меня такой вопрос: можно ли рассчитать, когда два тела в следующий раз встретятся в одном и том же месте, учитывая их орбитальный период и допустимую ошибку?

Объекты не оказывают заметного влияния ни друг на друга, ни на центральное тело. Ограничьтесь круговым или копланарным, если необходимо.

Можно поподробнее про "та же позиция"? Вы имеете в виду одно и то же угловое положение (истинная аномалия плюс аргумент перицентра?).
@ Брайан Линч Спасибо за комментарий. Да, уточнил в вопросе.
Круговые ли орбиты? Копланарный? Предполагается, что оба они очень малы по сравнению с центральным телом и незначительно влияют друг на друга, чтобы иметь простое решение?
@Марк Адлер, да, их влияние друг на друга и на центральное тело незначительно. Что касается круглого и копланарного, они не обязательно должны быть, но решение, ограниченное одним или обоими, также было бы полезным. Не стесняйтесь давать частичный ответ. Моя текущая работа вокруг использует приращения времени.
Что-то связанное: physics.stackexchange.com/questions/197481/…
@barrycarter Да, похоже, это связано. Было бы интересно, если бы он получил ответ. Может быть, я смогу настроить свой код так, чтобы он соответствовал выравниванию трех или более планет. Не уверен, что они думают об инструментах, специфичных для языка.
Просто в качестве примечания: я сам работаю над решением этого вопроса: github.com/barrycarter/bcapps/blob/master/MATHEMATICA/… , который будет включать в себя этот шикарный анимированный GIF: github.com/barrycarter/bcapps/blob /мастер/МАТЕМАТИКА/…

Ответы (1)

Это то, что в конечном итоге решило мою проблему. Эта функция JavaScript принимает следующие параметры: radiusRatio, радиус самых внешних объектов, разделенный на самые внутренние. innerAnomalyистинная аномалия самых внутренних объектов от опорного направления, то же самое для outerAnomaly, errorMarginявляется максимальным углом между любым из двух радиус-векторов или опорным направлением, а limitтакже количеством орбит самых внутренних объектов для моделирования.

Обратите внимание, что угловая мера, используемая для innerAnomaly, выражается в долях орбиты, а не в градусах или радианах outerAnomaly.errorMargin

sameLine = function (radiusRatio,innerAnomaly,outerAnomaly,errorMargin,limit){
    results = [];
    newMargin = errorMargin;
    periodRatio = Math.pow(radiusRatio,3/2);
    for (i = 1; i < limit; i++){
        anomaly = (outerAnomaly + (i - innerAnomaly)/periodRatio) % 1;
        if (anomaly > 1 - anomaly){
            anomaly = 1 - anomaly;
        };
        if (anomaly <= newMargin){
            results.push([i - innerAnomaly,anomaly]);
            newMargin = anomaly;
        };
    };
    return results;
};

Он выводит массив, содержащий подмассивы с данными о встречах в формате 1 числа орбит, которые совершил самый внутренний объект, и 2 того, каков был предел погрешности. Следующая запись - это следующий раз, когда ошибка меньше этого значения.

Конечно, он ограничен компланарными круговыми орбитами, а масса двух вращающихся объектов незначительна.

У меня есть более подробное объяснение связанной проблемы на https://physics.stackexchange.com/a/232918/102747 .