Compute Jacobian through finite difference calculation
Parameters:
fun (function handle) – A (non-linear) transition function
Must be of the form “y = fun(x)”, where y can be a scalar or numpy.ndarray of shape (Nd, 1) or (Nd,)
x (State) – A state with state vector of shape (Ns, 1)
Approximate a given distribution to a Gaussian, using a
deterministically selected set of sigma points.
Parameters:
state (State) – A state object capable of returning a StateVector of
shape (Ns, 1) representing the Gaussian mean and a
CovarianceMatrix of shape (Ns, Ns) which is the
covariance of the distribution
alpha (float, optional) – Spread of the sigma points. Typically 1e-3.
(default is 1)
beta (float, optional) – Used to incorporate prior knowledge of the distribution
2 is optimal if the state is normally distributed.
(default is 2)
kappa (float, optional) – Secondary spread scaling parameter
(default is calculated as 3-Ns)
Returns:
list of length 2*Ns+1 – An list of States containing the locations of the sigma points.
Note that only the state_vector attribute in these
States will be meaningful. Other quantities, like covar
will be inherited from the input and don’t really make sense
for a sigma point.
numpy.ndarray of shape (2*Ns+1,) – An array containing the sigma point mean weights
numpy.ndarray of shape (2*Ns+1,) – An array containing the sigma point covariance weights
Apply the Unscented Transform to a set of sigma points
Apply f to points (with secondary argument points_noise, if available),
then approximate the resulting mean and covariance. If sigma_noise is
available, treat it as additional variance due to additive noise.
Parameters:
sigma_points (StateVectors of shape (Ns, 2*Ns+1)) – An array containing the locations of the sigma points
mean_weights (numpy.ndarray of shape (2*Ns+1,)) – An array containing the sigma point mean weights
covar_weights (numpy.ndarray of shape (2*Ns+1,)) – An array containing the sigma point covariance weights
fun (function handle) – A (non-linear) transition function
Must be of the form “y = fun(x,w)”, where y can be a scalar or numpy.ndarray of shape (Ns, 1) or (Ns,)
covar_noise (CovarianceMatrix of shape (Ns, Ns), optional) – Additive noise covariance matrix
(default is None)
points_noise (numpy.ndarray of shape (Ns, 2*Ns+1,), optional) – points to pass into f’s second argument
(default is None)
theta (Union[float, np.ndarray]) – Rotation angle specified as a real-valued number or an np.ndarray of reals. The rotation angle is positive if the rotation is in the clockwise direction when viewed by an observer looking down the x-axis towards the origin. Angle units are in radians.
theta (Union[float, np.ndarray]) – Rotation angle specified as a real-valued number or an np.ndarray of reals. The rotation angle is positive if the rotation is in the clockwise direction when viewed by an observer looking down the y-axis towards the origin. Angle units are in radians.
theta (Union[float, np.ndarray]) – Rotation angle specified as a real-valued number or an np.ndarray of reals. The rotation angle is positive if the rotation is in the clockwise direction when viewed by an observer looking down the z-axis towards the origin. Angle units are in radians.
means (StateVector, StateVectors, np.ndarray of shape (num_dims, num_components)) – The means of GM components
covars (np.ndarray of shape (num_components, num_dims, num_dims) or list of np.ndarray of shape (num_dims, num_dims)) – Covariance matrices of the GM components
Calculate the universal anomaly via Newton’s method. Algorithm 3.3 in [1].
Parameters:
o_state_vector (StateVector, StateVectors) – The orbital state vector formed as
\([r_x, r_y, r_z, \dot{r}_x, \dot{r}_y, \dot{r}_z]^T\)
delta_t (timedelta) – The time interval over which to estimate the universal anomaly
grav_parameter (float, optional) – The universal gravitational parameter. Defaults to that of the
Earth, \(3.986004418 \times 10^{14} \ \mathrm{m}^{3} \
\mathrm{s}^{-2}\)
precision (float, optional) – For Newton’s method, the difference between new and old estimates of the universal anomaly
below which the iteration stops and the answer is returned, (default = 1e-8)
max_iterations (float, optional) – Maximum number of iterations allowed in while loop (default = 1e5)
Calculate the Lagrangian coefficients, f and g, and their time derivatives, by way of the
universal anomaly and the Stumpff functions [2].
Parameters:
o_state_vector (StateVector, StateVectors) – The (Cartesian) orbital state vector,
\([r_x, r_y, r_z, \dot{r}_x, \dot{r}_y, \dot{r}_z]^T\)
delta_t (timedelta) – The time interval over which to calculate
grav_parameter (float, optional) – The universal gravitational parameter. Defaults to that of the
Earth, \(3.986004418 \times 10^{14} \ \mathrm{m}^{3} \
\mathrm{s}^{-2}\). Note that the units of time must be seconds.
precision (float, optional) – Precision to which to calculate the universalanomaly() (default = 1e-8). See the doc
section for that function
max_iterations (float, optional) – Maximum number of iterations in determining universal anomaly (default = 1e5)
Returns:
The Lagrange coefficients, \(f, g, \dot{f}, \dot{g}\), in that order.
\[\begin{split}X = [e, a, i, \Omega, \omega, \theta]^{T} \\\end{split}\]
where:
\(e\) is the orbital eccentricity (unitless),
\(a\) the semi-major axis (m),
\(i\) the inclination (rad),
\(\Omega\) is the longitude of the ascending node (rad),
\(\omega\) the argument of periapsis (rad), and
\(\theta\) the true anomaly (rad)
grav_parameter (float, optional) – Standard gravitational parameter \(\mu = G M\). The default is \(3.986004418
\times 10^{14} \mathrm{m}^3 \mathrm{s}^{-2}\)
Returns:
Orbital state vector as \([r_x, r_y, r_z, \dot{r}_x, \dot{r}_y, \dot{r}_z]\)
This function performs linear interpolation on a StateMutableSequence. The function
has two slightly different forms:
If an individual datetime is inputted for the variable times then a
State is returned corresponding to times.
If a list of datetime is inputted for the variable times then a
StateMutableSequence is returned with the states in the sequence corresponding to
times.
Note
This function does not extrapolate. Times outside the range of the time range of sms
are discarded and warning is given. If all times values are outside the time range of
sms then an IndexError is raised.
Unique states for each time are required for interpolation. If there are multiple states with
the same time in sms the later state in the sequence is used.
For Track inputs the metadatas is removed as it can’t be interpolated.