library(latex2exp)
library(nonlinearTseries)
library(plot3D)
The henon attractor is
Build the Takens vector for the Henon map using the x-coordinate time series
h = henon(n.sample= 3000,n.transient= 100, a = 1.4, b = 0.3,
start = c(0.73954883, 0.04772637), do.plot = FALSE)
plot( h$x, h$y, pch=".", main="The Henon Attractor")
What if we look only at the x coordinate
plot(ts(h$x), pch='.' )
title(latex2exp("scatter plot of $x_n$ versus `time'"))
plot(ts(h$x[1:100]), t='l' )
title(latex2exp("line plot of first 100 points of $x_n$ versus `time'"))
Now let’s apply Takens theorem to “rebuild” the henon attractor from knowledge of only the x coordinate
using the x-coordinate time series we are able to reconstruct the state space of the Henon map
takens = buildTakens( h$x, embedding.dim=2, time.lag=1)
plot(takens, pch='.')
Taken’s theorem says that when you reconstruct an n-dimensional manifold from a single coordinate trace, then the result is topologically equivalent (homeomorphic) to the original
Simpler Example: A circle…
t = c(seq(0,4*pi, 2*pi/1000))
x = cos(t)
y = sin(t)
plot(x,y, t="l", col="blue", asp=1,
main= latex2exp("$x^2+y^2 = 1$"))
The time lag is important!
takensCircle = buildTakens( x, embedding.dim=2, time.lag=50)
plot(takensCircle, t="l", col="blue", asp=1)
Simpler Example 2: A Circle in 3D
t = c(seq(0,4*pi, 2*pi/1000))
x = 3*cos(t)
y = 5*sin(t)
z = 4*cos(t)
lines3D(x,y,z, t="l", col="blue", asp=1)
The dimension is important!
observed = x+z
plot(ts(observed), t="l", col="blue")
takensCircle = buildTakens( observed, embedding.dim=5, time.lag=50)
lines3D(takensCircle[,1],takensCircle[,2],takensCircle[,3],
t="l", col="blue", asp=1)
A common set of initial conditions is \(x=8.0,y=8.0,z=27.0\) with parameters \(\sigma=10,\rho=83,\beta=28\).
lor = lorenz(sigma = 10, beta = 8/3, rho = 28, start = c(8,8,27),
time = seq(0, 100, by = 0.01), do.plot = FALSE)
lines3D( lor$x, lor$y, lor$z, t='l', col='blue', main="The Lorenz Attractor")
What if we look only at the x coordinate
observed = lor$x
plot(ts(observed), pch='.' )
title("observation of the lorenz series")
Now let’s apply Takens theorem to “rebuild” the lorenz attractor from knowledge of only the x coordinate
takens = buildTakens( observed, embedding.dim=5, time.lag=10)
lines3D(takens[,1], takens[,2], takens[,3], t="l", col="blue", asp=1)