Cálculo de periodos sinódicos en un punto dado de la órbita

Calcular el período sinódico regular de dos cuerpos en órbita es bastante sencillo, pero ¿y si quisiera saber cuándo se encontrarían en una posición específica? Por ejemplo, si comparten un periapsis. (Por "misma posición" quiero decir que los dos objetos en órbita y el cuerpo central están en la misma línea)
Sé que esto solo se aplica si puede expresar uno de los períodos de los cuerpos como una fracción del otro, por lo que un 1 y un sqrt (2) la órbita nunca se sincronizaría.
Pero, ¿y si decido un margen aceptable? (como 10 grados)

Actualmente estoy forzando esto.

Mi pregunta es: ¿Es una forma de calcular la próxima vez que dos cuerpos se encontrarán en el mismo lugar, dado su período orbital y un error aceptable?

Los objetos no tienen un efecto notable entre sí, ni en el cuerpo central. Restringir a circular o coplanar si es necesario.

¿Puede dar más detalles sobre "la misma posición"? ¿Quiere decir la misma posición angular (¿verdadera anomalía más argumento de periapsis?).
@Brian Lynch Gracias por el comentario. Si, lo aclaro en la pregunta.
¿Las órbitas son circulares? ¿Co-planar? ¿Se supone que ambos son muy pequeños en comparación con el cuerpo central con un efecto insignificante entre sí para tener una solución simple?
@Mark Adler, sí, su efecto entre sí y el cuerpo central es insignificante. En cuanto a circular y coplanar, no tienen que serlo, pero una solución restringida a uno o ambos también sería útil. Siéntase libre de dar una respuesta parcial. Mi trabajo actual es usar incrementos de tiempo.
@barrycarter Sí, eso parece relacionado. Sería interesante si obtiene una respuesta. Tal vez pueda modificar mi código para acomodar alineaciones de tres o más planetas. Sin embargo, no estoy seguro de lo que piensan sobre las herramientas específicas del idioma.
Solo como nota, en realidad estoy trabajando en una solución para eso: github.com/barrycarter/bcapps/blob/master/MATHEMATICA/… que incluirá este GIF animado: github.com/barrycarter/bcapps/blob /maestro/MATEMATICA/…

Respuestas (1)

Esto es lo que finalmente resolvió mi problema. Esta función de JavaScript toma los parámetros: radiusRatio, el radio de los objetos más externos dividido por los más internos. innerAnomaly, la anomalía verdadera de los objetos más internos desde la dirección de referencia, lo mismo para outerAnomaly, errorMargines el ángulo máximo entre cualquiera de los dos vectores de radio o la dirección de referencia, y limites la cantidad de órbitas de los objetos más internos para simular.

Tenga en cuenta que la medida del ángulo utilizada para innerAnomaly, outerAnomalyy errorMarginestá en fracciones de una órbita, no en grados ni radianes.

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;
};

Produce una matriz que contiene submatrices con los datos del encuentro en el formato de 1 número de órbitas que ha realizado el objeto más interno y 2 cuál fue el margen de error. La siguiente entrada es la próxima vez que el error es menor que eso.

Por supuesto, está restringida a órbitas circulares coplanares, y la masa de los dos objetos en órbita es insignificante.

Tengo una explicación más detallada de un problema relacionado en https://physics.stackexchange.com/a/232918/102747