logo

カオス遷移 📂動力学

カオス遷移

定義

パラメータの変化に応じてシステムがカオスになったりならなかったりする現象をカオス遷移という。

例として、ロジスティックファミリーを考えてみると、$g_{a} = ax (1-x)$ で作られるシステムはパラメータ$a$ によって変化する様子を見せ、$a=4$ のときカオスオービットを持つことが確認できる。それでは次の質問は「$a>4$ のときはどうなるか」だ。

まず$a>4$ の場合は$g_{a}(x) = ax(1-x)$ なので、その最大値は$1$ より大きく、$g_{a}$ は$x_{n} \notin [-1,1]$ をマイナスにマッピングする。また、二次関数なので一度でもある$\tau \in \mathbb{N}$ に対して$x_{ \tau } > 1$ になるとその後は恐ろしい速度で発散する。カオスオービットがその前にバウンデッドオービットである必要があるが、発散したということはパラメータ$a$ が変化に伴ってカオスの性質を失ったという意味になり、上の定義に従ってカオス遷移と言える。

このような現象は、$a>4$ の値が大きくなるほど早く起こる。それでは$x_{ \tau } > 1$ となる$\tau$ は$a$ とどのような関係があるか推測できる。これを実際にシミュレーションで確認することは、コードを実行するだけで次のプロットが描かれるほど難しくない。

2321.png

コードでは$a$ の値を少しずつ増やしながら、ランダムな初期値$x_{0}$ に対して$x_{n} >1$ を満たす$n = \tau$ を探し、それを$N=1000$ 回繰り返して$\tau$ の平均$\overline{\tau}$ を計算する。実際に描かれた図を見ると、$a = 4 + \varepsilon$ に対して$\log \varepsilon \sim \log \left( \overline{ \tau } \right)$ のような線形関係が確認できる。

このようなカオス遷移は、ロジスティックマップのシステムだけでなく、多くのシステムで発見される現象である。

コード

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')