You are on page 1of 7

#Example 2.

6
#Kepler Equations

import numpy as np

e=0.72
M=4. * (np.pi/180.) #converting degrees into radians

def KeplerEquation(f,df,E0=M,itr=1.):

En=np.zeros(itr,dtype=float)
En[0]=E0

#Iteration steps using Newton-Ralphson Method


for x in range(1,itr):
En[x]=En[x-1] - f(En[x-1])/df(En[x-1])

return En

def f(E):
return E-e*np.sin(E)-M

def df(E):
return 1-e*np.cos(E)

print KeplerEquation(f,df,M,10)

Output
[ 0.06981317 0.24807038 0.24319413 0.2431872 0.2431872 0.2431872
0.2431872 0.2431872 0.2431872 0.2431872 ]

Comment: E0=M converted to radians. We can see that En is converging to


0.2431872.
There will be some difference between manual calculations and computed ones due
to approximation errors.

#Example 4.2

m0=35000.
emr=28. #ejecting mass rate
exv=3000. #exhaust velocity
T=60.
bom=T*emr #burnout mass
m=m0-bom #mass after burn
delta_v=exv*np.log(m0/m)

print delta_v

Output:
147.570732572

#Example 4.3

Fth=1000000.
emr= 400
g0=9.80665
Isp=Fth/(g0*emr)

print Isp

Output:
254.929053244

#Problem 6.1 5. Hohmann Orbit


Import numpy as np
mu=1.
ri=1.031357
rf=7.584995

vi=(mu/ri)**0.5

print 'vi',vi
vf=(mu/rf)**0.5
print 'vf',vf
atrans=(ri+rf)/2.
print 'atrans',atrans
vtrans_a=((((2*mu)/ri)-(mu/atrans)))**0.5
print 'vtrans_a',vtrans_a
vtrans_b=((((2*mu)/rf)-(mu/atrans)))**0.5
print 'vtrans_b',vtrans_b
delta_va=vtrans_a-vi
delta_vb=vf-vtrans_b

delta_v=delta_va+delta_vb
print 'delta_v',delta_v
t_flight=np.pi*((atrans**2)/mu)**0.5
print 't_flight',t_flight

Output:
vi 0.984680845111
vf 0.363096740742
atrans 4.308176
vtrans_a 1.3065511623
vtrans_b 0.177656107499
delta_v 0.507310950434
t_flight 13.534534072

#Problem 6.2 Hohmann Orbit


Import numpy as np
print "problem 6.2"
mu=1.
ri=1.03
rf=60.
r_arb=80. #arbitrary

atrans1=(ri+r_arb)/2.
print 'atrans1',atrans1

atrans2=(rf+r_arb)/2.
print 'atrans2',atrans2

delta_v=abs(((2*mu/ri)-mu/atrans1)**.5 - (mu/ri)**.5)+abs(((2*mu/r_arb)-
mu/atrans2)**.5 - ((2*mu/r_arb)-mu/atrans1)**.5)+abs((mu/rf)**.5-((2*mu/rf)-
mu/atrans2)**.5 )
print 'delta_v',delta_v
t_flight=np.pi*(((atrans1**2)/mu)**0.5)+np.pi*(((atrans2**2)/mu)**0.5)
print 't_flight',t_flight

Output:
atrans1 40.515
atrans2 70.0
delta_v 0.49384903138
t_flight 347.193112111

#Problem 6.3 Transfer using one tangent burn


Import numpy as np
print "problem 6.3"
mu=1.
ri=1.03
rf=6.61
atrans=(ri+rf)/2.
print "atrans",atrans

R_inv= ri/rf #1/R


print "1/R",R_inv
vtrans_b=160 #degrees

etrans= (R_inv -1)/(np.cos(np.radians(vtrans_b))-R_inv)


print "etrans",etrans

atrans=ri/(1-etrans)
print "atrans",atrans
vi=(mu/ri)**.5
vf=(mu/rf)**.5
vtrans_a=((2*mu/ri)-(mu/atrans))**.5
print "vtrans_a",vtrans_a

vtrans_b=((2*mu/rf)-(mu/atrans))**.5
print "vtrans_b",vtrans_b

delta_va=vtrans_a-vi
print "delta_va",delta_va

Output:
problem 6.3
atrans 3.82
1/R 0.155824508321
etrans 0.77057260836
atrans 4.4894377809
vtrans_a 1.31110736875
vtrans_b 0.282536405425
delta_va 0.325778090585

#Problem 4.21
print "Problem 4.21"
E=(6378.14+600)*1000. #m
theta=8 #degrees
GM=3.986005e14

vi=(GM/E)**0.5
print "vi",vi
delta_v=2*vi*np.sin(np.radians(theta)/2.)
print "delta_v",delta_v

Output:
Problem 4.21
vi 7557.86413368
delta_v 1054.41990201

#Problem 7.1
print "Problem 7.1"

a=(6378.14+400)*1000. #m
A=8 #sq. m
m=1000 #kg
cd=2.67
GM=3.986005e14
rho=2.62e-12
H=58.2 #km
V=(GM/a)**0.5

print "V",V

delta_arev=(-2. * np.pi * cd * A * rho * (a**2))/m

print "delta_arev",delta_arev

delta_Prev=(-6. * (np.pi**2) * cd * A * rho * (a**2))/(m*V)

print "delta_Prev",delta_Prev

delta_Vrev=(np.pi * cd * A * rho * a * V)/m

print "delta_Vrev",delta_Vrev

L=-H/delta_arev

print "L",L
Output:
Problem 7.1
V 7668.5570382
delta_arev -16.1548703741
delta_Prev -0.019854591353
delta_Vrev 0.00913853541742
L 3.60262872139

#Problem 4.16
print "Problem 4.16"

i=51.6 #degrees
n=15.5 #revolutions/day

Omega_moon=-0.00338*np.cos(np.radians(i))/n
print "Omega_moon",Omega_moon

Omega_sun=-0.00154*np.cos(np.radians(i))/n
print "Omega_sun",Omega_sun

omega_moon=0.00169 * (4.-5*(np.sin(np.radians(i))**2.))/n
print "omega_moon",omega_moon

omega_sun=0.00077 * (4.-5*(np.sin(np.radians(i))**2.))/n
print "omega_sun",omega_sun

Output
Problem 4.16
Omega_moon -0.000135450290151
Omega_sun -6.17140375244e-05
omega_moon 0.000101304359599
omega_sun 4.61564241959e-05

#Problem 4.17

print "Problem 4.17"

a=7500 #km
i=28.5 #degrees
e=0.1

Omega_J2=-2.06474e14*(a**-3.5)*np.cos(np.radians(i))*((1-e**2)**-2)
print "Omega_J2",Omega_J2

omega_J2=1.03237e14*(a**-3.5)*(4-(5*np.sin(np.radians(i))**2))*((1-e**2)**-2)
print "omega_J2",omega_J2

Output:
Problem 4.17
Omega_J2 -5.06732857211
omega_J2 8.25009834713

You might also like