I am solving optimal control problems where I need to calculate the D or differentiation matrix, it is full of derivartives of Lagrange Polynomials . This matrix is also a function of the final time (`tf`

, which is a design variable within the optimization). My first attempt (F2) to calculate this matrix was to modify this function (F1) for JuMP by creating many `@NLexpression()`

s. The output for `F1`

and `F2`

match perfectly until the final time is small `tf < 0.1`

I am not sure why this is. Could it be a simplification that `@NLexpression()`

is making?

Anyways, after all of this I decided that there must be a better way to accomplish my goal. What (I think) I need to do is generate an analytical expression of the `D matrix`

in terms of `tf`

before optimization. Then, during optimization, I can use the elements of the D matrix (which will be functions of `tf`

) in an `@NLconstraint()`

current code.

Any suggestions or thoughts ? It seems that automatic differentiation may not work for my case since I don’t know `tf`

before optimization. I was thinking about using Calculus.jl, but I am not sure if that will be waisting more of my time (if there is a better package or better way to do this). Also, I was thinking about registering the functions of `tf`

in the `D matrix`

using JuMP, but I am very concerned with speed and since the registering functionality uses ForwardDiff I am not sure if it will be fast enough.

Thank you very much!