Cette semaine, nous terminons notre projet en ajoutant un intégrateur du second ordre.
L'intégrateur d'Euler-Cromer tel qu'implémenté dans l'exercice P6 a l'avantage d'être simple, mais son principal inconvénient est d'être peu précis. Cela est d'autant plus problématique que le système à simuler est non linéaire (on parle de « système chaotique ») ; ce qui est précisément le cas de pratiquement tous les exercices simulés.
Le but de cet exercice est donc d'implémenter un autre type d'intégrateur, plus correct numériquement : soit la méthode de Newmark, soit la méthode de Runge-Kutta d'ordre 4 (soit les deux si vous êtes motivé(e)), telles que décrites en sections 3.3 et 3.4 du complément mathématique du projet.
L'idéal serait de pouvoir changer de type d'intégrateur dans la simulation, de sorte à pouvoir comparer l'effet des différentes méthodes d'intégration , voire, peut-être, si cela est compatible avec votre conception, avoir différents objets avec différents intégrateurs, p.ex. pour comparer en même temps, un même objet mais intégré avec des intégrateurs différents.
[Question P12.1]
Où cela s'intègre-t-il dans votre projet/conception ?
Quels changements cela engendre-t-il (ou pas) ?
Répondez à cette question dans votre fichier REPONSES
.
Si l'on reprend le premier cas de test de l'exercice P6 (chute libre d'un point matériel depuis [0 0 1], vitesse initiale [0 1 2]), on devrait trouver les résultats suivants :
qui graphiquement donne ceci (impossible à l'oeil de voir la différence entre Newmark, Runge-Kutta 4 et la vraie trajectoire, mais on peut constater une différence dans les valeurs par exemple à t=0.41 entre Newmark et RK4, et à t=0.47 entre RK4 et la trajectoire réelle calculée à une précision de 1e-6) :
En reprenant l'exemple donné en fin d'exercice P7 (attraction pomme-Terre), mais ici avec une méthode d'intégration Runge-Kutta d'ordre 4, on obtient (voir tests/pomme-RK4.txt pour plus de détails) :
t z pomme 0.0000 10.00000 0.0010 9.999995 0.0020 9.999980 0.0030 9.999956 0.0040 9.999921 0.0050 9.999877 0.0060 9.999823 0.0070 9.999759 0.0080 9.999686 0.0090 9.999602 0.0100 9.999509 0.0110 9.999406
et avec un intégrateur de Newmark (c'est en fait exactement pareil; voir tests/pomme-NM.txt pour plus de détails) :
t z pomme 0.0000 10.00000 0.0010 9.999995 0.0020 9.999980 0.0030 9.999956 0.0040 9.999921 0.0050 9.999877 0.0060 9.999823 0.0070 9.999759 0.0080 9.999686 0.0090 9.999602 0.0100 9.999509 0.0110 9.999406