Question on Lyapunov exponent implementation
bojohnson5 opened this issue · comments
I've been reading through the papers cited in the Lyapunov section of the docs and was wondering if I could get some clarification. From my understanding, the parallelepiped in tangent space is from the tangent space of the manifold formed from the equations of motion. It's also my understanding that the manifold is formed from just the coordinates of the system q. For a system I'm working with, I have first derivatives of the position coordinates q but also that of the conjugate momenta p. Does the implementation of Lyapunov exponents for DynamicalSystems.jl make sense in finding these values for conjugate momenta as well as the position coordinates?
In Hamiltonian mechanics q and p are independent variables. There is no difference whatsoever regarding the algorithm implementation. Imagine that instead of xdot, ydot, zdot
you have xdot, pdot
. Its just two variables whose rate of change forms the equations of motion.
The conjugacy has implications on the symmetries and dimensionality of the phase space, but this is of no concern for the algorithm.
From my understanding, the parallelepiped in tangent space is from the tangent space of the manifold formed from the equations of motion.
That is correct.
It's also my understanding that the manifold is formed from just the coordinates of the system q.
That is incorrect. The manifold exists on the phase space, not the coordinate space (which is a strict subset of the phase space).
(for example, the implication of the conjugacy on the exponents is that the set of the Lyapunov exponents is symmetric around zero. For every positive exponent +λ you also have a negative one -λ)
I appreciate the feedback, that's very helpful!
Anytime. If you have more questions, just hit us up here or in the Slack channel.
Here is an example:
julia> using DynamicalSystems
julia> ds = Systems.henonheiles()
4-dimensional continuous dynamical system
state: [0.0, -0.25, 0.42081, 0.0]
e.o.m.: hheom!
in-place? true
jacobian: hhjacob!
parameters: nothing
julia> lyapunovs(ds, 5000)
4-element Array{Float64,1}:
0.061825186004956935
0.0011905278004693503
-0.0012976825745669985
-0.06171814846400695
Henon Heiles is a Hamiltonian system: https://juliadynamics.github.io/DynamicalSystems.jl/dev/ds/predefined/#DynamicalSystemsBase.Systems.henonheiles