Code covered by the BSD License

### Highlights from Solve Lambert's Problem in Two-Body Dynamics

Be the first to rate this file! 15 Downloads (last 30 days) File Size: 1.92 KB File ID: #44789

# Solve Lambert's Problem in Two-Body Dynamics

24 Dec 2013 (Updated )

Solve Lambert's problem in two-body dynamics using universal variables

File Information
Description

Solve the boundary value problem in two-body dynamics (known as Lambert's problem) using the universal variable formulation as presented in Bate, Mueller, and White. The function has been tested for elliptic, parabolic, and hyperbolic orbits.

The function does not currently handle the case where the secondary completes multiple revolutions about the central body within the specified time.

Inputs:
<mu>: Standard gravitational parameter of central body
<t1>,<r1>: Time scalar and column position vector for initial position in orbit
<t2>,<r2>: Time scalar and column position vector for final position in orbit
<path>: If equal to 1, solve for the long path (delta_nu >= pi), else for the short path (delta_nu < pi)

Outputs:
<v1>,<v2>: Velocity vectors at initial and final times
<iter>: Number of iterations needed for convergence

Example:

mu = 398600.44; % Earth [km^3/s^2]
T1 = [0 0];
T2 = [600 600];
R1 = [-1.4619E3 2.4442E3 6.5242E3; % Initial positions of 2 different earth satellites
-3.7511E3 1.6838E4 2.0927E1]';
R2 = [-1.0435E3 5.8479E3 3.7741E3; % Final positions
-5.2268E3 1.8596E4 2.2488E3]';

for (i = 1:size(R1, 2))
% Short path. Gives elliptic orbit.
[v1,v2,iter] = lambert_universal(mu, T1(:,i), R1(:,i), T2(:,i), R2(:,i), 0);
% Long path. Gives hyperbolic orbit.
[v1,v2,iter] = lambert_universal(mu, T1(:,i), R1(:,i), T2(:,i), R2(:,i), 1);
end

MATLAB release MATLAB 8.1 (R2013a)