jorgepiloto / lamberthub

A set of Lambert's problem solvers
GNU General Public License v3.0
47 stars 5 forks source link

Implement thorne2004 #32

Open jorgepiloto opened 3 years ago

jorgepiloto commented 3 years ago

đź’» Solver request: thorne2004

The algorithm devised by James D. Thorne uses a series expansion to solve for the Lambert's problem. These approach breaks all the common steps for a Lambert's solver, meaning that it does not require an initial guess nor a numerical root finder. Different series are provided for different orbit types

đź“ť References

@article{thorne2004lambert,
  title={Lambert’s theorem—a complete series solution},
  author={Thorne, James D},
  journal={The Journal of the Astronautical Sciences},
  volume={52},
  number={4},
  pages={441--454},
  year={2004},
  publisher={Springer}
}

Vallado provides a pseudo-code in his "Fundamentals of Astrodynamics and Applications".

jorgepiloto commented 3 years ago

I did not noticed but having a solver which does not require an iterative process breaks the current set of common arguments used by the different solvers. This is translated into not having as parameters the absolute tolerance atol, relative one rtol or the maximum number of iterations maxiter!

jorgepiloto commented 3 years ago

In addition, the original routine developed by Thorne was published in "SERIES REVERSION/INVERSION OF LAMBERT'S TIME FUNCTION" who's DOI is https://doi.org/10.2514/6.1990-2886.

jorgepiloto commented 3 years ago

This article by Sharaf can be useful for computing the rest of the orbital parameters apart from the semi-major axis. A conversion to RV set will be required.

jorgepiloto commented 3 years ago

The mathematical symbols (Z)_i are the so-called "Pochhamer symbols". Hopefully, SciPy implements those under the poch function 🎉

jorgepiloto commented 3 years ago

My local solution properly computes the A_array, Q_matrix upper triangular and B_array. However, the series seems to be strongly dependent on the number of coefficients and even to diverge at some cases. In fact, Thorne published this paper about the series convergence.

jorgepiloto commented 3 years ago

I was not able to identify why the current implementation in #33 does not converge. Sadly, this will not be included in 0.2.