The Gravity Perturbed Hohmann Transfer
The Gravity Perturbed Hohmann Transfer
The Gravity Perturbed Hohmann Transfer
This document is the user’s manual for a MATLAB script named phohmann which can be used to solve
the gravity perturbed Hohmann transfer between coplanar and non-coplanar circular Earth orbits. The
algorithm starts with a two-body Hohmann transfer initial guess and then uses the SNOPT nonlinear
programming (NLP) method to determine the optimum two impulse orbit transfer subject to non-
spherical Earth gravity perturbations. Appendix A summarizes the governing equations for the two-
body Hohmann transfer. It also includes information about the MATLAB implementation used to solve
this classic astrodynamics problem. This script is valid for “exterior” Hohmann transfers from a lower
altitude circular orbit to a higher altitude circular orbit.
The phohmann script uses modified equinoctial orbital elements to solve the gravity perturbed orbit
transfer “targeting” problem. Additional information about these orbital elements can be found in
Appendix B. That appendix also explains how to use components and combinations of these non-
singular elements to calculate a variety of final orbital element targets or boundary conditions.
MATLAB versions of SNOPT for several computer platforms can be found at Professor Philip Gill’s
web site which is located at http://scicomp.ucsd.edu/~peg/. Professor Gill’s web site also includes a
PDF version of the SNOPT software user’s guide. A brief introduction to nonlinear programming can
be found in Appendix C.
The phohmann MATLAB script will interactively prompt the user for the name of the simulation
definition input data file. This prompt is similar to the following;
The file type defaults to names with a *.in filename extension. However, you can select any
phohmann compatible ASCII data file by selecting the Files of type: field or by typing the name of the
file directly in the File name: field.
page 1
Orbital Mechanics with MATLAB
The phohmann software is “data-driven” by a user-created text file. This text file should be simple
ASCII format with no special characters.
The following is a typical input file used by this MATLAB script. In the following discussion the actual
input file contents are in courier font and all explanations are in times italic font. This example is a
Hohmann transfer from a low Earth orbit (LEO) to a geosynchronous orbit (GSO). In this data file, user
provided inputs are in bold font.
Each data item within an input file is preceded by one or more lines of annotation text. Do not delete
any of these annotation lines or increase or decrease the number of lines reserved for each comment.
However, you may change them to reflect your own explanation. The annotation line also includes the
correct units and when appropriate, the valid range of the input. ASCII text input is not case sensitive
but must be spelled correctly.
The first five lines of any input file are reserved for user comments. These lines are ignored by the
software. However the input file must begin with five and only five initial text lines.
********************************************
* input data file for phohmann MATLAB script
* impulsive LEO-to-GSO orbital transfer
* filename ==> leo2gso.in
********************************************
The first inputs to the program define the initial UTC calendar date and time for the simulation. The
data for the calendar year should include all four digits. The calendar date and time are required in
order to correctly calculate the tesseral or longitude-dependent components of the Earth’s gravity.
initial UTC
(0 <= hours <= 24, 0 <= minutes <= 60, 0 <= seconds <= 60)
----------------------------------------------------------
20, 18, 33.0
The next three inputs are the altitude, orbital inclination and right ascension of the ascending node
(RAAN) of the initial circular orbit.
*************
initial orbit
*************
right ascension of the ascending node (degrees; 0 <= raan <= 360)
-----------------------------------------------------------------
100.0
page 2
Orbital Mechanics with MATLAB
The next two inputs are the altitude and orbital inclination of the final circular orbit.
***********
final orbit
***********
The Earth gravitational constant and radius are user-defined by the next two inputs.
****************************************
astrodynamic constants and gravity model
****************************************
Finally, the name of the Earth gravity model to use in the simulation and the order and degree of this
model are set by the following three inputs.
name of Earth gravity model data file
-------------------------------------
egm96.dat
The following is the phohmann solution for this example. The first part of the display is the two-body
Hohmann transfer solution. The second section summarizes the SNOPT iterations and summary. The
final section is the perturbed Hohmann transfer solution found during the optimization.
two-body Hohmann transfer solution
page 3
Orbital Mechanics with MATLAB
second inclination change 26.3355 degrees
orbital elements and state vector of the transfer orbit after the first impulse
-------------------------------------------------------------------------------
orbital elements and state vector of the transfer orbit prior to second impulse
-------------------------------------------------------------------------------
orbital elements and state vector of the transfer orbit after the initial delta-v
---------------------------------------------------------------------------------
orbital elements and state vector of the transfer orbit prior to the final delta-v
----------------------------------------------------------------------------------
page 6
Orbital Mechanics with MATLAB
initial delta-v vector, magnitude and steering angles
-----------------------------------------------------
The following is a brief summary of the information provided by this MATLAB script.
arglat (deg) = argument of latitude in degrees. The argument of latitude is the sum of
true anomaly and argument of perigee.
page 7
Orbital Mechanics with MATLAB
vmag (km/sec) = scalar magnitude of the velocity vector in kilometers per second
x-component of delta-v = ECI x-component of the impulsive delta-v maneuver in meters per second
y-component of delta-v = ECI y-component of the impulsive delta-v maneuver in meters per second
z-component of delta-v = ECI z-component of the impulsive delta-v maneuver in meters per second
delta-v magnitude = scalar magnitude of the impulsive delta-v maneuver in meters per second
transfer time = time interval between the two impulsive maneuvers in seconds, minutes and hours
Additional information about the data displayed by the optimization algorithm can be found in the
SNOPT user’s manual which is available at Professor Gill’s website which is located at
http://scicomp.ucsd.edu/~peg/.
The pitch and yaw angles for each impulsive maneuver are computed and displayed in a local-vertical-
local horizontal coordinate system. The following diagram illustrates the geometry of the pitch and yaw
angles in this system. In this figure, the radial direction is along the geocentric radius vector directed
away from the Earth, the tangential direction is tangent to the orbit in the direction of the orbital motion,
and the normal direction is along the angular momentum vector of the orbit. The pitch angle is positive
above the local horizontal plane formed by the tangential and normal directions, and the yaw angle is
positive in the direction of the angular momentum vector which is perpendicular to the orbit plane.
uR
pitch
= yaw
uT
uN
The phohmann script will also create a graphics display of the initial, transfer and final orbits. The
following is the graphics display for this example. The initial orbit trace is red, the transfer orbit is blue
and the final mission orbit is green. The dimensions are Earth radii (ER) and the plot is labeled with an
ECI coordinate system where green is the x-axis, red is the y-axis and blue is the z-axis. The location of
each impulse is marked with a small blue circle.
page 8
Orbital Mechanics with MATLAB
Trajectory image files are saved to disk in both encapsulated, color Postscript format and MATLAB fig
format. The disk file names are phohmann1.eps and phohmann1.fig. The interactive features of
MATLAB graphics allow the user to re-load and manipulate the fig version of the trajectory display.
These capabilities allow the user to interactively find the best viewpoint as well as verify basic three-
dimensional geometry of the orbital maneuver.
Technical discussion
In this MATLAB script, the orbital motion is modeled with respect to a true-of-date Earth-centered-
inertial (ECI) coordinate system. The origin of this system is the center of the Earth and the
fundamental plane is the Earth’s equator. The x-axis is aligned with the true-of-date Vernal Equinox,
the z-axis is aligned with the Earth’s spin axis, and the y-axis completes this orthogonal, right-handed
coordinate system.
This MATLAB script uses a spherical harmonic representation of the Earth’s geopotential function
given by
0R 0 n R m
n n
where is the geocentric latitude, is the geocentric east longitude and r r x 2 y 2 z 2 is the
geocentric distance. In this expression the S’s and C’s are unnormalized harmonic coefficients of the
geopotential, and the P’s are associated Legendre polynomials of degree n and order m with argument
u sin .
The software calculates the acceleration due to the Earth’s gravity field with a vector equation derived
from the gradient of the potential function expressed as
a g r, t r, t
page 9
Orbital Mechanics with MATLAB
This acceleration vector is a combination of pure two-body or point mass gravity acceleration and the
gravitational acceleration due to higher order non-spherical terms in the Earth’s geopotential. In terms
of the Earth’s geopotential , the inertial rectangular cartesian components of the spacecraft’s
acceleration vector are as follows
1 x2 y2
z z
r r r 2
The three partial derivatives of the geopotential with respect to r, , are given by
1 N R
n
r r r n 2 r m 0
N R
n n
r n2 r
C
m 0
m
n cos m Snm sin m Pnm1 sin m tan Pnm sin
N R
n n
r n2 r
mS
m 0
m
n cos m Cnm sin m Pnm sin
where
R radius of the Earth
r geocentric distance
Snm , Cnm harmonic coefficients
geocentric latitude sin 1 z r
longitude g
right ascension tan 1 ry rx
g right ascension of Greenwich
Right ascension is measured positive east of the vernal equinox, longitude is measured positive east of
Greenwich, and latitude is positive above the Earth’s equator and negative below.
For m 0 , the coefficients are called zonal terms, when m n the coefficients are sectorial terms, and
for n m 0 the coefficients are called tesseral terms.
The Legendre polynomials with argument sin are computed using recursion relationships given by:
page 10
Orbital Mechanics with MATLAB
1
Pn0 sin 2n 1 sin Pn01 sin n 1 Pn02 sin
n
Pnn sin 2n 1 cos Pnn11 sin , m 0, m n
and Pi j 0 for j i .
The following are the first 14 lines of the 18 by 18 egm96.dat gravity model file included with this
script. Column 1 is the degree l, column 2 is the order m, column 3 is the C coefficients and the last
column contains the S gravity model coefficients.
2 0 -1.08262668355E-003 0.00000000000E+000
3 0 2.53265648533E-006 0.00000000000E+000
4 0 1.61962159137E-006 0.00000000000E+000
5 0 2.27296082869E-007 0.00000000000E+000
6 0 -5.40681239107E-007 0.00000000000E+000
7 0 3.52359908418E-007 0.00000000000E+000
8 0 2.04799466985E-007 0.00000000000E+000
9 0 1.20616967365E-007 0.00000000000E+000
10 0 2.41145438626E-007 0.00000000000E+000
11 0 -2.44402148325E-007 0.00000000000E+000
12 0 1.88626318279E-007 0.00000000000E+000
13 0 2.19788001661E-007 0.00000000000E+000
14 0 -1.30744533118E-007 0.00000000000E+000
Gravity model coefficients are often published in normalized form. The relationship between
normalized Cl ,m , Sl ,m and un-normalized gravity coefficients Cl ,m , Sl ,m is given by the following
expression:
l m ! Cl ,m
12
Cl ,m 1
Sl ,m 2 m 0 2l 1 l m ! Sl ,m
page 11
Orbital Mechanics with MATLAB
The following is the MATLAB source code for the function that opens and reads a gravity model file
(fname) and creates matrices of the un-normalized coefficients.
% input
% output
% column 1 is the degree, column 2 is the order, column 3 are the C coefficients
% and the last column contains the S gravity model coefficients. For example,
% 2 0 -1.08262668355E-003 0.00000000000E+000
% 3 0 2.53265648533E-006 0.00000000000E+000
% 4 0 1.61962159137E-006 0.00000000000E+000
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
gdata = dlmread(fname);
% initialize coefficients
idim = gdata(nrows, 1) + 1;
for n = 1:nrows
i = gdata(n, 1);
j = gdata(n, 2);
end
As mentioned earlier, the trajectory optimization uses the two-body Hohmann transfer solution for the
initial guess. For this problem, the components of the initial and final impulsive delta-v vector are
control variables. The transfer time from the initial to the final impulse is also an “indirect” or implicit
control variable as will be explained later. The objective or cost function for this problem is the sum of
the scalar magnitude of the two impulses given by
page 12
Orbital Mechanics with MATLAB
f vi v f
The SNOPT algorithm requires initial guesses (xg) for the six components of the delta-v vectors as well
as lower (xlwr) and upper (xupr) bounds on each component. It also requires lower (flow) and upper
(fupp) bounds on the objective function and any linear or nonlinear constraints.
The following is the MATLAB source code that sets up this information.
xg = xg';
% define lower and upper bounds for components of delta-v vectors (kilometers/second)
dvm = norm(xg(1:3));
for i = 1:1:3
end
dvm = norm(xg(4:6));
for i = 4:1:6
end
xlwr = xlwr';
xupr = xupr';
flow(1) = 0.0d0;
fupp(1) = +Inf;
flow(2) = 0.0d0;
fupp(2) = 0.0d0;
page 13
Orbital Mechanics with MATLAB
flow(3) = 0.0d0;
fupp(3) = 0.0d0;
flow(4) = 0.0d0;
fupp(4) = 0.0d0;
flow(5) = 0.0d0;
fupp(5) = 0.0d0;
flow(6) = 0.0d0;
fupp(6) = 0.0d0;
end
flow = flow';
fupp = fupp';
snspec('snopt_specs.txt');
snscreen on;
[x, f, inform, xmul, fmul] = snopt(xg, xlwr, xupr, flow, fupp, 'tpbvp');
The tpbvp MATLAB function defines the current value of the objective function and the mission
constraints. The function that evaluates the Earth gravity model and the first order equations of motion
is called ceqm1. Here’s the source code for this function.
% input
% output
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ydot = [ y(4)
y(5)
page 14
Orbital Mechanics with MATLAB
y(6)
agrav(1)
agrav(2)
agrav(3)];
Notice that the main script will read a SNOPT “specs” file named snopt_specs.txt which has the
following contents.
Additional information about this special file can be found in the SNOPT documentation.
The tpbvp objective function starts with the two-body solution for the position and velocity vectors of
the maneuver on the initial orbit and the current value for the delta-v vector and numerically integrates
the first-order form of the orbital equations to the descending node. At the descending node the software
adds the current value of the second delta-v vector to the velocity vector of the transfer orbit to
determine the velocity vector on the final mission orbit.
The position vector at the descending node and the resultant velocity vector are used to compute the
current modified equinoctial orbital elements of the final mission orbit.
The following is the MATLAB source code within the tpbvp function that uses the “event finding”
feature of the built-in ode45 algorithm to predict the descending node conditions. The bound for the
search time (tend) is 102% of the two-body Hohmann transfer time.
rwrk = xi(1:3);
vwrk = xi(4:6);
[t, ysol, tevent, yevent, ie] = ode45(@ceqm1, [0 tend], [rwrk vwrk], options);
The following is the MATLAB source code for descending node objective function nc_event. The
computed value is simply the current z-component of the unit position vector.
% required by phohmann.m
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
isterminal = 1;
direction = -1;
Note that setting direction = -1 ensures a descending node crossing since we want to search for
values of the z-component of position that are decreasing. This implementation essentially treats the
coast time between the maneuvers as an “indirect” or implicit control variable.
This section summarizes the technique used to compute and enforce the nonlinear constraints that define
the final mission orbit. Since the final orbit of the Hohmann transfer is circular, we enforce the
following three modified equinoctial element nonlinear constraints
pt p p 0 ft f p 0 gt g p 0
In these three equations, the t subscript implies “target” or desired values and the p subscript implies
values “predicted” by the optimization process. The targeted values are computed using the position and
velocity vectors of the mission orbit determined during the two-body Hohmann transfer solution.
If the final mission orbit is equatorial (inclination = 0), we want to enforce the following two constraints.
ht hp 0 kt k p 0
If the orbital inclination of the final mission orbit is non-zero, we enforce the following single nonlinear
mission constraint.
ht2 kt2 hp2 k p2 0
Here’s the MATLAB source code that evaluates this constraint.
% equatorial orbit (h = k = 0)
f(5) = mee_final(4);
page 16
Orbital Mechanics with MATLAB
f(6) = mee_final(5);
else
end
Note that we are not enforcing the right ascension of the ascending node (RAAN) or the true anomaly of
the final mission orbit.
Additional information about targeting with the modified equinoctial orbital elements can be found in
Appendix B.
Algorithm resources
(1) Walter Hohmann, Die Erreichbarkeit der Himmelskorper, Oldenbourgh, Munich, 1925. Also, The
Attainability of Heavenly Bodies, NASA Technical Translation F-44, 1960.
(4) R. H. Battin, An Introduction to the Mathematics and Methods of Astrodynamics, AIAA, 1987.
(5) D. F. Lawden, Optimal Trajectories for Space Navigation, Butterworths, London, 1963.
(6) John E. Prussing, “Simple Proof of the Global Optimality of the Hohmann Transfer”, AIAA Journal
of Guidance, Control and Dynamics, Vol. 15, No. 4.
(7) A. Miele, M. Ciarcia, and J. Mathwig, “Reflections on the Hohmann Transfer”, Journal of
Optimization Theory and Applications, Vol. 123, No. 2, pp. 233-253, November 2004.
page 17
Orbital Mechanics with MATLAB
Appendix A
Two-body Hohmann Transfer
The coplanar circular orbit-to-circular orbit transfer was discovered by the German engineer Walter
Hohmann in 1925 and described in his classic report, The Attainability of Celestial Bodies. The transfer
consists of a velocity impulse on an initial circular orbit, in the direction of motion and collinear with the
velocity vector, which propels the space vehicle into an elliptical transfer orbit. At a transfer angle of
180 degrees from the first impulse, a second velocity impulse or V , also collinear and in the direction
of motion, places the vehicle into a final circular orbit at the desired final altitude. The impulsive V
assumption means that the velocity, but not the position, of the vehicle is changed instantaneously. This
is equivalent to a rocket engine with infinite thrust magnitude. Therefore, the Hohmann formulation is
the ideal and minimum energy solution to this type of orbit transfer problem.
Coplanar Equations
For the coplanar Hohmann transfer both velocity impulses are confined to the orbital planes of the initial
and final orbits. For a Hohmann transfer from a lower altitude orbit to a higher altitude circular orbit,
the first impulse creates an elliptical transfer orbit with a perigee altitude equal to the altitude of the
initial circular orbit and an apogee altitude equal to the altitude of the final orbit. The second impulse
circularizes the transfer orbit at apogee. Both impulses are posigrade which means that they are in the
direction of orbital motion.
rf ri ri
R1 2 R2 R3 2
ri rf rf ri rf
where ri is the geocentric radius of the initial circular park orbit and rf is the radius of the final circular
mission orbit. The relationship between radius and initial orbit altitude hi and the final orbit altitude h f
is as follows:
ri re hi
rf re h f
where re is the radius of the Earth.
and is simply the difference between the speed on the initial orbit and the perigee speed of the transfer
orbit. The scalar magnitude of the second impulse is
which is the difference between the speed on the final orbit and the apogee speed of the transfer ellipse.
page 18
Orbital Mechanics with MATLAB
In each of these V equations Vlc is called the local circular velocity. It can be determined from
Vlc ri .
and represents the scalar speed in the initial orbit. In these equations is the gravitational constant of
the central body. The transfer time from the first impulse to the second is equal to one half the orbital
period of the transfer ellipse
a3
where a is the semimajor axis of the transfer orbit and is equal to ri rf / 2 . The orbital eccentricity of
the transfer ellipse is
max ri , rf min ri , rf
e
rf ri
The following diagram illustrates the geometry of the coplanar Hohmann transfer.
transfer orbit
V1
ri
rf
initial orbit
V2
final orbit
Non-coplanar Equations
The non-coplanar Hohmann transfer involves orbital transfer between two circular orbits which have
different orbital inclinations. For this problem the propulsive energy is minimized if we optimally
partition the total orbital inclination change between the first and second impulses.
where 1 is the plane change associated with the first impulse. The magnitude of the second impulse is
page 19
Orbital Mechanics with MATLAB
where 2 is the plane change associated with the second impulse. These two equations are different
forms of the law of cosines.
The total V required for the maneuver is the sum of the two impulses as follows
V V1 V2
t 1 2
where t is the total plane change angle between the initial and final orbits.
Optimizing the non-coplanar Hohmann transfer involves allocating the total plane change angle between
the two maneuvers such that the total V required for the mission is minimized. We can determine this
answer by solving for the root of a derivative.
The partial derivative of the total V with respect to the first plane change angle is given by:
If we determine the value of 1 which makes this derivative zero, we have found the optimum plane
change required at the first impulse. Once 1 is calculated we can determine 2 from the total plane
change angle relationship and the velocity impulses from the previous equations.
Numerical Solution
This numerical algorithm has been implemented in an interactive MATLAB script called hohmann.m.
This script prompts the user for the initial and final altitudes in kilometers and the initial and final orbital
inclinations in degrees. The software then calls the Brent root-finding algorithm to solve the partial
derivative equation described above.
where hohmfunc is the objective function for this problem. Since we know that the optimum first plane
change angle is somewhere between 0 and the total plane change angle dinc, we pass these as the
bounds of the root. In the parameter list rtol is the user-defined root-finding convergence tolerance.
The following discussion pertains to a typical orbit transfer from a low altitude Earth orbit (LEO) at an
altitude of 185.2 kilometers and an orbital inclination of 28.5 degrees to a geosynchronous Earth orbit
(GSO) at an altitude of 35786.36 kilometers and 0 degrees inclination.
page 20
Orbital Mechanics with MATLAB
The following is a V diagram for the first maneuver of this orbit transfer example. In this view we are
looking along the line of nodes which is the mutual intersection of the park and transfer orbit planes with
the equatorial plane.
V
Vi
Vp
26.3o
28.5o
equator
In this diagram Vi is the speed on the initial park orbit, V p is the perigee speed of the elliptic transfer
orbit, and V is the impulse required for the first maneuver. The inclinations of the park and transfer
orbit are also labeled. From this geometry and the law of cosines, the required V is given by
where i is the inclination difference or plane change between the park and transfer orbits.
Algorithm resources
(1) Walter Hohmann, Die Erreichbarkeit der Himmelskorper, Oldenbourgh, Munich, 1925. Also, The
Attainability of Heavenly Bodies, NASA Technical Translation F-44, 1960.
(2) John E. Prussing, “Simple Proof of the Global Optimality of the Hohmann Transfer”, AIAA Journal
of Guidance, Control and Dynamics, Vol. 15, No. 4.
(3) A. Miele, M. Ciarcia, and J. Mathwig, “Reflections on the Hohmann Transfer”, Journal of
Optimization Theory and Applications, Vol. 123, No. 2, pp. 233-253, November 2004.
page 21
Orbital Mechanics with MATLAB
Appendix B
Targeting with Modified Equinoctial Orbital Elements
The modified equinoctial orbital elements are a set of orbital elements that are useful for trajectory
analysis and optimization. They are valid for circular, elliptic, and hyperbolic orbits. These direct
modified equinoctial equations exhibit no singularity for zero eccentricity and orbital inclinations equal
to 0 and 90 degrees. However, please note that two of the components are singular for an orbital
inclination of 180 degrees.
The classic reference for these elements is “A Set of Modified Equinoctial Orbital Elements”, M. J. H.
Walker, B. Ireland and J. Owens, Celestial Mechanics, Vol. 36, pp. 409-419, 1985.
The modified equinoctial elements are defined in terms of the classical orbital elements as follows:
p a 1 e 2
f e cos
g e sin
h tan i 2 cos
k tan i 2 sin
L
where
p semiparameter
a semimajor axis
e orbital eccentricity
i orbital inclination
argument of perigee
right ascension of the ascending node
true anomaly
L true longitude
The classical orbital elements can be recovered from the modified equinoctial orbital elements with
semimajor axis
p
a
1 f 2 g2
orbital eccentricity
e f 2 g2
page 22
Orbital Mechanics with MATLAB
orbital inclination
i 2 tan 1 h2 k 2
argument of periapsis
tan 1 g, f tan 1 k , h
gh f k
sin
e tan i 2
f h gk
cos
e tan i 2
tan 1 k , h
k
sin
tan i 2
h
cos
tan i 2
true anomaly
L L tan 1 g , f
1
sin f sin L g cos L
e
1
cos f cos L g sin L
e
In these expressions, an inverse tangent expression of the form tan 1 a, b denotes a four quadrant
evaluation where a sin and b cos .
Constraint formulations that enforce both the sine and cosine of a desired orbital element should be used
whenever possible. This approach involves a combination of equality and inequality constraints and
ensures that the “targeted” orbital element is in the correct quadrant.
To illustrate this technique, here are several examples for different values of argument of perigee and the
corresponding mission constraints:
page 23
Orbital Mechanics with MATLAB
sin 0 gh f k 0
0 90
f h g k e tan i 2 cos
sin 0 gh f k 0
270
cos 0 f h gk 0
g h f k e tan i 2 sin
178
cos 0 f h gk 0
The following is a sign table of the sine and cosine for each quadrant.
e f 2 g2
i
tan h 2 k 2
2
gh f k
g h f k e sin tan i 2 sin
e tan i 2
f h gk
f h g k e cos tan i 2 cos
e tan i 2
k
k tan i 2 sin sin
tan i 2
page 24
Orbital Mechanics with MATLAB
h
h tan i 2 cos cos
tan i 2
L L tan 1 g , f
In general,
1
sin f sin L g cos L
e
1
cos f cos L g sin L
e
Algorithm resources
“On the Equinoctial Orbital Elements”, R. A. Brouke and P. J. Cefola, Celestial Mechanics, Vol. 5, pp.
303-310, 1972.
“A Set of Modified Equinoctial Orbital Elements”, M. J. H. Walker, B. Ireland and J. Owens, Celestial
Mechanics, Vol. 36, pp. 409-419, 1985.
“Equinoctial Orbit Elements: Application to Optimal Transfer Problems”, Jean A. Kechichian, AIAA
90-2976, AIAA/AAS Astrodynamics Conference, Portland, OR, August 20-22, 1990.
page 25
Orbital Mechanics with MATLAB
Appendix C
Nonlinear Programming Problem
y t
z
u t
consisting of the state variables y and the control variables u for any time t. In this discussion vectors
are denoted in bold font.
The system dynamics are defined by a vector system of ordinary differential equations called the state
equations that can be represented as follows
dy
y f y t , u t , p, t
dt
The initial dynamic variables at time t0 are defined by ψ0 ψ y t0 , u t0 , t0 and the terminal
conditions at the final time t f are defined by ψ f ψ y t f , u t f , t f . These conditions are called the
boundary values of the trajectory problem.
For any mission time t there are also simple bounds on the state variables
yl y t yu
the control variables
ul u t u u
pl p t pu
The basic nonlinear programming problem (NLP) involves the determination of the control vector
history and problem parameters that minimize the scalar performance index or objective function given
by
J y t0 , t0 , y t f , t f , p
page 26
Orbital Mechanics with MATLAB
Algorithm resources
(1) “Direct Trajectory Optimization Using Nonlinear Programming and Collocation”, C. R. Hargraves
and S. W. Paris, AIAA Journal of Guidance, Control and Dynamics, Vol. 10, No. 4, July-August, 1987,
pp. 338-342.
(2) “Optimal Finite-Thrust Spacecraft Trajectories Using Direct Transcription and Nonlinear
Programming”, Paul J. Enright, Ph.D. Thesis, University of Illinois at Urbana-Champaign, 1991.
(3) “Using Sparse Nonlinear Programming to Compute Low Thrust Orbit Transfers”, John T. Betts, The
Journal of the Astronautical Sciences, Vol. 41, No. 3, July-September 1993, pp. 349-371.
(4) “Improved Collocation Methods with Application to Direct Trajectory Optimization”, Albert L.
Herman, Ph.D. Thesis, University of Illinois at Urbana-Champaign, 1995.
(5) “Survey of Numerical Methods for Trajectory Optimization”, John T. Betts, AIAA Journal of
Guidance, Control and Dynamics, Vol. 21, No. 2, March-April 1998, pp. 193-207.
(6) Practical Optimization, Philip E. Gill, Walter Murray and Margaret H. Wright, Emerald Group
Publishing Limited, 1982.
page 27