Lyapunov Exponents
The Finite Time Lyapunov Spectrum (FTLS) for a 2D billiard system consists of a set of 4 numbers \lambda_i \, , \{ i = 1, ...,4 \} that characterize how fast the separation of initially close initial conditions grows.
It can be shown theoretically that two of these exponents must be zero (\lambda_2 =\lambda_3 = 0) and the other two are paired in such a way that they sum up to zero, i.e. \lambda_1 = -\lambda_4).
The function provided to calculate the FTLS is
#
DynamicalBilliards.lyapunovspectrum
— Function.
lyapunovspectrum([p::AbstractParticle,] bd::Billiard, t)
Returns the finite time lyapunov exponents (averaged over time t
) for a given particle in a billiard table.
Returns zeros for pinned particles.
If a particle is not given, a random one is picked through randominside
. See parallelize
for a parallelized version.
Here its basic use is illustrated
using DynamicalBilliards radius = 1.0 l = 2.0 bd = Billiard(billiard_polygon(6, l; setting = "periodic")..., Disk([0., 0.], radius)) par = randominside(bd) t = 1000.0 exps = lyapunovspectrum(par, bd, t)
4-element Array{Float64,1}: 0.6239620797249252 0.00010557817132751463 -0.0008288602693968505 -0.6232387976268557
In the following example we compute the change of \lambda_1\ versus the distance between the disks in a hexagonal periodic billiard.
using DynamicalBilliards using PyPlot t = 5000.0 radius = 1.0 spaces = 2.0:0.1:4.4 #Distances between adjacent disks lyap_time = zero(spaces) #Array where the exponents will be stored for (i, space) in enumerate(spaces) bd = billiard_polygon(6, space/(sqrt(3)); setting = "periodic") disc = Disk([0., 0.], radius) billiard = Billiard(bd.obstacles..., disc) p = randominside(billiard) lyap_time[i] = lyapunovspectrum(p, billiard, t)[1] end figure() plot(spaces, lyap_time, "*-") xlabel("\$w\$"); ylabel("\$\\lambda_1\$")
The plot of the maximum exponent can be compared with the results reported by Gaspard et. al (see figure 7), showing that using just t = 5000.0
is already enough of a statistical averaging.