adam_core.orbit_determination.least_squares module¶
- class adam_core.orbit_determination.least_squares.LeastSquares(use_central_difference: bool)[source]¶
Bases:
ABCEXPERIMENTAL! Orbit refinement using least squares differential correction
In general, assume we are only fitting ra and dec in the observations. Some methods may work for other observation sets as well.
- least_squares(initial_orbit: FittedOrbits | Orbits, observations: OrbitDeterminationObservations, prop: Propagator, perturbation_initial_fraction: float = 1e-06, perturbation_multiplier: float = 0.5, rms_epsilon: float = 0.001, max_iterations: float = 20, debug_info: Dict[str, Any] | None = None) Orbits | None[source]¶
Run least squares to refine the initial orbit. Assumes observations and ephemeris are in Spherical coordinates and only have RA and DEC, and we have only one orbit. Follows Vallado.
Parameters:¶
- initial_orbit: FittedOrbits | Orbits (length 1)
the initial orbit to refine
- observations: OrbitDeterminationObservations (length N)
observations to use for refinement, use RA and DEC only
- prop: Propagator
propagator to use for ephemerides of perturbed orbits
- perturbation_initial_fraction: float, default 1e-6,
initial fraction of parameter value to use for perturbation when computing partial derivatives
- perturbation_multiplier: float, default 0.5,
multiplier of the perturbation fraction when RMS change overshoots
- rms_epsilon: float, default 1e-3
limit for relative change of RMS between iteration to declare convergence
- max_iterations: float, default 20
maximum number of iterations before giving up
- debug_info: Dict[str, Any] | None
if provided, this dictionary is populated with debug information
Returns:¶
Improved orbit (length 1) or None, if no improvement was found.