I calculate lyapunov spectrum in hyperchaos. Why i have such spectrum:
[0.015581182326147337,
0.0028325903213687266,
1.0762649529273773e-6,
-0.007004756972893843,
-5.7866575928839605,
-11.883439707053556]
For hyperchaos need two positive exponent lyapunov, one zero exponent and other negative. Why third exponent don’t zero and not infinitesimal value?
Code:
function sigma(x)
return @fastmath 1.0 / ( 1.0 + exp( -10.0 * ( x - ( - 0.25 ) ) ) )
end
function HR(u, p, t)
a, b, c, d, s, xr, r, I, vs, k1, k2, el_link = p
x1, y1, z1, x2, y2, z2 = u
du1 = y1 + b * x1 ^ 2 - a * x1 ^3 - z1 + I - k1 * ( x1 - vs ) * sigma(x2) + el_link * ( x2 - x1 )
du2 = c - d * x1 ^2 - y1
du3 = r * ( s * ( x1 - xr ) - z1 )
du4 = y2 + b * x2 ^ 2 - a * x2 ^3 - z2 + I - k2 * ( x2 - vs ) * sigma(x1) + el_link * ( x1 - x2 )
du5 = c - d * x2 ^2 - y2
du6 = r * ( s * ( x2 - xr ) - z2 )
return SVector(du1, du2, du3,
du4, du5, du6)
end
condition = SA[-0.6925302979542225,
-2.2083565485726155,
3.4251812063410423,
-0.49710798909310244,
-0.24112901660181446,
4.585643148476261]
tspan = (0.0, 500000.0)
a = 1.
b = 3.
c = 1.
d = 5.
xr = -1.6
r = 0.01 # 0.01
s = 5.
I = 4.
xv = 2.
k1= -0.17
k2 = k1
k = 0.155
p = SA[a, b, c, d, s, xr, r, I, xv, k1, k2, k]
k_space = range(0.155, 0.161, step = 0.001)
spectrum_array = zeros(6, length(k_space))
condition_array = zeros(6, length(k_space))
int(x) = floor(Int, x)
length(k_space)
for (i, k) in enumerate(k_space)
if i == 1
global initialcondition = condition
end
println("Initial condition: $initialcondition"); flush(stdout)
println("k: $k"); flush(stdout)
condition_array[:, i] = initialcondition
p = SA[a, b, c, d,
s, xr, r, I, xv, k1, k2, k]
prob = ODEProblem(HR, initialcondition, tspan, p)
sol = solve(prob, Vern9(), abstol = 1e-11, reltol = 1e-11, dense=false, maxiters = 30000000)
println("solve complete"); flush(stdout)
ds_HR = ContinuousDynamicalSystem(HR, initialcondition, p )
spectrum = lyapunovspectrum(ds_HR, tspan[2]; diffeq = (alg = Vern9(),
abstol = 1e-11, reltol = 1e-11,
maxiters = 30000000
))
spectrum_array[1:6, i] = spectrum[1:6]
println("Spectrum: ", spectrum_array[1:6, i]); flush(stdout)
initialcondition = sol[length(sol.u)]
println(">>>>>>>>>>>>>")
println("")
end
image for spectrum: