カオスの例

今日は例によって昨日の話題です。

昨日のセミナーで簡単なカオスの話が出てきました。具体的には

x_{n+1} = a (1-x_n)x_n

というやつです。カオスとかフラクタルとかは過去にマンデルブロー集合でけっこう遊んでたのですが、このカオスはまだ遊んだことがなかったので遊んでみることにしました。

「10行くらいのプログラムでできる」とのことでしたが、まずはperlで4行くらいのスクリプト(分かり易さを保持した上で)を書いて遊んでみました。その後より詳しく遊んでみたくなったので、いろいろ機能を追加していき、最終的に

#!/usr/bin/perl

for($x0=0.0;$x0<1.0;$x0+=0.021){
print "$x0\n";
open(FILE0,">ch/x.$x0.dat");

for($a=0.1;$a<4;$a+=0.0002){

#  open(FILE,">ch/a.$a.dat");
  $x = $x0;
  for($i=0;$i<400;$i++){
    $x = $a*(1-$x)*$x;
#    print FILE "$i $x\n";
  }
#  close(FILE);

  print FILE0 "$a $x\n";

}
close(FILE0);
}

のようなスクリプトになりました。

結果は具体的にはxmgraceにプロットして遊んでましたが、最終的な結果をプロットしたやつを以下に載せます。

。。。なんか画像サイズが小さいと潰れててあんまりきれいじゃないですね。。。ということで、もっと大きい画像を以下に載せておきます。
http://home.hiroshima-u.ac.jp/reuni/pic/fig/chaos_large.gif
カオスな領域にも点の密度に濃淡あったり、特定の値しかとらない部分があったりして、なかなか不思議で面白いです。