Fast switch and spline function inversion algorithm with multistep optimization and k-vector search for solving Kepler’s equation in celestial mechanics
UNIVERSAL IDENTIFIER: http://hdl.handle.net/11093/2233
EDITED VERSION: https://www.mdpi.com/2227-7390/8/11/2017
DOCUMENT TYPE: article
Obtaining the inverse of a nonlinear monotonic function f(x) over a given interval is a common problem in pure and applied mathematics, the most famous example being Kepler’s description of orbital motion in the two-body approximation. In traditional numerical approaches, this problem is reduced to solving the nonlinear equation f(x)−y=0 in each point y of the co-domain. However, modern applications of orbital mechanics for Kepler’s equation, especially in many-body problems, require highly optimized numerical performance. Ongoing efforts continually attempt to improve such performance. Recently, we introduced a novel method for computing the inverse of a one-dimensional function, called the fast switch and spline inversion (FSSI) algorithm. It works by obtaining an accurate interpolation of the inverse function f−1(y) over an entire interval with a very small generation time. Here, we describe two significant improvements with respect to the performance of the original algorithm. First, the indices of the intervals for building the spline are obtained by k-vector search combined with bisection, thereby making the generation time even smaller. Second, in the case of Kepler’s equation, a multistep method for the optimized calculation of the breakpoints of the spline polynomial was designed and implemented in Cython. We demonstrate results that accurately solve Kepler’s equation for any value of the eccentricity e∈[0,1−ϵ], with ϵ=2.22×10−16, which is the limiting error in double precision. Even with modest current hardware, the CPU generation time for obtaining the solution with high accuracy in a large number of points of the co-domain can be kept to around a few nanoseconds per point.
Files in this item
- Tommasini_Daniele_2020_Fas_swi ...