Bonsoir,
Je viens rechercher quelques sages conseils sur ces forums, et j'espère que vous pourrez m'aider !
Pour mon TIPE (Travail d'intérêt personnel encadré) j'essaye de coder avec le logiciel Matlab un algorithme me permettant de simuler le système solaire en considérant uniquement pour le moment le Soleil et les 8 planètes principales du système. Mon algorithme consiste simplement à intégrer les équations différentielles données par la seconde loi de Newton (système d'equations différentielles d'ordre 2) par la méthode d'intégration de Verlet.
Viens alors mon problème : lorsque mon algorithme a fini de tourner, le tenseur contenant les coordonnées cartésiennes de chaque planète à chaque instant comporte des NaN sur la très très grande majorité des coefficients ! Je pense connaître l'origine de mon problème : ma liste de positions initiales contient des nombres de l'ordre de l'Unité Astronomique, alors que ma liste des vitesses initiales contient des nombres de l'ordre de 10^(-8) UA. Je pense donc que cette différence d'ordre de grandeur fait qu'à un moment ou un autre, Matlab considère mes vecteurs positions comme nuls, et la division par 0 (pour calculer les forces gravitationnelles) entraîne l'apparition du NaN (?)
En gros, si je ne me trompe pas, je ne peux pas à la fois conserver des vitesses très petites comparées à mes distances.
Voici donc ma question : Existe-t-il un moyen de contourner cette limitation du aux ordres de grandeurs (si mon problème vient réellement de là) ?
Je ne peux pas mettre des bouts de code, car je ne sais pas d'où vient réellement le problème, mais je peux le fournir si nécessaire
J'espère avoir été assez clair, je planche sur ce problème depuis 5 ou 6 heures maintenant, je suis fatigué et en plus j'ai du mal à mettre les mots justes sur mon problème !
Partager