Bonjour,
Je suis actuellement en train de tester la programmation fonctionnelle réactive et pour cela, je réalise un mini moteur physique. L'idée de base étant de simuler un problème à N corps.
Actuellement, si je met deux objet immobile à une distance raisonnable l'un de l'autre et que je lance la simulation, les deux objets se rapprochent petit à petit, de plus en plus vite (jusque là, tout me semble normal), mais lorsqu'ils se rencontrent (il n'y a pas de collision), ils sont tous les deux fortement accélérés. Au final, à partir de deux objets immobiles et à une certaine distance, j'obtiens deux objets avec un grande vitesse et une distance assez vite beaucoup plus grande que celle d'origine.
J'en déduis donc qu'on a une (forte) augmentation de l'énergie interne du système, ce qui n'est, il me semble, pas physiquement très réaliste.
À supposer que mon interprétation est bonne, on peux supposer que le problème viens de la méthode de résolution de l'équation différentielle du système. A priori, c'est la méthode d'Euler que j'utilise : le calcul des intégrales se fait en ajoutant la valeur à intégrer multiplié par la différence de temps. Je sais que la méthode d'Euler peut propager assez facilement des erreurs, est-ce que c'est bien ça qui se passe? Enfin, est-ce qu'utiliser une méthode telle que Runge-Kutta permet de résoudre ce problème ou est-ce que ça ne ferais que le réduire?