로지스틱 패밀리

로지스틱 패밀리

정의 1

a=2.png

$a \ge 0$ 에 대해 $g_{a} (x) = a x ( 1 - x )$ 를 로지스틱 맵Logistic Map이라고 하고 $\left\{ g_{a} \mid a > 0 \right\}$ 을 로지스틱 패밀리Logistic Family라고 한다.

성질

설명

로지스틱 모형은 인구의 증감 등의 여러가지 현상을 모델링하는데 유용하게 쓰일 수 있다. 인구라면 한 세대가 지날 때마다 로티스틱 맵 $g_{a}$ 를 한 번 취하는 것으로 볼 수 있다. 일단은 이차함수이므로 초기값이 $x_{1} \in [0,1]$ 가 아니면 함숫값은 음수가 되지만 애초에 그 외엔 관심이 없고, 따라서 $a \ge 0$ 과 $x_{1} \in [0,1]$ 만 신경쓰면 된다.

수식적 이해

$4 < a $ 일 경우 $a x (1-x)$ 의 최댓값이 $\displaystyle {{a} \over {4}} > 1$ 이므로 맵을 취할때마다 점점 더 커져서 $x_{n } = g^{k}_{a} (x_{n-1})$ 이 $1$ 보다 커지는 순간이 올 수밖에 없다.

한편 $a$ 가 $3$ 보다 더 커지면 방정식 $g_{a}^{2^{n}} (x) = x$ 을 품으로써 피리어딕-$2^{n}$ 싱크를 찾을 수도 있다. 이 경우 맵을 취할때 마다 몇가지 수가 반복해서 나타나며, 랜덤한 타이밍에 멈춘다면 그들 중 하나를 얻게 될 것이다. 다만 이는 $a=3.84$ 부근에서 성립하지 않아 정리로 만들어서 장담할 수는 없다.

바이퍼케이션

아래의 분기 그림Bifurcation Diagram을 살펴보자. 분기그림은 $a=1$ 부터 다음의 순서에 따라 그려진다.

bifurcationdiagram.png

$1 < a < 3$ 부분의 곡선은 초기값 $x$ 가 무엇이든 $g_{a}$ 를 백여번 정도 취하면 안정되고 일관된 값이 된다는 것이다. 그리고 그 이후론 피리어딕-$2^{n}$ 싱크가 생겨 둘 중 하나로 수가 진동하게 되며, 빨간선을 넘어서면 피리어딕 $2^2$-싱크가 존재해서 네 개의 값 사이에서 진동한다. 그러다가 어느순간부터는 엄청나게 많은 경우의 수가 생겨버리는데, 이렇게 예측하기 어려워지는 움직임을 캐어릭 어트랙터Chaotic Attractors라 한다

네츄럴 메져

한편 피리어딕 오빗들은 캐어릭하게 움직이더라도 특정 구역에 더 오래 머무를 수도 있다. 이는 초기값과 관계 없이 시스템 본연의 성질로써 초기의 값을 버리고 나면 ‘평균적인’ 분포를 계산할 수 있다. 이러한 성질을 가지는 확률밀도함수 $\rho(x)$ 를 네츄럴 인베리언트 덴서티(Natural Invariant Density) 라고 하며 수식적으로는 충분히 큰 $N$ 에 대해 $\displaystyle p \left( x_{N} \in [a,b] \right) = \int_{a}^{b} \rho (x) dx$ 와 같이 표현할 수 있다.

rho.png

실제로 로지스틱 맵 $g_{4} = 4 x (1 - x )$ 의 $\rho(x)$ 를 그려보면 위와 같다. 물론 $\left\{ x_{1} , x_{2} , \cdots \right\}$ 은 캐어릭하기 때문에 정말로 $x_{N}$ 이 어디 있는지까지는 예측할 수 없지만 그래도 $0$ 과 $1$ 근처에 있을 확률이 제일 높은 건 알 수 있다.

코드

아래는 바이퍼케이션 다이어그램을 그리는 코드를 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)')

  1. Yorke. (1996). CHAOS: An Introduction to Dynamical Systems: p17~21. ↩︎

댓글