マンデルブロをRで

  • このサイトのフリービデオがきれいなことを書いた(こちら)
  • フリーのオンライン動画はこのページ
    • 日本語版もあるようだけれど、どうせ、日本語で聞いてもわからない単語はわからないわけだから、英語も簡単なので、英語版を再生(リスニングの勉強にもなる(とても良い))
    • 第6あたりから、マンデルブロ
    • z_{n+1}=z_n^2+C
  • マンデルブロはRでも描ける
    • こちらを参考にする
      • 複素数ベクトルを扱う関数(complex())がRのbaseに入っていることを初めて知る。。。
      • fieldsなるパッケージ(fields - tools for spatial data)があり、これも使えそう
      • "array(0,c(x,y,z))"にて、3次元データを持たせて、第3要素に色
    • ほとんどパクリのコードで
library(fields) # for tim.colors
library(caTools) # for write.gif
munit<-30 # 解像度指定 (30は重い、20くらいが適当)
m = munit^2 # grid size
C = complex( real=rep(seq(-1.8,0.6, length.out=m), each=m ), imag=rep(seq(-1.2,1.2, length.out=m), m ) )
C = matrix(C,m,m)

Z =0.1 # z(n+1)=z(n)^2+Cのz
K<-20 # 漸化式の「漸化」回数(gifアニメの枚数)
X = array(0, c(m,m,K))
for (k in 1:K) {
#X = array(0, c(m,m,20))
#for (k in 1:20) {
Z = Z^2+C
X[,,k] = exp(-abs(Z))
}

image(X[,,K], col=tim.colors(256)) # show final image in R
write.gif(X,"Mandelbrot.gif",col=tim.colors(256), delay=100)
  • 掲載図は、最終図 "image(X[,,k], col=tim.colors(256)) # show final image in R"の出力
  • 明日の絵は、動画 "write.gif(X,"Mandelbrot.gif",col=tim.colors(256), delay=100)" の出力