poliastro.core.iod
¶
Module Contents¶
Functions¶
|
Solves the Lambert's problem. |
|
Aplies izzo algorithm to solve Lambert's problem. |
- poliastro.core.iod.vallado(k, r0, r, tof, short, numiter, rtol)¶
Solves the Lambert’s problem.
The algorithm returns the initial velocity vector and the final one, these are computed by the following expresions:
\[\begin{split}\vec{v_{o}} &= \frac{1}{g}(\vec{r} - f\vec{r_{0}}) \\ \vec{v} &= \frac{1}{g}(\dot{g}\vec{r} - \vec{r_{0}})\end{split}\]Therefore, the lagrange coefficients need to be computed. For the case of Lamber’s problem, they can be expressed by terms of the initial and final vector:
\[\begin{split}\begin{align} f = 1 -\frac{y}{r_{o}} \\ g = A\sqrt{\frac{y}{\mu}} \\ \dot{g} = 1 - \frac{y}{r} \\ \end{align}\end{split}\]Where y(z) is a function that depends on the
poliastro.core.stumpff
coefficients:\[\begin{split}y = r_{o} + r + A\frac{zS(z)-1}{\sqrt{C(z)}} \\ A = \sin{(\Delta \nu)}\sqrt{\frac{rr_{o}}{1 - \cos{(\Delta \nu)}}}\end{split}\]The value of z to evaluate the stump functions is solved by applying a Numerical method to the following equation:
\[z_{i+1} = z_{i} - \frac{F(z_{i})}{F{}'(z_{i})}\]Function F(z) to the expression:
\[F(z) = \left [\frac{y(z)}{C(z)} \right ]^{\frac{3}{2}}S(z) + A\sqrt{y(z)} - \sqrt{\mu}\Delta t\]- Parameters
- Returns
v0 (~np.array) – Initial velocity vector
v (~np.array) – Final velocity vector
Examples
>>> from poliastro.core.iod import vallado >>> from astropy import units as u >>> import numpy as np >>> from poliastro.bodies import Earth >>> k = Earth.k.to(u.km ** 3 / u.s ** 2) >>> r1 = np.array([5000, 10000, 2100]) * u.km # Initial position vector >>> r2 = np.array([-14600, 2500, 7000]) * u.km # Final position vector >>> tof = 3600 * u.s # Time of flight >>> v1, v2 = vallado(k.value, r1.value, r2.value, tof.value, short=True, numiter=35, rtol=1e-8) >>> v1 = v1 * u.km / u.s >>> v2 = v2 * u.km / u.s >>> print(v1, v2) [-5.99249503 1.92536671 3.24563805] km / s [-3.31245851 -4.19661901 -0.38528906] km / s
Note
This procedure can be found in section 5.3 of Curtis, with all the theoretical description of the problem. Analytical example can be found in the same book under name Example 5.2.
- poliastro.core.iod.izzo(k, r1, r2, tof, M, numiter, rtol)¶
Aplies izzo algorithm to solve Lambert’s problem.
- Parameters
- Returns
v1 (~numpy.array) – Initial velocity vector
v2 (~numpy.array) – Final velocity vector