Cette question porte davantage sur la façon d'aborder un problème numériquement.
Dans un petit projet, je voulais simuler le mouvement coorbital de Janus et Epimetheus. Il s'agit essentiellement d'un problème à trois corps. Je choisis Saturne à fixer à l'origine, soit et les vecteurs de localisation de janus et epimetheus, respectivement. Puisque l'effet se produit lorsque Janus et Epimetheus sont très proches l'un de l'autre, j'ai choisi des coordonnées relatives pour une meilleure résolution, c'est-à-dire et . Maintenant, je reçois les équations de mouvement suivantes:
où correspond aux masses des lunes, est la masse de Saturne et la constante gravitationnelle. Le problème se pose lorsque j'essaie de résoudre ce problème numériquement. Il faut traiter des valeurs de magnitudes complètement différentes, c'est-à-dire et . Et , sont dans les régions de 0 à 150 000.
Pour être honnête, je ne sais pas si c'est le lieu idéal pour discuter de ces problèmes numériques.
Plus d'information:
Le code est écrit dans Matlab et j'utilise un solveur ODE standard pour obtenir le résultat. Cependant, cela tombe en panne car la taille du pas ne peut pas être réduite avec la précision de la machine. (Je ne trouve pas cela surprenant car il faut faire face aux ordres de grandeur déjà mentionnés).
Réponses:
Votre approche actuelle ruine la stabilité numérique; en fait, vous perdez probablement la résolution de cette façon.
Prenez comme coordonnées pour chaque satellite ses variables Kepler et l'angle du plan contenant la position du satellite, la vitesse et l'origine. Les équations différentielles en l'absence d'interaction entre les satellites sont alors trivialement simples, et seule l'interaction devient quelque peu compliquée. Comme l'interaction est minime si les satellites sont éloignés, la dynamique résultante devrait être numériquement stable.
la source
Au lieu d'utiliser un solveur ODE "classique" (rigide), vous pouvez utiliser des algorithmes dédiés pour l'intégration numérique géométrique. Voir par exemple ce livre et les codes GNI que vous pouvez trouver sur le site Web d'Ernst Hairer .
la source
Que diriez-vous si vous avez trois étapes dans votre simulation:
Peut-être en utilisant des pas de temps plus fins pour # 3.
Je ne sais pas si cela vous aidera. Je suppose que le vrai problème est que l'ampleur de la force est différente dans la lune - la lune et la lune - le cas de Saturne, sauf si les lunes sont proches?
Alternativement:
Bonne chance!
la source