The whole idea of using the tangent_integrator
is to calculate Lyapunov exponents. Say we have a differential equation
d/dt x = f(x)
with Jacobian Df, then we need to solve the coupled system
d/dt x = f(x)
d/dt W = Df(x)*W
This is what create_tangent
does - it ties both differential equations together in one differential equation, say g, which then can be solved. The solver then might need to compute Dg. the Jacobian of g, for solving the for some initial values.
So if we have symbolically defined f, we can calculate the Jacobian Df of f, couple the system and get g and the symbolically calculate Dg. So we only need the define f and the rest could be done by the symbolic engine. This would save a lot of code writing as the dimension of Dg grows asymptotically to the power of 4 of the dimension of f, e.g. for the Lorenz system
dim(f) = 3
dim(Df) = 3x3 = 9
dim(g) = 3 + 9 = 12
dim(Dg) = 12x12 =144.
SparseDiffTools
would be very handy here, as the dimensions grow quickly.
I will not be at JuliaCon this year, unfortunately. I picked up Julia two months ago and am just scratching the surface right now