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...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83 #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...
Partager