ロジスティックファミリー
定義 1
に関して、をロジスティックマップlogistic Mapと呼び、をロジスティックファミリーlogistic Familyとする。
性質
- [1]:
- [2]:
- [3]: ならば、はの固定点である。
- [4]: ならば、
説明
ロジスティックモデルは人口の増減など様々な現象をモデリングするのに役立てることができる。人口であれば、一世代が経過するごとにロジスティックマップを一度適用することとみなせる。ただし、二次関数で初期値がでなければ関数値は負になるが、そもそもそれ以外には興味が無いため、とだけを気にすれば良い。
数式的な理解
- の場合、は唯一のシンクを持ち、マップを適用するとは全て以下になるため、これらの積は続けて小さくなり、マップを適用するたびにに近づく。人口で考えると、生まれるより死ぬ方が多く、最終的に絶滅へと向かうケースだ。例えば、小さな島にメスのクマが一匹しかおらず、オスのクマだけがたくさんいる場合、それでも再び繁栄する可能性はあるが、その可能性は極めて低い。という条件はほぼ確実な終末を意味し、特に興味深くない。
の場合、の最大値がなので、マップを適用するたびにだんだん大きくなり、がより大きくなる瞬間が来る。
- それにより、[1]に基づきは負になり、その後は負の方向に発散する以外にない。これもあまりに明らかで興味がない。要するに、の場合だけに意味がある。
- [2]と[3]、そしてシンクとソースの判断法によれば、ならばであり、したがって固定点はシンクになり、**(4)**を得ることができる。マップを続けて適用し、シンクに十分近い点に達したら、その後はシンクへと引き寄せられ、値も安定する。人口で考えれば、成長も衰退もしない、ある種の安定した平衡状態が存在することになる。
一方、がより大きくなると、方程式を解くことにより、周期-シンクを見つけることもできる。この場合、マップを適用するたびにいくつかの数が繰り返し現れ、ランダムなタイミングで停止すると、そのうちの一つを得ることになる。しかし、これは近くでは成立しないため、定理としてまとめて断言することはできない。
バイファーケーション
以下の分岐図Bifurcation Diagramを見てみよう。分岐図はから次の手順に従って描かれる。
- ステップ 1. を少し増やす。
- ステップ 2. ランダムなを選ぶ。
- ステップ 3. 点を打ち、ステップ 1に戻る。
の部分の曲線は、初期値が何であれ、マップをおよそ百回程度適用すると安定し、一貫した値になることを示している。それ以降は、周期-シンクが生まれ、二つの間で数値が振動するようになり、赤い線を越えると、四つの値の間で振動する周期-シンクが存在している。しかしある時点から、膨大な数の可能性が生じ、予測が困難な動きをするようになり、これをカオスアトラクターchaotic Attractorsと呼ぶ。
ナチュラルメジャー
一方、周期的軌道がカオス的に動いても、特定の領域に長く滞在することがある。初期値を無視してしまえば、システム本来の性質として、「平均的な」分布を計算することが可能である。この確率密度関数をナチュラルインバリアントデンシティ(Natural Invariant Density)と呼び、数学的には十分に大きいに対してのように表される。
実際に、ロジスティックマップのをプロットすると、上記のようになる。もちろんはカオス的なため、本当にがどこにあるのかを予測することは不可能だが、それでもとの近くに最も高い確率で存在することが分かる。
コード
以下はバイファーケーションダイアグラムをRで描画するためのコードである。
ga<-function(a,x,k=1) {
tmp <- a*x *(1 - x)
if(k==1) {return( tmp ) }
else {return(ga(a,tmp,k-1))}
}
result<-numeric(0)
for(a in seq(1,4.1,by=0.0001))
{
result<-rbind(result,c(a,ga(a,runif(1),101)))
}
win.graph(8,4)
plot(result,main='bifurcation diagram',xlim=c(1,4),ylim=c(0,1),pch=20, cex=0.1,
xlab='a',ylab='101번째 값')
abline(v=c(3,4),lty=2); abline(h=0)
abline(v=3.45,col='red')
以下はナチュラルインバリアントデンシティの形状を描画するためのRのコードである。
set.seed(150421)
logistic<-function(x) {4*x*(1-x)}
record<-runif(1)
for(i in 1:10^5) {record<-c(record,logistic(record[length(record)]))}
out<-hist(record[-(1:10000)])
win.graph(4,4); plot(x=seq(0,1,len=20),out$density,type='l',
xlab='x',ylab='ρ',main='Naturla Invariant Density ρ(x)')
Yorke. (1996). CHAOS: An Introduction to Dynamical Systems: p17~21. ↩︎