Act5.2 - Rétrogration
-
Copier le programme dans le menu ci-dessous.
-
Coller le programme de Edupython.
-
Modifier la ligne 4 pour effectuer le suivi des positions de Mars et de la Terre dans le référentiel héliocentrique pendant 3 années terrestres,
-
Compléter le programme, lignes 14 à 22, avec les données obtenues au document 3.
-
Exécuter le programme.
Programme python 🐍
🐍 Script Python
import matplotlib.pyplot as plt
import math
Delta_t = 10 #la position des planètes est enregistrée tous les 10 jours
Suivi = #le suivi sera effectué pendant cette durée exprimée en année
i = 0
#toutes les distances sont exprimées en mètre
######################################################################################
############### A COMPLETER #############################
######################################################################################
#pour la Terre
a_3 = # demi grand axe
e_3 = #excentricité sans unité
T_3 = #période de révolution en jours terrestres
#pour Mars
a_4 = # demi grand axe
e_4 = #excentricité sans unité
T_4 = #période de révolution en jours terrestres
#####################################################################################
#####################################################################################
#les variables de position sont définies comme des listes
#dans le référentiel héliocentrique
X_T_helio = []
Y_T_helio = []
X_M_helio = []
Y_M_helio = []
#dans le référentiel géocentrique
X_M_geo = []
Y_M_geo = []
X_S_geo = []
Y_S_geo = []
n_3 = math.floor(T_3/Delta_t)
while i <= Suivi*n_3:
#positions successives de la Terre et de Mars dans le référentiel héliocentrique
x_t_i = -a_3*e_3+a_3*math.cos(2*math.pi*Delta_t*i/T_3)
y_t_i = a_3*math.sqrt(1-e_3*e_3)*math.sin(2*math.pi*Delta_t*i/T_3)
x_m_i = -a_4*e_4+a_4*math.cos(2*math.pi*Delta_t*i/T_4+math.pi/4)
y_m_i = a_4*math.sqrt(1-e_4*e_4)*math.sin(2*math.pi*Delta_t*i/T_4+math.pi/4)
#définir les coordonnées de Mars dans le référentiel géocentrique
xm=x_m_i - x_t_i
ym=y_m_i - y_t_i
xs=x_t_i
ys=y_t_i
#ajouter les positions calculées aux listes qui les contiennent toutes
X_T_helio.append(x_t_i)
Y_T_helio.append(y_t_i)
X_M_helio.append(x_m_i)
Y_M_helio.append(y_m_i)
X_M_geo.append(xm)
Y_M_geo.append(ym)
X_S_geo.append(xs)
Y_S_geo.append(ys)
i += 1
#Tracés des positions de Mars et du Soleil dans le référentiel géocentrique
plt.annotate('Terre', xy=(0,0))
for j in range(Suivi*n_3):
plt.title("Mouvements de Mars et du Soleil dans le référentiel géocentrique")
plt.xlim(-5e11, 5e11)
plt.ylim(-5e11, 5e11)
plt.scatter(X_M_geo[j], Y_M_geo[j],s=5, c='red', label="Mars")
plt.scatter(X_S_geo[j], Y_S_geo[j],s=5, c='yellow', label="Soleil")
plt.scatter(0, 0,s=5, c="blue",label='Terre')
plt.pause(0.05)
plt.grid(True)
plt.axis('equal')
plt.annotate(' Mars', xy=(X_M_geo[0], Y_M_geo[0]))
plt.annotate(' Soleil', xy=(X_S_geo[0], Y_S_geo[0]))
plt.show()
plt.close()