Local Lyapunov analysis

For comparison with neural Lyapunov methods, we also provide a function for local Lyapunov analysis by linearization.

NeuralLyapunov.local_lyapunovFunction
local_lyapunov(dynamics, state_dim, optimizer_factory[, jac]; fixed_point, p)

Use semidefinite programming to derive a quadratic Lyapunov function for the linearization of dynamics around fixed_point. Return (V, dV/dt).

The system dynamics are given by the function dynamics(x, p, t), where x is the state, p are the parameters, and t is time. The state dimension is given by state_dim, which is the length of the state vector x.

To solve the semidefinite program, JuMP.Model requires an optimizer_factory capable of semidefinite programming (SDP). See the JuMP documentation for examples.

If jac is not supplied, the Jacobian of the dynamics(x, p, t) with respect to x is calculated using ForwardDiff. Otherwise, jac is expected to be either a function or an AbstractMatrix. If jac isa AbstractMatrix, it should be the value of the Jacobian at fixed_point. Otherwise, jac(x, p) should be a function, and should take in the state and parameters and output the Jacobian of dynamics with respect to the state x.

If fixed_point is not specified, it defaults to the origin, i.e., zeros(state_dim). Parameters p for the dynamics should be supplied when the dynamics depend on them.

source