1ère Loi de Kepler
Pour modéliser la première loi de Kepler avec l'ordinateur, j'ai utilisé l'équation polaire d'une ellipse avec le pôle au foyer gauche. Tout ceci est arbitraire, mais le but de la simulation est de montrer le mouvement global des planètes à partir des lois de Kepler. J'ai procédé de cette manière :
Tout d'abord, il a fallu modifier l'équation, car je n'utilise que a et e pour définir l'ellipse. (voir la section sur les ellipses.) On sait que b2=a2-c2. Remplaçons le dans l'équation polaire.
r=b2/[a*(1-e*cos(t))]
r=(a2-c2)/[a*(1-e*cos(t))]
Mais maintenant, on est bien avancé, car il nous reste c. Regardez la section sur les ellipses et on peut lire qu'on définit e par
e=c/a, ce qui revient à c=a*e d'où
Et voilà, le tour est joué.
Programmons un peu maintenant. Je ne vais pas m'attarder sur le langage ou sur les fonctions d'affichages etc... Je vais me consacrer à l'algorithme de calcul.
Il faut créer des variables x, y, r, et t. Ensuite, il faut assigner la valeur 0 à la variable t qui est notre angle polaire, en degré. On calcule r avec la formule suivante :
r=r:=a*(1-e2)/(1-e*cos(t))
La valeur de a n'est pas celle de la planète. En fait, elle est calculée en fonction de e pour obtenir un affichage correct. e est la valeur se trouvant dans la zone de texte. La programme calcule maintenant les coordonnées cartésiennes de la planète avec ces formules :
x=r*cos(t)+xsol y=r*sin(t)+ysol
Maintenant, il ne reste qu'à afficher la planète à ses nouvelles coordonnées et recommencer les calculs après avoir incrémenté la variable t. Accessoirement, on place aux anciennes coordonnées de la planète un "point blanc" pour montrer la trajectoire de la planète.
2ème Loi de Kepler
Cette manière de procéder est selon moi la meilleure. J'en ai expérimenté d'autres, mais aucune n'est aussi simple que celle ci. Mais en s'y penchant un peu plus, on peut remarquer une erreur, une très grosse erreur. En effet, si on augmente l'excentricité, ce qui n'est pas forcément visible pour de petites valeurs de e, devient frappant ( enfin moi, je suis frappé ). La planète ralentit à mesure qu'elle se rapproche du soleil, et accélère à mesure qu'elle s'en éloigne, ce qui est totalement en contradiction avec, par exemple les lois de Newton, et la deuxième loi de Kepler. D'accord, mais rassurons nous. La première simulation modélisait une trajectoire elliptique. L'accélération et le ralentissement de la planète, c'est l'affaire de la deuxième simulation. Je me suis dit : "C'est peut-être du à l'incrémentation de l'angle qui devrait varier" (j'ai pas mal cherché). Alors voici ce que j'ai fait :
Soit S la surface balayée pendant l'intervalle de temps Dt. L'aire de l'ellipse pab est balayée en une durée T qui est la période sidérale de la planète. D'après la deuxième loi de Kepler, si Dt est constant, alors S est constante. On peut écrire
pab/S = T/Dt
d'où S=(pab*Dt)/T
Reste à voir à combien est égal S...
On va considérer un intervalle de temps Dt très petit. Pendant cet intervalle de temps, la distance planète soleil ne varie que très peu. Ainsi, on peut écrire OA=OB.
On voit que l'aire S est très proche de l'aire du triangle OAB, d'autant plus que a est petit.
On a
h=OB*sin(a)
On peut écrire a»sin(a) car a est très petit si Dt est très petit. On a donc
S=OA*OB*a S=OA2*a
OA étant la distance du soleil à la planète, on peut écrire OA=r (voir simulation 1). On a donc
S=r2a
En remplaçant S par la dernière formule dans la première égalité, on obtient :
r2a=pab*Dt/T
d'où a=pab*Dt/(T*r2)
en remplaçant b dans cette expression, on obtient :
a=pa2*sqr(1-e2)*Dt/(T*r2)
sqr est le terme de programmation pour la racine carrée.
Et voilà, c'est gagné. Il faut incrémenter t non pas de 1 comme dans la première simulation, mais de a. Cette formule est un peu inexacte dans le sens où elle fait intervenir pas mal d'approximations. Cependant, elle s'adapte très bien à une simulation informatique. Il suffit de remplacer t:=t+1; par t:=t+a, en ayant bien sûr calculé a avant.
3ème Loi de Kepler
Alors là, ça a été un peu plus dur. D'abord, il a fallut définir une constante k. Je lui ai donné pour valeur 1024000. Cette valeur n'a absolument rien à voir avec les valeurs réelles, mais cette valeur facilitait la programmation. Cette constante représente la constante a3/T2. Dans cette simulation, j'utilise deux planètes. J'ai donc créé une seconde variable a, appelée a2 pour le demi grand axe de cette planète. Elle a aussi une excentricité propre, notée e2. Ensuite, il a fallut calculer T pour chaque planète pour modéliser la troisième loi. J'ai donc T=sqr(a3/1024000) T2=sqr(a23/1024000). Ainsi, en incorporant T dans la formule obtenue plus haut, je change la vitesse de la planète, respectant ainsi la troisième loi de Kepler. J'ai en plus ajouté un bonus : j'ai implanté une scrollbar qui permet de rapprocher ou d'éloigner les deux planètes.