Get partial state derivative with automatic differentiation

Hi everyone,
I am interested in obtaining the partial derivative of the state with respect to the state itself and wrt the time (I understand that it should be possible to obtain those derivatives with respect to additional parameters such as the mass with the getadditionalstatederivatives() method) . There is a quick way to achieve that using the automatic differentiation function ?

Thanks in andvance,

I am not sure to understand your question. For me, the partial derivatives of the state with respect to itself is the identity matrix, or some Jacobian if there is a parameters conversion in between.

Hi luc,
Yes sorry I’ve messed up the question.
What I really would like to see if there is a quick way to get the derivatives of the state with respect to time or other parameter ( maneuver ect) for both Cartesian and equinoctial orbits.

I am sure orekits autodifferentiation implementation does it under the rug.

I don’t know if you are familiar with GODOT but my dream is to see a feature similar to its autodif module added to orekit.
I really think it would be a powerful tool to perform optimisation tasks as fast as possible.

BTW. Great job with the 12.0 release (flawless as always).

Thanks for your time,

I guess FieldCartesianOrbit and FieldEquinoctialOrbit could do that, when initialized with one of the derivative fields (Univariate 1 or 2 for just derivative with respect to time, Gradient for first order derivative with respect to several parameters, DerivativeStructure for the general case).

Thx, for the answer. I will have a look at it and update my response if I have further questions.

Have a nice day!


Via Hipparchus, Orekit does benefit from Automatic Differentiation. There are several CalculusFieldElement of interest for that, Luc mentioned them. It’s not the fastest out there, but it’s very well validated and performance has actually been improving since its original introduction.
Because this is Java and there is no operator overload, algebraic operations use a tedious syntax: add, multiply, etc. Fortunately for users, Orekit contributors over the years have been adding the Field counterpart of old and new features. This means that you can get partial derivatives for most things. You’ll still need to define your independent variables and pass them as arguments to the proper routines, using the aforementioned syntax, but the real pain has been lifted for you (it’s under the hood).
Please provide feedback on your use of AD with Hipparchus/Orekit.