Introduction

The Modified Chebyshev-Picard Iteration (MCPI) method is used to solve both linear and nonlinear, high precision, long-term orbit propagation problems through iteratively finding an orthogonal function approximation for the entire state trajectory. At each iteration, MCPI finds an entire path integral solution (over a large finite interval, converges over intervals up to three orbits), as opposed to the conventional, incremental step-by-step solution strategy of more familiar numerical integration strategies, i.e., those based on explicit numerical methods. While very long path segments are convergent, computationally optimal path segments are typically a large fraction of an orbit. A major advantage of the MCPI approach is that the use of cosine sampling reduces the well-known Runge Effect, whereby the largest errors are encountered near the boundary of piecewise approximation segments [1]. This algorithm has recently proven to be a powerful tool for solving nonlinear differential equations for both initial value problems (IVP) and boundary value problems (BVP) [15]. Comparisons with traditional step-by-step methods [6, 7] have shown that MCPI is more efficient for a prescribed solution accuracy. Significantly, however, unlike conventional integration approaches, it is ideally suited for massive parallel implementations that provide further boosts in the computational performance. Algorithm tests are currently under development for massive parallel implementations, where the performance results will be presented in future papers.

Here we consider the MCPI method to compute the State Transition Matrix (STM) for the case of perturbed motion, which has applications in many areas including celestial mechanics and control systems. Propagation of the STM is useful in determining the sensitivity of the IVP solution to the initial conditions; for instance, the STM predicts how deviations from the desired initial conditions will cause the trajectory of a spacecraft to stray from a nominal path. The STM may be used to approximate the time evolution of a state vector even for highly nonlinear systems, such as the two-body problem perturbed by an arbitrary degree spherical harmonic gravity. In cases where the initial deviation is small at time t 0, a linear approximation may be used to determine the locally linear state deviation at time t. This linear approximation is generated using the STM, a matrix of partial derivatives for the instantaneous position and velocity with respect to the initial position and velocity; this means that the STM is initially equal to the identity matrix [8, 9]. These deviations can be approximated, to a problem-dependent accuracy, by using the unperturbed Keplerian STM; however, it is desirable to be able to include a prescribed number of the high order harmonics, and in general, other perturbations. The present paper provides an efficient algorithm to include these higher order gravitational perturbations, as desired/required in the STM.

The present computation of the STM for the spherical harmonic gravity model requires second partials of the gravity potential with respect to spherical geocentric coordinates: radius, latitude, and longitude. These required partial derivatives include second partials of the normalized, Associated Legendre Functions (ALFs), and these functions (used often in science and engineering applications) are related to the Legendre polynomials. A full description and derivation are given in Appendix B, and the equations that require the ALfs are given in the section “State Transition Matrix Using Spherical Harmonic Gravity.” The normalized version of the ALFs is the preferred formulation for the associated recursion used to compute these functions. Without the normalization, the ALFs tend toward weak numerical instability as a higher degree and order gravity model is used. Once the normalized ALFs are computed, the gravity and associated derivatives are computed in part by introducing the appropriate scale factor to generate the un-normalized version of the ALFs. Since a spherical harmonic model is used and this gravity potential is a rigorous solution of the Laplace equation, the ALFs’ second partial expression for an arbitrary order spherical harmonic series is verified using the Laplace equation. Both the trajectory and the STM are computed in a rotating, Earth-centered, Earth-fixed frame, which is transformed into an Earth-centered inertial frame (for subsequent integration) at each iteration. The rotating ECEF frame is used to avoid the explicit time dependence of the potential and the associated Jacobi integral (which is also a constant Hamiltonian for the perturbed motion). Though enforcement of the differential equation is inherent in the present study, we also check to confirm that the STM accurately satisfies (with maximum relative errors of < 10−14 in a Matlab implementation and up to one orbit, for the most precise tuning) the theoretical STM group properties as well as the STM symplectic property associated with natural conservative dynamical systems [8]. The present development of the STM is also verified using finite difference methods.

Modified Chebyshev Picard Iteration

MCPI is a fusion of Picard iteration with approximation via orthogonal Chebyshev polynomials. A few papers were published on the topic prior to the development of parallel computing capabilities [1012], but it was not until recent years that this literature was significantly expanded by the research group (Junkins, et al.) at Texas A&M University. MCPI is an iterative, path approximation method for solving smoothly nonlinear systems of ordinary differential equations. The entire state trajectory over a long time arc is approximated at every iteration until a specified tolerance is met [2]. Emile Picard stated that, given an initial condition x(t 0) = x 0, any first order differential equation [1]

$$ \frac{d\boldsymbol{x}(t)}{dt}=\boldsymbol{f}(t,\boldsymbol{x}(t)), \quad t \epsilon[a,b] $$
(1)

with an integrable right hand side may be rearranged without approximation into an integral:

$$ \boldsymbol{x}(t) = \boldsymbol{x}(t_{0})+\int\limits_{t_{0}}^{t}\boldsymbol{f}(\tau,\boldsymbol{x}(\tau))d\tau $$
(2)

Then, given a suitable starting approximation x 0(t), a unique solution to the initial value problem may be found using an iterative sequence of path approximations through Picard iteration as

$$ \boldsymbol{x}^{i}(t) = \boldsymbol{x}(t_{0})+\int\limits_{t_{0}}^{t} \boldsymbol{f}\left( \tau,\boldsymbol{x}^{i-1}(\tau) \right)d\tau, \quad i=1,2, \ldots $$
(3)

where the integrand of the Picard iteration sequence is approximated using Chebyshev polynomials. For further details on the basics of this novel integration technique and its convergence properties, refer to References [1] and [2]. Since the Chebyshev polynomials are orthogonal, a matrix inverse is avoided when finding basis function coefficients. Because cosine sampling is employed for MCPI, the Runge Effect seen at trajectory boundaries is significantly reduced. Also, initial efforts to implement MCPI using parallel computation have shown additional speedup [13, 14].

The present study considers the gravity-perturbed acceleration \(\boldsymbol {\ddot {r}}=\boldsymbol {g}(t, \boldsymbol {r})\), which may be represented in state space notation for the MCPI algorithm as

$$ x=\left( {\begin{array}{c}\boldsymbol{r}\\ \boldsymbol{\dot{r}} \end{array} } \right)\quad ,\quad\left( {\begin{array}{c}\boldsymbol{\dot{x}}_{\mathbf{1}}\\ \boldsymbol{\dot{x}}_{\mathbf{2}} \end{array} } \right) = \boldsymbol{f}(t,\boldsymbol{x}) = \left( {\begin{array}{c} \boldsymbol{x}_{\mathbf{2}}\\ \boldsymbol{g}(t,\boldsymbol{x}_{\mathbf{1}}) \end{array} } \right) $$
(4)

Basic Equations for State Transition Matrix

The differential equation we wish to integrate for the STM is [8]

$$\begin{array}{@{}rcl@{}} \dot{\Phi}\left( t,t_{0}\right)&=&A{\Phi}\left( t,t_{0} \right) \end{array} $$
(5)
$$\begin{array}{@{}rcl@{}} A\left( t \right)&=&\left[ {\begin{array}{cc}0_{n\times n} & I_{n\times n}\\ G_{n\times n} & 0_{n\times n} \end{array} } \right]\triangleq\left[ \frac{\partial \boldsymbol{f}}{\partial \boldsymbol{x}} \right]=\left[ {\begin{array}{cc} \frac{\partial \boldsymbol{x}_{\mathbf{2}}}{\partial \boldsymbol{x}_{\mathbf{1}}} & \frac{\partial \boldsymbol{x}_{\mathbf{2}}}{\partial \boldsymbol{x}_{\mathbf{2}}}\\ \frac{\partial \boldsymbol{g}}{\partial \boldsymbol{x}_{\mathbf{1}}} & \frac{\partial \boldsymbol{g}}{\partial \boldsymbol{x}_{\mathbf{2}}} \end{array} } \right] \end{array} $$
(6)

where

$$ G_{n\times n}=\left[ \frac{\partial \boldsymbol{g}(t,r)}{\partial \boldsymbol{r}} \right] $$
(7)

The STM is computed as partials of the linear approximation of the instantaneous departure X(t) from the state vector x(t). For the present work, the state consists of position and velocity for an Earth-orbiting satellite:

$$ {\Phi}\left( t,t_{0} \right) = \frac{\partial X(t)}{\partial X(t_{0})} $$
(8)

Then we can write the G matrix in terms of the partials of the generally perturbed gravitational acceleration case; for example the partial of the first component of acceleration with respect to the first component in a body-fixed frame is written with respect to geocentric radius, latitude, and longitude:

$$ \frac{\partial a_{x}}{\partial x}=\frac{\partial a_{x}}{\partial r}\frac{\partial r}{\partial x}+\frac{\partial a_{x}}{\partial \phi }\frac{\partial \phi }{\partial x}+\frac{\partial a_{x}}{\partial \lambda}\frac{\partial \lambda}{\partial x} $$
(9)

Many of the intermediate partials are computed once and re-used as they appear elsewhere. The individual components of the matrix G are written explicitly as follows in the next section.

State Transition Matrix Using Spherical Harmonic Gravity

A spherical harmonic gravity model is used for this development. The Jacobian of the acceleration, needed for Eq. 6, is computed in the body frame but transformed into the inertial frame prior to each integration step; this method is presented in the following section. The full gravitational potential function is defined as [15]

$$\begin{array}{@{}rcl@{}} U(r,\phi, \lambda )&=&\frac{\mu }{r}\left[ 1+{\sum}_{n=2}^{\infty} {\sum}_{m=0}^{n} \left( \frac{Re}{r}\right)^{n} P_{nm}\left( \sin \phi \right)\left[ C_{nm}\cos \left( m\lambda \right)\right.\right.\\ &&\qquad\times \left.\left.+S_{nm}\sin \left( m\lambda\right) \right] \right] \end{array} $$
(10)

where r is the radial distance to the object, ϕ is the geocentric latitude of the object, λ is the longitude of the object, Re is the magnitude of Earth’s equatorial radius, and P n m are the Associated Legendre Functions. The spherical harmonic acceleration due to gravity in a body-fixed reference frame may then be represented as

$$ \boldsymbol{a}_{g}=\frac{\partial U}{\partial r}\left( \frac{\partial r}{\partial \boldsymbol{r}}\right)^{T} +\frac{\partial U}{\partial \phi }\left( \frac{\partial \phi }{\partial \boldsymbol{r}} \right)^{T}+\frac{\partial U}{\partial \lambda }\left( \frac{\partial \lambda }{\partial \boldsymbol{r}} \right)^{T} $$
(11)

The expressions comprising the acceleration function are written explicitly as

$$ {\begin{array}{ll} \frac{\partial U}{\partial r}&=U_{r}\\ &=-\frac{\mu }{r^{2}}\left\{1+{\sum}_{n=2}^{\infty} {\sum}_{m=0}^{n} \left( n+1 \right)\left( \frac{Re}{r} \right)^{2}P_{nm}\left( \sin \phi \right)\left[ C_{nm}\cos \left( m\lambda \right)\right.\right.\\ &\qquad\qquad\left.\left.+S_{nm}\sin \left( m\lambda \right) \right] {\vphantom{1+{\sum}_{n=2}^{\infty}}}\right\} \end{array}} $$
(12)
$$ \frac{\partial U}{\partial \phi }=U_{\phi }=\frac{\mu }{r}{\sum}_{n=2}^{\infty} {\sum}_{m=0}^{n} \left( \frac{Re}{r} \right)^{n}\frac{\partial P_{nm}\left( \sin \phi \right)}{\partial \phi }\left[ C_{nm}\cos {\left( m\lambda \right)+}S_{nm}\sin \left( m\lambda \right) \right] $$
(13)
$$ \frac{\partial U}{\partial \lambda }=U_{\lambda }=\frac{\mu }{r}{\sum}_{n=2}^{\infty} {\sum}_{m=0}^{n} \left( \frac{Re}{r} \right)^{n}P_{nm}\left( \sin \phi \right)m\left[ S_{nm}\cos {\left( m\lambda \right)-}C_{nm}\sin \left( m\lambda \right) \right] $$
(14)

Next we find expressions needed to compute the Jacobian of the acceleration in Eq. 7. The individual components of the gravity perturbed acceleration in the Earth-centered inertial frame are

$$\begin{array}{@{}rcl@{}} a_{X}&=&\frac{\partial U}{\partial r}\left( \frac{\partial r}{\partial x} \right)+\frac{\partial U}{\partial \phi }\left( \frac{\partial \phi }{\partial x} \right)+\frac{\partial U}{\partial \lambda }\left( \frac{\partial \lambda }{\partial x} \right) \end{array} $$
(15)
$$\begin{array}{@{}rcl@{}} a_{Y}&=&\frac{\partial U}{\partial r}\left( \frac{\partial r}{\partial y} \right)+\frac{\partial U}{\partial \phi }\left( \frac{\partial \phi }{\partial y} \right)+\frac{\partial U}{\partial \lambda }\left( \frac{\partial \lambda }{\partial y} \right) \end{array} $$
(16)
$$\begin{array}{@{}rcl@{}} a_{Z}&=&\frac{\partial U}{\partial r}\left( \frac{\partial r}{\partial z} \right)+\frac{\partial U}{\partial \phi }\left( \frac{\partial \phi }{\partial z} \right)+\frac{\partial U}{\partial \lambda }\left( \frac{\partial \lambda }{\partial z} \right) \end{array} $$
(17)

For the partial fraction expansions of the components of G, we use the general formula:

$$ \frac{\partial }{\partial \beta }\left( \cdot \right) = \frac{\partial }{\partial r}\left( \cdot \right)\left( \frac{\partial r}{\partial \beta } \right)+\frac{\partial }{\partial \phi }\left( \cdot \right)\left( \frac{\partial \phi }{\partial \beta } \right)+\frac{\partial }{\partial \lambda }\left( \cdot \right)\left( \frac{\partial \lambda }{\partial \beta } \right)\quad ;\qquad\beta \thinspace \rightarrow x,y,z $$
(18)

The individual components of G then follow a pattern. The first few expressions are given here, where \(U_{r}=\frac {\partial U}{\partial r}\), \(U_{\phi }=\frac {\partial U}{\partial \phi }\), and \(U_{\lambda }=\frac {\partial U}{\partial \lambda }\) as given in Eqs. 1214, and all G components are given in Appendix A.

$$ \begin{array}{ll} G_{11}=&\frac{\partial }{\partial x}\left( a_{X} \right) = \left( \frac{\partial r}{\partial x} \right)^{2}\left( \frac{\partial U_{r}}{\partial r} \right)+\left( \frac{\partial \phi }{\partial x} \right)^{2}\left( \frac{\partial U_{\phi }}{\partial \phi } \right)+\left( \frac{\partial \lambda }{\partial x} \right)^{2}\left( \frac{\partial U_{\lambda }}{\partial \lambda } \right)\\ &+2\left( \frac{\partial r}{\partial x} \right)\left( \frac{\partial \phi }{\partial x} \right)\left( \frac{\partial U_{r}}{\partial \phi } \right)+2\left( \frac{\partial r}{\partial x} \right)\left( \frac{\partial \lambda }{\partial x} \right)\left( \frac{\partial U_{r}}{\partial \lambda } \right)+2\left( \frac{\partial \phi }{\partial x} \right)\left( \frac{\partial \lambda }{\partial x} \right)\left( \frac{\partial U_{\phi }}{\partial \lambda } \right)\\ &+\left( \frac{\partial U}{\partial r} \right)\left( \frac{\partial^{2}r}{\partial x^{2}} \right)+\left( \frac{\partial U}{\partial \phi } \right)\left( \frac{\partial^{2}\phi }{\partial x^{2}} \right)+\left( \frac{\partial U}{\partial \lambda } \right)\left( \frac{\partial^{2}\lambda }{\partial x^{2}} \right) \end{array} $$
(19)
$$ \begin{array}{ll} G_{12}=\frac{\partial }{\partial y}\left( a_{X} \right) = &\left( \frac{\partial r}{\partial y}\right)\left( \frac{\partial r}{\partial x} \right)\left( \frac{\partial U_{r}}{\partial r} \right)+\left( \frac{\partial r}{\partial y} \right)\left( \frac{\partial \phi }{\partial x} \right)\left( \frac{\partial U_{r}}{\partial \phi } \right)+\left( \frac{\partial r}{\partial y} \right)\left( \frac{\partial \lambda }{\partial x} \right)\left( \frac{\partial U_{r}}{\partial \lambda } \right)\\ &+\left( \frac{\partial \phi }{\partial y} \right)\left( \frac{\partial r}{\partial x} \right)\left( \frac{\partial U_{\phi }}{\partial r} \right)+\left( \frac{\partial \phi }{\partial y} \right)\left( \frac{\partial \phi }{\partial x} \right)\left( \frac{\partial U_{\phi }}{\partial \phi } \right)+\left( \frac{\partial \phi }{\partial y} \right)\left( \frac{\partial \lambda }{\partial x} \right)\left( \frac{\partial U_{\phi }}{\partial \lambda } \right)\\ &+\left( \frac{\partial \lambda }{\partial y} \right)\left( \frac{\partial r}{\partial x} \right)\left( \frac{\partial U_{\lambda }}{\partial r} \right)+\left( \frac{\partial \lambda }{\partial y} \right)\left( \frac{\partial \phi }{\partial x} \right)\left( \frac{\partial U_{\lambda }}{\partial \phi } \right)+\left( \frac{\partial \lambda }{\partial y} \right)\left( \frac{\partial \lambda }{\partial x} \right)\left( \frac{\partial U_{\lambda }}{\partial \lambda } \right)\\ &+\left( \frac{\partial U}{\partial r} \right)\left( \frac{\partial^{2}r}{\partial x\partial y} \right)+\left( \frac{\partial U}{\partial \phi } \right)\left( \frac{\partial^{2}\phi }{\partial x\partial y} \right)+\left( \frac{\partial U}{\partial \lambda } \right)\left( \frac{\partial^{2}\lambda }{\partial x\partial y} \right) \end{array} $$
(20)
$$ \begin{array}{ll} G_{13}=\frac{\partial }{\partial z}\left( a_{X} \right) = &\left( \frac{\partial r}{\partial z} \right)\left( \frac{\partial r}{\partial x} \right)\left( \frac{\partial U_{r}}{\partial r} \right)+\left( \frac{\partial r}{\partial z} \right)\left( \frac{\partial \phi }{\partial x} \right)\left( \frac{\partial U_{r}}{\partial \phi } \right)+\left( \frac{\partial r}{\partial z} \right)\left( \frac{\partial \lambda }{\partial x} \right)\left( \frac{\partial U_{r}}{\partial \lambda } \right)\\ &+\left( \frac{\partial \phi }{\partial z} \right)\left( \frac{\partial r}{\partial x} \right)\left( \frac{\partial U_{\phi }}{\partial r} \right)+\left( \frac{\partial \phi }{\partial z} \right)\left( \frac{\partial \phi }{\partial x} \right)\left( \frac{\partial U_{\phi }}{\partial \phi } \right)+\left( \frac{\partial \phi }{\partial z} \right)\left( \frac{\partial \lambda }{\partial x} \right)\left( \frac{\partial U_{\phi }}{\partial \lambda } \right)\\ &+\left( \frac{\partial \lambda }{\partial z} \right)\left( \frac{\partial r}{\partial x} \right)\left( \frac{\partial U_{\lambda }}{\partial r} \right)+\left( \frac{\partial \lambda }{\partial z} \right)\left( \frac{\partial \phi }{\partial x} \right)\left( \frac{\partial U_{\lambda }}{\partial \phi } \right)+\left( \frac{\partial \lambda }{\partial z} \right)\left( \frac{\partial \lambda }{\partial x} \right)\left( \frac{\partial U_{\lambda }}{\partial \lambda } \right)\\ &+\left( \frac{\partial U}{\partial r} \right)\left( \frac{\partial^{2}r}{\partial x\partial z} \right)+\left( \frac{\partial U}{\partial \phi } \right)\left( \frac{\partial^{2}\phi }{\partial x\partial z} \right)+\left( \frac{\partial U}{\partial \lambda } \right)\left( \frac{\partial^{2}\lambda }{\partial x\partial z} \right) \end{array} $$
(21)

The spherical coordinate partials with respect to Cartesian coordinates are given by

$$ \begin{array}{ll} \frac{\partial r}{\partial \alpha }=\frac{\alpha }{r};\quad\alpha \rightarrow x,y,z &\quad \frac{\partial \phi }{\partial x}=\frac{-xz}{r^{2}\sqrt {x^{2}+y^{2}} }\thinspace \thinspace \thinspace \thinspace \thinspace \frac{\partial \phi }{\partial y}=\frac{-yz}{r^{2}\sqrt {x^{2}+y^{2}} }\quad \frac{\partial \phi }{\partial z}= \frac{\left( 1- \frac{z^{2}}{r^{2}} \right)}{\sqrt {x^{2}+y^{2}} }\\ &\quad\frac{\partial \lambda }{\partial x}=\frac{-y}{x^{2}+y^{2}}\qquad\;~\frac{\partial \lambda }{\partial y}=\frac{x}{x^{2}+y^{2}}\qquad\;\;\frac{\partial \lambda }{\partial z}=0 \end{array} $$
(22)

Then, the second partials of the gravity potential are found, where the partials of the ALFs are described in the following section. The matrix of second partials is symmetric, and the six expressions for the distinct elements are as follows:

$$\begin{array}{@{}rcl@{}} \frac{\partial^{2}U}{\partial r^{2}}&=&\frac{\mu }{r^{3}}\left\{ 2+{\sum}_{n=2}^{\infty}{\sum}_{m=0}^{n}\left( n+1 \right)\left( n+2 \right)\right.\\ &&\qquad\left.\times\left( \frac{Re}{r} \right)^{n} P_{nm}\left( \sin \phi\right)\left[ C_{nm}\cos\left( m\lambda \right)+S_{nm}\sin\left( m\lambda \right)\right]\right\} \end{array} $$
(23)
$$\begin{array}{@{}rcl@{}} \frac{\partial^{2}U}{\partial r\partial \phi}&=&-\frac{\mu}{r^{2}}{\sum}_{n=2}^{\infty} {\sum}_{m=0}^{n}\left( n+1 \right)\left( \frac{Re}{r} \right)^{n}\frac{\partial P_{nm}\left( \sin \phi \right)}{\partial \phi }\\ &&\times \left[ C_{nm}\cos \left( m\lambda \right)+S_{nm}\sin \left( m\lambda \right) \right] \end{array} $$
(24)
$$\begin{array}{@{}rcl@{}} \frac{\partial^{2}U}{\partial r\partial \lambda }&=&-\frac{\mu }{r^{2}}{\sum}_{n=2}^{\infty} {\sum}_{m=0}^{n} \left( n+1 \right)\left( \frac{Re}{r} \right)^{n}P_{nm}\left( \sin \phi \right)\\ &&\times \left[ S_{nm}\cos \left( m\lambda \right)-C_{nm}\sin \left( m\lambda \right) \right] \end{array} $$
(25)
$$\begin{array}{@{}rcl@{}} \frac{\partial^{2}U}{\partial \phi^{2}}&=&\frac{\mu }{r}{\sum}_{n=2}^{\infty} {\sum}_{m=0}^{n} \left( \frac{Re}{r} \right)^{n}\frac{\partial^{2}P_{nm}\left( \sin \phi \right)}{\partial \phi^{2}} \\ &&\times \left[ C_{nm}\cos \left( m\lambda \right)+S_{nm}\sin \left( m\lambda \right)\right] \end{array} $$
(26)
$$\begin{array}{@{}rcl@{}} \frac{\partial^{2}U}{\partial \phi \partial \lambda }&=&\frac{\mu }{r}{\sum}_{n=2}^{\infty} {\sum}_{m=0}^{n} \left( \frac{Re}{r} \right)^{n}\frac{\partial P_{nm}\left( \sin \phi \right)}{\partial \phi } \\ &&\times m\left[ S_{nm}\cos \left( m\lambda \right)-C_{nm}\sin \left( m\lambda \right)\right] \end{array} $$
(27)
$$\begin{array}{@{}rcl@{}} \frac{\partial^{2}U}{\partial \lambda^{2}}&=&-\frac{\mu }{r}{\sum}_{n=2}^{\infty} {\sum}_{m=0}^{n} \left( \frac{Re}{r} \right)^{n}P_{nm}\left( \sin \phi \right)\\ &&\times m^{2} \left[ {S_{nm}\sin \left( m\lambda \right)+C}_{nm}\cos \left( m\lambda \right) \right] \end{array} $$
(28)

Computation of Associated Legendre Functions

A key component of the spherical harmonic gravity calculations is the set of Associated Legendre Functions, P n m . These functions are related to the Legendre polynomials, P n (u) [16].

$$ P_{n0}\left( u \right) = P_{n}\left( u \right) = \frac{1}{2^{n}n!}\frac{d^{n}}{du^{n}}\left( u^{2}-1 \right)^{n} $$
(29)
$$ \begin{array}{ll} P_{nm}\left( u \right)&=\left( 1-u^{2} \right)^{\frac{m}{2}}\frac{d^{m}}{du^{m}}P_{n}\left( u \right)\\ &=\left( 1-u^{2} \right)^{\frac{m}{2}}\frac{1}{2^{n}n!}\frac{d^{m+n}}{du^{m+n}}\left( u^{2}-1 \right)^{n} \end{array} $$
(30)

The equation for the gravity potential only contains a singularity at r = 0, but the gravity force in spherical coordinates, given below, contains a singularity at the poles \(\phi =+\frac {\pi }{2},-\frac {\pi }{2}\). This special case at the poles is addressed by setting the g x and g y components of acceleration to zero and computing g z as a function of \(\frac {\partial U}{\partial r}\) only (zeroing out the \(\frac {\partial U}{\partial \phi }\) term).

$$ f=\nabla U=\frac{\partial U}{\partial r}\boldsymbol{u}_{r}+\frac{1}{r}\frac{\partial U}{\partial \phi }\boldsymbol{u}_{\phi }+\frac{1}{r\cos \phi }\frac{\partial U}{\partial \lambda }\boldsymbol{u}_{\lambda } $$
(31)

In many applications the potential function is represented using the so-called derived Associated Legendre Functions. The derived ALFs are defined as follows [17, 18]:

$$ A_{nm}\left( u \right) = \frac{1}{2^{n}n!}\frac{d^{m+n}}{du^{m+n}}\left( u^{2}-1 \right)^{n}=\frac{d^{m}}{du^{m}}P_{n}(u) $$
(32)

Following the usual patterns, we can avoid weak numerical instability of the typical recursions used to compute the A n m (see Table 1 of Reference [16]). To overcome this problem, the derived Associated Legendre Functions and spherical harmonic coefficients are normalized to improve accuracy for high degree and order gravity models. First, define A n m as an un-normalized, derived Associated Legendre Function and \(\bar {A}_{nm}\) as a normalized, derived Associated Legendre Function as given in Reference [17]. Similarly, P n m is an un-normalized, Associated Legendre Function, while \(\bar {P}_{nm}\) is a normalized, Associated Legendre Function. Since the spherical harmonics correspond to a linear subspace of 2-D Fourier Series, a typical normalization factor is found; from Ch. 3, formula (7) of Reference [18], the derived ALF may be expanded, giving rise to a coefficient that generates numerically stable recursive calculations. This coefficient is often used in geodesy applications [16, 1923]. Then, the normalized and un-normalized, derived ALFs are related by this normalization, written generally for nm ≠ 0 as [16]

$$ \bar{A}_{nm}=\left[ \frac{\left( n-m \right)!\left( 2n+1 \right)\left( 2-\delta_{0m} \right)}{\left( n+m \right)!} \right]^{1/2}A_{nm}=N_{nm}A_{nm} $$
(33)

where N n m is a scaling factor and the Kronecker delta function is defined to be

$$ \delta_{0m}=\left\{ {\begin{array}{ll} 1&\qquad\quad m=0 \\ 0&\qquad\quad m\ne 0 \end{array}} \right. $$
(34)

The recursion formula chosen for the current work is the normalized, derived Associated Legendre Functions from Table 2, option I of Reference [16] for u = sinϕ:

$$\begin{array}{@{}rcl@{}} \bar{A}_{nm}&=&u\left[ \frac{\left( 2n+1 \right)\left( 2n-1 \right)}{\left( n-m \right)\left( n+m \right)} \right]^{\frac{1}{2}}\bar{A}_{n-1,m}\\ &&-\left[ \frac{\left( 2n+1 \right)\left( n-m-1 \right)\left( n+m-1 \right)}{\left( 2n-3 \right)\left( n+m \right)\left( n-m \right)} \right]^{\frac{1}{2}}\bar{A}_{n-2,m} \end{array} $$
(35)

Note that the specific cases of n = m and m = 0 may each use a more specific formula for efficiency.

Since a normalized version of the ALFs is used, the final un-normalized result may be obtained by applying the appropriate scale factor. For efficiency, the scale factor S n m for three cases are computed separately:

$$\begin{array}{@{}rcl@{}} m=0: & & S_{nm}=\sqrt{ \frac{n\left( n+1 \right)}{2}} \end{array} $$
(36)
$$\begin{array}{@{}rcl@{}} m=n: && S_{nm}=0 \end{array} $$
(37)
$$\begin{array}{@{}rcl@{}} m\ne n\ne 0: && S_{nm}=\sqrt{\left( n-m \right)\left( m+n+1 \right)} \end{array} $$
(38)

Computation of the STM for the spherical harmonic gravity case requires the partial derivative of P n m with respect to ϕ, where C n m and S n m are the normalized Stokes coefficients determined from satellite motion observations, and N n m is the scale factor given in Eq. 33. In Appendix B, the equations for the first and second partials of P n m with respect to ϕ are derived in detail. For more information, these partials are also given in Reference [24].

The first and second partials of the ALFs are incorporated in the calculations for the partials of the gravity potential, U, through the computation of the corresponding ALFs and the appropriate scale factors. In the code, the term P n, m+1(sinϕ) is multiplied by the scale factor S n m , and the term P n, m+2(sinϕ) is multiplied by the scale factor S n, m+1to compensate for the original normalization of the ALFs.

Verification for Second Partials of the Associated Legendre Functions with Respect to Latitude

The second partial of the gravity potential with respect to geocentric latitude is checked since it is a rigorous solution of Laplace’s equation [23]:

$$\begin{array}{@{}rcl@{}} r^{2}{\nabla }^{2}\mathrm{U}=\frac{\partial }{\partial r}\left( r^{2}\frac{\partial U}{\partial r} \right)+\frac{1}{\cos \phi }\frac{\partial }{\partial \phi }\left( \cos \phi \frac{\partial U}{\partial \phi } \right)+\frac{1}{\cos^{2}\phi }\frac{\partial^{2}U}{\partial \lambda^{2}}=0 \end{array} $$
(39)

which is simplified as

$$\begin{array}{@{}rcl@{}} \frac{\partial^{2}U}{\partial \phi^{2}}=-\left[ r^{2}\frac{\partial^{2}U}{\partial r^{2}}+2r\frac{\partial U}{\partial r}-\tan {\phi \frac{\partial U}{\partial \phi }+\frac{1}{\cos^{2}\phi }}\frac{\partial^{2}U}{\partial \lambda^{2}} \right] \end{array} $$
(40)

This equation is also compared numerically with Eq. 26 to further confirm that the expression for the second partial of the ALF with respect to latitude is correct [25]. See the next section for resulting plots.

Baseline Model Simulation Results

All simulation results presented here are computed on a Windows 8 machine using Matlab R2013a. First, to show that the second partial of the normalized ALFs is computed correctly in MCPI, a finite difference approximation method is incorporated into the simulation. Since the present STM study gives efficient and accurate results for all elliptical orbits, the user may specify initial conditions and also the desired tolerance. MCPI may also be tuned based on the number of segments per orbit, relative segment length, and order of approximation [26, 27]. Here, we focus on a Low-Earth Orbit (LEO) example for the following results with one segment per orbit. The user may specify initial conditions and also the desired tolerance. The chosen initial conditions for this orbit are given to be r 0 = [2.865408457 5.191131097 2.848416876] × 106 m, v 0 = [−5.386247766 − 0.3867151905 6.123151881] × 103 m/s, with a period of 6.218728118 × 103 s. All solutions are obtained for one orbit period using a 10th degree and order gravity, Earth rotation of ω = 7.2921e−5 rad/s, and 100 sample points (using a cosine sampling scheme). The RMS error between the initial and final position is found to be [1.225 2.054 4.925] × 10−3 m, and the RMS error between the initial and final velocity is [3.515 2.690 3.267] × 10−6 m/s.

As can be seen in Fig. 1, the first and second partials of the Legendre Functions match closely with the finite difference check approximations (the partials use a normalization scheme as described in the present paper). The ALFs and the first and second partials of the ALFs are computed as lower triangular matrices that depend on n and m, which are the upper summation limits of Eq. 10. Therefore, the size of these matrices are defined by user inputs.

Fig. 1
figure 1

Finite difference check for first and second partial derivatives of ALFs

Similarly, to verify that the formulation developed here for the STM is correct using MCPI, a finite difference check of both the second partials of the gravity potential and the STM matrix are completed and give results comparable in accuracy to the figure above.

An additional verification of the second partial with respect to latitude, ϕ, uses the Laplace Equation as described in the previous section. The second partial \(\frac {{\partial }^{2}\mathrm {U}}{\partial {\upphi }^{2}}\) obtained using this method is compared with the second partial computed using the expression derived in Eq. 26, which is directly a function of the ALFs. The result of this comparison is shown in Figs. 2 and 3. The relative error plot shows spikes that are due to the second partial \(\frac {{\partial }^{\mathrm {2}}\mathrm {U}} {{\partial } {\phi }^{\mathrm {2}}}\) approaching zero as a result of the normalization factor in the denominator.

Fig. 2
figure 2

Absolute error check for second partial of gravity potential with respect to latitude

Fig. 3
figure 3

Relative error check for second partial of gravity potential with respect to latitude

The symplectic check [9] reveals an accuracy of at least 10−10 for all error components, as is seen in Fig. 4. Note that each component of the 6 × 6 matrix of error components is plotted here. A final finite difference check for the STM shows that it is very accurate. Each column of ϕ is checked using a two-sided finite difference check. The difference between the first column of the STM and the corresponding finite difference check is shown in Fig. 5, though all 6 columns show comparable accuracy for this check. The top half of Fig. 5 gives the finite difference check components on the STM’s top half of the first column, while the bottom half of the figure gives the components on the STM’s bottom half of the first column.

Fig. 4
figure 4

Symplectic check for final STM over one orbit

Fig. 5
figure 5

Finite difference check for first column of STM over one orbit

To verify that the STM differential equation holds for arbitrary perturbations, the group properties of the STM are rigorously verified. A representative set of intermediate points are checked using the chain rule and are satisfied with an accuracy of at least 10−9 tolerance. The inverse property of the STM is also verified to high precision. The max error over 1000 tests for the residual error \(\left \| \dot {\phi }-A\phi \right \|\) is 1 × 10−15, while the other group properties are spot checked for accuracy:

$$ \phi \left( t_{i},t_{j} \right) = {\phi \left( t_{j},t_{i} \right)}^{-1} $$
(41)
$$ \phi \left( t_{i},t_{j} \right) = \phi \left( t_{i},t_{k} \right)\phi \left( t_{k},t_{j} \right) $$
(42)

It should not be surprising that MCPI can capture the solution accurately over a larger time interval than, for example, the Gauss Jackson 8th order method, since the typical order of the MCPI approximation is 40 instead of 8.

Optimization of State Transition Matrix Calculations

The baseline STM algorithm, given in detail in the present work, may be further optimized and enhanced. Because the STM requires only as input the position vector at every sample node, the trajectory may first be integrated. Next, the STM may be propagated using the converged trajectory solution. This method is more efficient, as is shown by the comparison in Fig. 6.

Fig. 6
figure 6

Timing comparison of trajectory and state transition matrix: propagated both simultaneously and separately over one orbit

This approach to have the trajectory converge a priori does not require that the same nodal pattern or time segment length be used for the STM.

Cascade Method

The MCPI method may solve either first- or second-order differential equations. However, some numerical integrators, such as RKN12(10), require a second-order formulation. To increase efficiency of STM calculations, a second-order differential equation may be used in place of Eq. 1; this method is called the MCPI Cascade Method [2]. The STM differential equation for the conservative case is rearranged to solve a pair of second-order equations as follows. Since \(\boldsymbol {\dot {\phi }}=\boldsymbol {A\phi }\), or

$$ \left[ {\begin{array}{cc} \dot{\phi }_{11} & \dot{\phi }_{12}\\ \dot{\phi }_{21} & \dot{\phi }_{22} \end{array} } \right]=\left[ {\begin{array}{cc} 0_{3\times 3} & I_{3\times 3}\\ G_{3\times 3} & 0_{3\times 3} \end{array} } \right]\left\lfloor {\begin{array}{cc} \phi_{11} & \phi_{12}\\ \phi_{21} & \phi_{22} \end{array} } \right\rfloor $$
(43)

we write the individual components using the G matrix from Eq. 7 as

$$ \dot{\phi}_{11}=\phi_{21} $$
(44)
$$ \dot{\phi }_{12}=\phi_{22} $$
(45)
$$ \dot{\phi }_{21}=G\phi_{11} $$
(46)
$$ \dot{\phi }_{22}={G\phi }_{12} $$
(47)

Taking the time derivative of Eqs. 44 and 45 gives

$$ \ddot{\phi }_{11}=\dot{\phi }_{21} $$
(48)
$$ \ddot{\phi }_{12}=\dot{\phi }_{22} $$
(49)

Substituting Eq. 46 into Eq. 48 and Eq. 47 into Eq. 49 gives the only two second-order differential equations required for integration:

$$ \ddot{\phi }_{11}=G\phi_{11} $$
(50)
$$ \ddot{\phi }_{12}=G\phi_{12} $$
(51)

The other two sub-matrices of the STM, ϕ 21 and ϕ 22, are obtained by taking the time derivative of the two sub-matrices that are obtained from the converged solution, \(\ddot {\phi }_{21}\) and \(\ddot {\phi }_{22}\):

$$ \phi_{21}=\dot{\phi }_{11} $$
(52)
$$ \phi_{22}=\dot{\phi }_{12} $$
(53)

The initial condition for the STM is known to be

$$ \left[ {\begin{array}{cc} \phi_{11} & \phi_{12}\\ \phi_{21} & \phi_{22} \end{array} } \right]=\left[ {\begin{array}{cc} I_{3\times 3} & 0_{3\times 3}\\ 0_{3\times 3} & I_{3\times 3} \end{array} } \right] $$
(54)

so for the second-order formulation, the initial conditions are

$$ \left[ {\begin{array}{cc} \dot{\phi }_{11} & \dot{\phi }_{12} \end{array} } \right]=\left[ {\begin{array}{cc} \phi_{21} & \phi_{22} \end{array} } \right]=\left[ {\begin{array}{cc} 0_{3\times 3} & I_{3\times 3} \end{array} } \right] $$
(55)
$$ \left[ {\begin{array}{cc} \phi_{11} & \phi_{12} \end{array} } \right]=\left[ {\begin{array}{cc} I_{\mathrm{3\times 3}} & 0_{\mathrm{3\times 3}} \end{array} } \right] $$
(56)

The initial conditions automatically satisfied are ϕ 21 = 03×3 and ϕ 22 = I 3×3. We mention that the above results for the cascade method can be readily generalized to accommodate velocity dependence in the force model (e.g., drag). In this case of velocity dependence, Eq. 5 generalizes as

$$ \left[ {\begin{array}{cc} \dot{\phi }_{11} & \dot{\phi }_{12}\\ \dot{\phi }_{21} & \dot{\phi }_{22} \end{array} } \right]=\left[ {\begin{array}{cc} 0_{3\times 3} & I_{3\times 3}\\ G_{3\times 3} & D_{3\times 3} \end{array} } \right]\left\lfloor {\begin{array}{cc} \phi_{11} & \phi_{12}\\ \phi_{21} & \phi_{22} \end{array} } \right\rfloor $$
(57)
$$D_{3\times 3}=\left[ \frac{\partial \mathbf{g(}t\mathbf{,r)}}{\partial \dot{\boldsymbol{r}}} \right]$$
(58)

And the resulting formulation is the same except for two additional terms of the form

$$ \ddot{\phi }_{11}=G\phi_{11}+D\frac{\dot{\phi }_{11}}{dt} $$
(59)
$$ \ddot{\phi }_{12}=G\phi_{12}+D\frac{\dot{\phi }_{12}}{dt} $$
(60)

Cascade Method Simulation Results

As shown in Figs. 7 and 8, using the Cascade Method to compute the STM gives additional speedup when compared with the baseline method. Figure 7 compares the standard, baseline MCPI model with the MCPI cascade method for computing the trajectory and STM. The results of the cascade method are verified using the RKN12(10) propagator [28], and the resulting timing comparison is given in Fig. 8. Both MCPI and RKN12(10) are tuned such that best performance is achieved for an energy check that gives machine precision.

Fig. 7
figure 7

Timing comparison of baseline vs. cascade method for computing trajectory and subsequently STM from converged position

Fig. 8
figure 8

Timing comparison for computing trajectory and STM of RKN12(10) with MCPI cascade method

Conclusion

This paper describes how to compute the gravitational potential and associated derivatives necessary for propagation of the State Transition Matrix using the Modified Picard Chebyshev Iteration method. Though the present work focuses on the spherical harmonic gravity model to address gravity perturbations, the STM computation using MCPI may be generally implemented using any other gravity model, and extensions to include other perturbations such as drag are straightforward. Results verifying the accuracy of the baseline solution are presented.

Optimizations, including a second-order formulation for the STM, are presented. This formulation is readily solved using the cascade form of the MCPI formulation, and this is the method adopted for the present study. Matlab timing comparisons of this so-called cascade method are shown to be more efficient than the baseline algorithm for computing the STM. Because a different nodal pattern and precision requirement may be used for the a priori converged trajectory than the STM, extensive computational tests indicate that tuning for the optimal state computation invariably gives conservative STM computation.

C code for the method presented here is currently being developed, which will give additional insight into the runtimes. More importantly, techniques for further accelerating the computations, such as using parallel processing, are expected to exploit the inherent parallel structure of the MCPI method if many simultaneous orbits and their associated STM are required. This class of problems will likely be encountered when these methods are used to propagate space objects and use the STM to approximate the associated covariance matrix evolution [29].