Chaotic Transition
Definition 1
A chaotic trajectory that has been moving chaotically within a chaotic region for a certain period and then suddenly leaves the chaotic region is called transient chaos. The period during which transient chaos persists is called the transient lifetime.
Explanation 2
Food chain system
Food chain system: $$ \begin{align*} \dot{R} =& R \left( 1 - {\frac{ R }{ K }} \right) - {\frac{ x_{c} y_{c} C R }{ R + R_{0} }} \\ \dot{C} =& x_{c} C \left( {\frac{ y_{c} R }{ R + R_{0} }} - 1 \right) - {\frac{ x_{p} y_{p} P C }{ C + C_{0} }} \\ \dot{P} =& x_{p} P \left( {\frac{ y_{p} C }{ C + C_{0} }} - 1 \right) \end{align*} $$
In the above system, when the parameters are set to $x_{c} = 0.4$, $y_{c} = 2.009$, $x_{p} = 0.08$, $y_{p} = 2.876$, $R_{0} = 0.16129$, $C_{0} = 0.5$ and $K = 1.0001$, for some initial conditions one can observe the following time evolution. The population of $P$, which appears to move chaotically, drastically decreases starting at time $t = \tau$; this time $\tau$ is the transient lifetime.
Such transient chaos depends on initial conditions. If you change initial conditions and run 100,000 simulations, you find that the transient lifetimes follow an exponential distribution.
Logistic map
As another example, consider the logistic family. The system given by $g_{a} = ax (1-x)$ shows behavior that varies with parameter $a$, and one can verify that it has a chaotic orbit when $a=4$ (../968). The next question is: what happens when $a>4$?
First, if $a>4$ then $g_{a}(x) = ax(1-x)$, so its maximum is greater than $1$, and $g_{a}$ maps $x_{n} \notin [-1,1]$ to a negative value. Also, since it is a quadratic function, if for some $\tau \in \mathbb{N}$ it becomes $x_{ \tau } > 1$ even once, it will thereafter diverge at an alarming rate. A chaotic orbit must be a bounded orbit beforehand, so divergence means that the system has lost its chaotic character as the parameter $a$ changes; by the definition above this can be called a chaotic transition.
This phenomenon will occur more quickly the larger the value of $a>4$. Therefore one can expect that $\tau$ which makes $x_{ \tau } > 1$ holds has some relationship with $a$. It is not difficult to verify this by simulation; simply running the code produces the following plot.

In the code, $a$ is increased in very small increments while, for random initial values $x_{0}$, it searches for $n = \tau$ that satisfy $x_{n} >1$, repeating this $N=1000$ times and computing the mean $\overline{\tau}$ of the $\tau$. The resulting plot shows that, for $a = 4 + \varepsilon$, a linear relationship like $\log \varepsilon \sim \log \left( \overline{ \tau } \right)$ appears.
Such chaotic transitions are not unique to the logistic map system but are found in many systems.
Code
Julia
The following is Julia code to reproduce transient chaos in the food chain system.
function RK4(f::Function, v::AbstractVector, h=1e-2)
V1 = f(v)
V2 = f(v + (h/2)*V1)
V3 = f(v + (h/2)*V2)
V4 = f(v + h*V3)
return v + (h/6)*(V1 + 2V2 + 2V3 + V4), V1
end
function factory_foodchain2(K::Number; ic = [0., 0.4rand() + 0.6, 0.4rand() + 0.15, 0.5rand() + 0.3], tspan = 0:1e-2:10)
xc, yc, xp, yp, R0, C0 = (
0.4, 2.009, 0.08, 2.876, 0.16129, 0.5)
function sys(v::AbstractVector)
_,R,C,P = v
dt = 1
dR = R*(1 - frac(R,K)) - xc*yc*frac(C*R, R + R0)
dC = xc*C*(frac(yc*R, R + R0) - 1) - xp*yp*frac(P*C, C + C0)
dP = xp*P*(frac(yp*C, C + C0) - 1)
return [dt, dR, dC, dP]
end
len_t_ = length(tspan); h = tspan.step.hi
v = ic; DIM = length(v)
traj = zeros(2+len_t_, 2DIM); traj[1, 1:DIM] = v
tk = 0
while tk ≤ len_t_
t,_,_,_ = v
v, dv = RK4(sys, v, h)
if t ≥ first(tspan)
tk += 1
traj[tk+1, 1:DIM ] = v
traj[tk , DIM .+ (1:DIM)] = dv
end
end
return traj[1:(end-2), :]
end
factory_foodchain2(T::Type, args...; kargs...) =
DataFrame(factory_foodchain2(args...; kargs...), ["t", "R", "C", "P", "dt", "dR", "dC", "dP"])[:, Not(:dt)]
hrzn = []
vrtl = []
@time for k in 0.9:0.0001:1
for _ in 1:500
traj = factory_foodchain2(DataFrame, k, tspan = 0:1e-1:5000)[40000:end,:]
bits = arglmin(traj.P)
if maximum(traj.P) > 0.55
push!(hrzn, fill(k, length(bits)))
push!(vrtl, traj.P[bits])
break
else
println("k: $k should be tried again")
end
end
end
using LaTeXStrings
scatter([hrzn...;], [vrtl...;], ylims = [0.55, 0.8], yticks = 0.55:0.05:0.8, xticks = 0.9:0.02:1,
ms = 1, msw = 0, color = :black, alpha = 0.5, legend = :none, xlabel = L"K", ylabel = L"\min P")
png("bifurcaiton.png")
tau_ = zeros(Int64, 100000)
@showprogress @threads for k in eachindex(tau_)
traj = factory_foodchain2(DataFrame, 0.99976 + 2e-4, ic = rand(4), tspan = 0:1e-0:5000)
tau = findlast(diff(cumsum(traj.P .< 0.55)) .== 0)
tau_[k] = !isnothing(tau) ? tau : -1
end
freq = [count(x .≤ tau_ .< x + 250) for x in 250:250:4750]
scatter(250:250:4750, freq ./ sum(freq), yscale = :log10, xticks = 0:1000:5000, xlims = [0, 5000], yticks = [1e-1, 1e-2], color = :white, legend = :none, xlabel = "transient lifetime", ylabel = "frequency")
R
The following is R code to reproduce transient chaos in the logistic map.
ga<-function(a,x,k=1) {
tmp <- a*x *(1 - x)
if(k==1) {return( tmp ) }
else {return(ga(a,tmp,k-1))}
}
N<-1000
y<-numeric(0)
A<-4+10^(-(80:120)/20)
for(a in A){
taubar<-0
for(i in 1:N){
tau<-0
x<-runif(1)
while(x>0){
x<-ga(a,x)
tau=tau+1
}
taubar<-taubar+tau
}
y<-c(y,taubar/N)
}
taubar<-y
a<-A
win.graph(); plot(log(a-4),log(taubar),type='l',main='a>4 일 때 로지스틱 맵의 Chaotic Transient')
Yorke. (1996). CHAOS: An Introduction to Dynamical Systems: p369. ↩︎
Kong, L. W., Fan, H. W., Grebogi, C., & Lai, Y. C. (2021). Machine learning prediction of critical transition and system collapse. Physical Review Research, 3(1), 013090. https://doi.org/10.1103/PhysRevResearch.3.013090 ↩︎
