
On souhaite obtenir la trajectoire d'un projectile lancé depuis la Terre, dans le champ gravitationnel de cette dernière. Nous allons considérer un projectile de masse \(m\) situé à une distance initiale \(r_0=R_T+h\) du centre de la Terre, et envoyé avec une vitesse initiale de norme \(v_0\) dans une direction horizontale (orthogonale à la verticale du lieu), comme sur le schéma ci-contre.
Pour cela, nous allons résoudre numériquement les équations différentielles données par le P.F.D., qui sont couplées et non linéaires.
On se place dans le référentiel géocentrique, supposé galiléen, et associé à deux axes orthonormés \((Ox)\) et \((Oy)\) d'origine \(O\) au centre de la Terre.
I - Obtention des équations différentielles du mouvement
Comme on sait d'après le cours que le mouvement est plan (conservation du moment cinétique), plaçons-nous d'abord en coordonnées polaires, puisque la force gravitationnelle s'écrira naturellement dans cette base.
Nous allons maintenant passer aux coordonnées cartésiennes, puisque cela nous permettra de tracer directement la trajectoire avec matplotlib
.
Nous allons donc résoudre ce système d'équations différentielles couplées et non linéaires, avec solve_ivp()
que nous avons déjà rencontrée sur un exemple plus simple lors de l'ACTIVITE 3.
II - Résolution numérique des équations différentielles du mouvement
Comme d'habitude, on commence par importer les bibliothèques dont on aura besoin. Puis on définit les valeurs des paramètres physiques du problème (à compléter) :
Utiliser les équations du P.F.D. obtenues plus haut pour définir les équations différentielles à résoudre, c'est-à-dire \(\ddot{x}\) et \(\ddot{y}\) en fonction de \(x\) et \(y\) :
Pour travailler avec des ordres de grandeurs pertinents pour la durée du mouvement et pour la vitesse initiale, nous allons nous appuyer sur des valeurs obtenues par résolution mathématique exacte dans le cas du mouvement circulaire uniforme.
Définir cette vitesse de référence vcirc
et cette durée de référence T
dans le programme (ces valeurs nous serviront ensuite à choisir facilement la vitesse initiale v0
et la durée de résolution tf
en rapport à ces valeurs de référence) :
Utilisons maintenant solve_ivp()
pour résoudre le système d'équations différentielles equadiffs
. Rappelons le mode d'emploi de cette fonction :
solution = sci.solve_ivp(systeme, [t0,tf], [C1,C2,C3,C4], t_eval=liste_t)
- En entrée :
systeme
est le système différentiel à résoudre, dans notre cas présent c'estequadiffs
qui contient dans cet ordre : \(x\), \(\dot{x}\), \(y\), \(\dot{y}\)[t0,tf]
est l'intervalle de résolution[C1,C2,C3,C4]
est le jeu des conditions initiales, donc dans notre cas ce sont les valeurs (dans cet ordre) de \(x(0)\), \(\dot{x}(0)\), \(y(0)\), \(\dot{y}(0)\)liste_t
est la liste des instants où on fait le calcul.
- En sortie :
solution.t
retournera la liste des instants de calcul (donc identique àliste_t
)solution.y[0]
retournera les valeurs calculées de la première fonction inconnue, donc dans notre cas les valeurs de \(x(t)\)solution.y[1]
retournera les valeurs calculées de la deuxième fonction inconnue, donc dans notre cas les valeurs de \(\dot{x}(t)\)solution.y[2]
retournera les valeurs calculées de la troisième fonction inconnue, donc dans notre cas les valeurs de \(y(t)\)solution.y[3]
retournera les valeurs calculées de la quatrième fonction inconnue, donc dans notre cas les valeurs de \(\dot{y}(t)\)
Compléter cette instruction avec les quatre valeurs de conditions initiales que nous avons déjà définies précédemment :
Il ne nous reste plus qu'à afficher la trajectoire ! On dessine aussi la Terre, et on repère le point de départ avec une petite marque rouge :
Tracer plusieurs trajectoires différentes en modifiant la valeur de la vitesse initiale v0
.
Vous pourrez (par exemple) tracer les trajectoires pour :
\[v_0=0,5\times v_{circ}\]
\[v_0=0,8\times v_{circ}\]
\[v_0=v_{circ}\]
\[v_0=1,2\times v_{circ}\]
\[v_0=1,3\times v_{circ}\]
\[v_0=\sqrt{2}\times v_{circ}\]
\[v_0=2\times v_{circ}\]
Il faudra peut-être parfois aussi adapter la durée tf
sur laquelle on calcule la trajectoire.