I have two position vectors for my satellite, and I know that the satellite reaches these two positions 15 minutes apart.

I know I can find the inclination using linear algebra and my position vectors, but is there a way to figure out the rest of the orbital elements from this information?

The positions are X,Y,Z coordinates in the Earth-centered inertial (ECI) frame.

  • $\begingroup$ I'm not sure if I understood. Is the brief a) that the satellite is believed to have manoeuvred between the two points, i.e. they are different orbits (which appears to be Xavi's interpretation), or is it b) that these are two positions for the satellite at different points in a (nominally) unchanging orbit or c) either, as its not specified? $\endgroup$
    – Puffin
    Oct 12, 2018 at 13:17
  • $\begingroup$ My Interpretation was that no maneuver occurred, i.e. points 1 and 2 are points of the same orbit (your “b”, not “a”). Since no restriction is set to the velocities there are virtually infinite orbits that connect these points (with no maneuver), but only two of them will have the indicated $\Delta t$ $\endgroup$
    – Xavi
    Oct 12, 2018 at 14:01

1 Answer 1


If you have no other infomration about the orbit of your satellite (e.g. the orbit is circular), I believe you have to solve this problem with the Lambert's theorem assuming an elliptic transfer orbit (see Wikipedia). However, as far as I know there is no analytical solution and either numerical methods or series expansions need to be used.

In this answer I will try to introduce some aspects about this problem and give you some hints about how to approach it.

As stated by the theorem, given a gravitational parameter $\mu=GM$, the time $\Delta t$ required to perform a given transfer is a function of

  • the semimajor axis $a$ of the orbit,
  • the sum of $|\vec{r_1}| + |\vec{r_2}|$, and
  • the length $c$ of the chord that connects the two positions (see figure below).


This can be expressed as: $$\sqrt{\mu} \Delta t = f(a,r_1+r_2,c)$$

In your case, you know $\Delta t$ but you need to find $a$. You will see that there are actually two different values of semimajor axis that bring you from one position to the other in a certain $\Delta t$ (see figure below).

Figure and text from [Bate1971].

While both solutions are correct and physically possible, since you are describing an orbit around Earth you might be able to select your desired solution (e.g. the direction of motion only matches one of the solutions, and in an extreme case of a HEO one of the solutions will collide with the Earth surface).

As I introduced before, as far as I know no analytical solution exists to solve this problem. Some proposed numerical methods/series expansions include:

  • Lagrange-Battin (1977)
  • Gauss-Battin (1971)
  • Battin (Elegant Algorithm) (1984) (here)

amongst others. A review of the Lambert's problem is made by D. de la Torre Sangrà and E. Fantino here (and here).

A generic Lambert solution procedure could be:

  1. Compute the geometrical parameters of the transfer

  2. Obtain an initial guess for the free parameter

  3. Iterate on the transfer time equation until convergence

  4. Compute the orbital elements

In [Bate1971] (Chapter 5) a more detailed explanation of the problem is given together with proposed methods/algorithms to solve the Lambert's problem.

I hope it helps!

[Bate1971] Donald D. Mueller, Jerry White, and Roger R. Bate, Fundamentals of Astrodynamics, 1971

  • 1
    $\begingroup$ Great answer! I added a 2nd link to one of the references because links can break over time and it's a great paper. Do you know if it was ever published somewhere from where it could be cited? $\endgroup$
    – uhoh
    Oct 10, 2018 at 1:06
  • 2
    $\begingroup$ Shameless plug: you can compute the solution of the Lambert problem in Python using poliastro docs.poliastro.space/en/latest/… $\endgroup$ Oct 10, 2018 at 5:19
  • 1
    $\begingroup$ This is a fantastic answer! As a note, CSPICE has a function that does this: naif.jpl.nasa.gov/pub/naif/toolkit_docs/C/cspice/oscltx_c.html (but it requires instantaneous velocity, not two positions), and I'm guessing they use Lambert's Theorem. $\endgroup$
    – user7073
    Oct 10, 2018 at 17:27
  • $\begingroup$ @barrycarter that function essentially converts from cartesian to classical Keplerian elements, it does not need to solve the Lambert problem. $\endgroup$ Oct 14, 2018 at 16:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.