[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Orekit Users] State Transition Matrix



Hi Christophe,

Christophe Le Bris <chris.lebris@gmail.com> a écrit :

Yes, you can compute the state transition matrix without the problem of
accuracy from the finite differences.

In Orekit 7.0 (maybe it's not different in the earlier versions), you can
simply set up the computation of the jacobians by using the class
PartialDerivativesEquations:

        SpacecraftState initialState = new SpacecraftState(initialOrbit);
        // prepare for propagation of jacobian
        PDE = new PartialDerivativesEquations("dYdY0", propNum);
        initialState = PDE.setInitialJacobians(initialState, 6, 0);
        // Set up initial state in the propagator
        propNum.setInitialState(initialState);

and at the end of the propagation, you extract the state transition matrix:

         Array2DRowRealMatrix dYdY0 = new Array2DRowRealMatrix(6, 6);
         PDE.getMapper().getStateJacobian(finalState, dYdY0.getDataRef());

Maybe it's not the best way to do it but it works for me.

No worry, it is an appropriate way to get the state transition matrix.

There are also some additional features that may be interesting, depending
on your needs.

First you can set the initial Jacobians to any matrix you already know.
Christophe example above just specifies the dimensions so an identity
matric is built for state and a null matrix is build for the Jacobian
with respect to model parameters. However, another method can be used
to pass matrices. This is useful if for example you want to propagate
a covariance matric you already know from either a previous propagation
or an orbit determination.

Second, you can also have access to the state transition matrix during
the propagation, not only at the end. This is done using step handlers
in master propagation mode. The interpolator that will be made available
for the current step to your step handler will contain the state
transition matrix. You will also use the PDE.getMapper() to extract
this intermediate STM from the step handler.

best regards,
Luc

I have attached in the e-mail a paper from the Orekit team that talks about
this.

Christophe



2017-07-07 11:44 GMT+02:00 <alessandro.vananti@aiub.unibe.ch>:

Hi everybody,
I would like to propagate the covariance associated to a space object
state.
Right now I calculate the transition matrix with finite differences of the
state at time t0 and t1.
However I see that Orekit has already some classes to do partial
derivatives
and propagation.
I wonder if I can use those classes for my purpose.

Thanks for any suggestion!
Alessandro