Par défaut Mouvement rétrograde de Mars (python)

Fermé
Aspirant_Physicien Messages postés 1 Date d'inscription dimanche 6 février 2022 Statut Membre Dernière intervention 6 février 2022 - Modifié le 6 févr. 2022 à 09:35
yg_be Messages postés 23397 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 décembre 2024 - 6 févr. 2022 à 13:32
bonsoir à tous!

j'ai un devoir à rendre pour demain et cela concerne le mouvement rétrograde de Mars.
Avec un fichier DataMars.csv qui contient les coordonnées (longitude et latitude) de la position de Mars par rapport au centre de la Terre en fonction de la date entre 2015 et 2017. Notons que la latitude est définie ici par rapport au plan de l'écliptique.
Le centre de la boucle peut s'observer à la date du 25 mai 2016, à la longitude de 240.5°.
ils nous demandent ensuite d'utiliser un modèle bidimensionnel du mouvement de la Terre et de Mars autour du Soleil. On considérera le mouvement des deux planètes comme circulaire uniforme et contenu dans le plan de l'écliptique. Ce modèle nous permettra de calculer la longitude de Mars vue depuis la Terre (i.e. l'angle phi dans le réferentiel géocentrique) en fonction du temps.

Donc avec le fichier csv j'ai créé un data frame puis en ai extrait la colonne contenant seulement les dates du 01 janvier 2016 au 1er novembre 2016 que j'ai affectée à un tableau qui s'appelle dates et j'ai fait la même chose avec la colonne contenant la longitude que j'ai affectée à un tableau xAstro, j'ai plot les deux et j'obtiens une belle courbe avec le mouvement rétrograde de Mars, t en abscisses et la longitude en ordonnées.
Maintenant mon problème c'est que je n'arrive pas à reproduire la même courbe pendant le même intervalle de temps avec seulement les équations du mouvement circulaire uniforme et la définition du phi apparent. Je sais que je dois le plot en fonction du temps mais je ne sais pas trop comment m'y prendre...
j'ai créé un tableau t allant de 0s à 26374118.4s le nombre de secondes entre le 1er janvier 2016 et le 1er novembre 2016 et je ne sais pas comment me servir du phi...

je vous montre mon code, si quelqu'un pouvait m'aider...
#Importation de nos divers modules
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import math as mt
from math import cos
from math import sin
from math import atan2
from math import pi
from datetime import datetime
import time

"""
2016-04-18 le début de la boucle, longitude décroit
2016-05-25 centre de la boucle, planètes alignées
2016-07-02 fin de la boucle, longitude croît
"""

"ouverture du fichier .csv et création du panda dataframe"
données_astronomiques=pd.read_csv('DataMars.csv') #, comment='#')

#print('ndim :', données_astronomiques.ndim)
#print('shape :', données_astronomiques.shape)
#print('size :', dates.size)
#print(type(dates))#nous indique de quel type il est
#Affichage des n premières lignes
#print(dates.head(0,)) 
#print(données_astronomiques.shape)#taille de notre panda dataframe
#print(données_astronomiques.columns)#nous affiche les noms des colonnes
#print(données_astronomiques.loc[306:610,'Date'])#selection des éléments à partir du 1er janvier 2016 jusqu'au 1er Novembre 2016 pour bien visualiser le mouvement rétrograde


"Données astronomiques"

# Colonne Date du csv dans un tableau tAstro
#tAstro=données_astronomiques.loc[306:610,'Date']#attribution de l'intervalle de temps à une nouvelle variable plus simple à manipuler dans le code python
dates=données_astronomiques['Date']
#tAstro_calendrier=np.linspace('2016-01', '2016-11', dtype='datetime64[Y]')#création tableau avec tous les jours du mois de janvier jusqu'à novembre

# Colonne Longitude du csv dans un tableau xAstro
#xAstro=données_astronomiques.loc[306:610,'Longitude']#attribution de l'intervalle longitudinal où se produit le mouvement rétrograde
#plt.plot(tAstro,xAstro,'r-',linewidth=3,label = 'data')
#plt.ylim(200,300)
#plt.ylabel('Longitude [°]')
#plt.xlabel('date')
#plt.margins(0,0)
#plt.show()

"Modèle du mouvement circulaire uniforme de la Terre et de Mars dans le référentiel héliocentrique"

# Données de l'énoncé
rayon_orbitalTerre=1.496e11 #m (1*UA)
rayon_orbitalMars=2.279438e11 #m(1.52371*UA)
Trevolution_Terre=31558118.4 #s(60*60*24*365.256)
Trevolution_Mars= 59346864 #s(60*60*24*686.885)

t0=0 ; tf=26374118.4 ; pas=86400 ; intervalle = tf - t0
num_points = int(intervalle / pas) + 1 # nombre d'éléments
t = np.linspace(t0, tf, num_points)

#t_modèle=26373254400 #s (nombre de secondes du 2016/01/01 au 2016/11/01)

# Vitesses angulaires de le Terre et de Mars
wTerre=2*np.pi/Trevolution_Terre #rad/s
wMars=2*np.pi/Trevolution_Mars #rad/s
phi_0x=2*np.pi
phi_0y=np.pi

# Coordonnées de la Terre dans le référentiel héliocentrique
xTerre=rayon_orbitalTerre*np.cos(wTerre*t +phi_0x)
yTerre=rayon_orbitalTerre*np.sin(wMars*t +phi_0y)

# Coordonnées de Mars dans le référentiel héliocentrique
xMars=rayon_orbitalMars*np.cos(wTerre*t +phi_0x)
yMars=rayon_orbitalMars*np.sin(wMars*t +phi_0y)


# Expression de phi_apparent 
phi_apparent=atan2((yMars-yTerre),(xMars-xTerre))
#plt.plot(t, phi_apparent, label = 'model')

print(type(phi_apparent))
print(type(t))


Donc avec les données expérimentales j'arrive bien à afficher la courbe rouge mais je n'arrive pas à ploter la bleue...

A voir également:

3 réponses

Utilisateur anonyme
6 févr. 2022 à 09:37
Bonjour
En Python, l’indentation est primordiale, or par défaut le site ne la conserve pas.
Pour la conserver il faut utiliser les balises de code. Voir ce petit tuto https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
J’ai donc édité ton message pour les ajouter.


0
yg_be Messages postés 23397 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 décembre 2024 Ambassadeur 1 556
6 févr. 2022 à 13:08
bonjour,
si je comprends bien, tu n'as pas commencé à travailler sur le modèle, qui est le but de l'exercice.
tu as simplement fait un graphe avec les données présentes dans le fichier.
ai-je bien compris?
0
yg_be Messages postés 23397 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 décembre 2024 Ambassadeur 1 556
6 févr. 2022 à 13:32
As-tu un message d'erreur?
Je me demande pourquoi tu utilises les fonctions trigonométriques de numpy jusqu'à la ligne 79, puis que tu utilises tout-à-coup autre chose en ligne 79.
Tu as aussi un paquet d'import inutiles, cela ne peut que t'embrouiller.
0