Circularisation d'une orbite elliptique

In [1]:
#display latex
In [2]:
G=6.67e-11    #constante de graviation (unite SI)
M_T=5.97e24   # masse de la Terre (kg)
rmax=(6.37e6+35.8e6) #rayon de l'orbite ciculaire que l'on cherche à atteindre
R_T=6.37e6     #rayon de la Terre
In [3]:
vl=sqrt(2*G*M_T/rmax)   #correspond à la vitesse de libération pour l'altitude 35800 km

Vitesse à l'apogée en fonction de l'altitude au périgée (en km)

In [4]:
f(x)=vl*sqrt((1e3*x+R_T)/(1e3*x+R_T+rmax));f   # x correspond à l'altitude en km
Out[4]:
x |--> 137424.219745409*sqrt(-(-1.00000000000000*x - 6370.00000000000)/(1000.00000000000*x + 4.85400000000000e7))
In [5]:
plot(f,x,2e2,36e3,gridlines='minors',xmin=0,axes_labels=[r"$h_P\ (km)$",r"$v_A\ (m.s^{-1})$"])
Out[5]:

Calcul de $\Delta v$

In [6]:
f(200)            #vitesse initiale à l'apogée 
Out[6]:
1595.52348908777
In [7]:
f(35800)          #vitesse finale sur l'orbite circulaire
Out[7]:
3072.89897105604
In [8]:
DeltaV=(f(35800)-f(200))/10    #on suppose qu'on procède en 10 étapes

Calcul de l'altitude au périgé en fonction de $i$

In [9]:
g(x)=(rmax*((f(200)+x*DeltaV)^2/(vl^2-(f(200)+x*DeltaV)^2))-R_T) #altitude du perige en m
gkm(x)=(rmax*((f(200)+x*DeltaV)^2/(vl^2-(f(200)+x*DeltaV)^2))-R_T)/1e3 #altitude du perige en km
In [10]:
plot(gkm,0,10,gridlines='minors',axes_labels=["$i$","$h_P$"])
Out[10]:

On définit $hp$ une liste des altitudes successives au périgée (en km)

In [11]:
hp=[]
for i in [1..10]:
    hp.append(gkm(i))
In [12]:
hp
Out[12]:
[1717.16433275580,
 3479.71926184094,
 5530.17176532865,
 7923.11035900987,
 10729.5885750664,
 14043.6006970539,
 17991.9094319403,
 22749.4347299916,
 28564.2511965715,
 35800.0000000000]

On trace les trajectoires correspondantes, à l'aide de l'expression

$$r=\frac{2r_{\text{min}}r_{\text{max}}}{r_{\text{max}}+r_{\text{min}}+(r_{\text{max}}-r_{\text{min}})\cos\theta}$$
In [13]:
graph=Graphics()
var('theta')
for i in range(11):
    graph+=polar_plot((2*(g(i)+R_T)*rmax)/((rmax+g(i)+R_T)+(rmax-g(i)-R_T)*cos(theta)),
                     (theta,0,2*pi),color=hue(0.1*i))
show(graph)

On peut ajouter la Terre.

In [14]:
graph+= circle((0,0), R_T,fill=True)
graph+=text("$A$", (-4.5e7,0), fontsize=16,color='black')
In [15]:
show(graph)
In [16]:
graph.save('circularisation_d_orbite.pdf')  #sauvegarde le schéma 

Calcul de la durée de transfert

In [17]:
t=[2*n(pi)*(((rmax+g(i)+R_T)/2)^(3/2)/sqrt(G*M_T)) for i in [1..10]]
In [18]:
t
Out[18]:
[39662.6532697254,
 41767.3381580540,
 44261.0198041492,
 47231.5273420810,
 50796.3680405347,
 55115.7360727213,
 60412.9125414695,
 67007.3663794635,
 75370.6530257920,
 86225.3939681933]
In [19]:
T=0
for i in range(9):
    T+=t[i]        # on somme les durées de parcours des 9 orbites intermédiaires
In [20]:
T
Out[20]:
481625.574633990
In [21]:
T/(3600*24)
Out[21]:
5.57437007678230
In [ ]: