- こちらからの続き
- 開始の複素数zの値を少しずつ変えてマンデルブロがどうなるかをみる
- z=0から初めて、実軸上に動かしたり、|z|を固定して、zを複素平面上で回転させたり
library(fields) # for tim.colors
library(caTools) # for write.gif
munit<-10 # 解像度指定 (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)
L<-10
# 複素数zを0+0iから、1+0iに増やしたり
# |a+bi|一定で、偏角を0からpiに増やしたりする
#modul<-rep(0.2,L) # 偏角漸増(|a+bi|固定)
modul<-seq(from=0,to=1,length.out=L) # 実軸に長くする
#args<-seq(from=0,to=pi,length.out=L) # 偏角漸増)
args<-rep(4*pi/10,length.out=L) # 偏角固定
Y<-array(0,c(m,m,L))
for(i in 1:L){
Z =complex(m=modul[i],a=args[i]) # z(n+1)=z(n)^2+Cのz
K<-20
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
Y[,,i]<-X[,,K]
}
write.gif(Y,"Mandelbrot.gif",col=tim.colors(256), delay=100)