Esta pergunta é mais sobre como resolver um problema numericamente.
Em um pequeno projeto, eu queria simular o movimento coorbital de Janus e Epimetheus. Este é basicamente um problema de três corpos. Eu escolhi Saturno para ser corrigido na origem, sejam e os vetores de localização de janus e epimetheus, respectivamente. Como o efeito ocorre quando Janus e Epimetheus estão muito próximos, escolhi coordenadas relativas para uma melhor resolução, ou seja, e . Agora eu recebo as seguintes equações de movimento:r 2 r = r 1 - r 2 R = r 1 + r 2
onde corresponde às massas das luas, é a massa de Saturno e a constante gravitacional. O problema surge quando tento resolver isso numericamente. É preciso lidar com valores de magnitudes completamente diferentes, isto é, e . E , estão nas regiões de 0 a 150.000.
Para ser sincero, não tenho certeza se este é o fórum para discutir esses problemas numéricos.
Mais Informações:
O código está escrito no Matlab e eu uso um solucionador de ODE padrão para obter o resultado. No entanto, isso está quebrando porque o tamanho da etapa não pode ser reduzido com precisão da máquina. (Acho que isso não é surpreendente, porque é preciso lidar com as ordens de magnitude já mencionadas).
Respostas:
Sua abordagem atual arruina a estabilidade numérica; na verdade, você provavelmente perde a resolução dessa maneira.
Tome como coordenadas para cada satélite suas variáveis Kepler e o ângulo do plano que contém a posição do satélite, a velocidade e a origem. As equações diferenciais na ausência de interação entre os satélites são então trivialmente simples, e somente a interação se torna um pouco complicada. Como a interação é pequena se os satélites estiverem distantes, a dinâmica resultante deve ser numericamente estável.
fonte
Em vez de usar um solucionador de ODE "clássico" (rígido), você pode usar algoritmos dedicados para integração numérica geométrica. Veja, por exemplo, este livro e os códigos GNI que você pode encontrar no site da Ernst Hairer .
fonte
Que tal se você tiver três etapas na sua simulação:
Possivelmente usando timesteps mais finos para o # 3.
Não tenho certeza se isso vai ajudar. Suponho que o verdadeiro problema é que a magnitude da força é diferente no caso lua - lua e lua - Saturno, exceto se as luas estiverem próximas?
Alternativamente:
Boa sorte!
fonte