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.
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]\)