マンデルブロ博士曰く「マンデルブロ集合を描く時、Z0の値は0にしておきます。そして、Cの値によって、代入を繰り返した結果が有限にとどまるか、あるいは無限遠に飛んでいくかを判断するのです。
もし、無限に代入を繰り返えしても無限遠に行かないようなら、そのCはマンデルブロ集合に属します。」
( ベノワ・B・マンデルブロ, リチャード・L・ハドソン著「禁断の市場」より)
mandelbrot <- function(step = 0.1, pch = 19, col = 30, n = 2) {
a <- outer(seq(-2, 1, step), seq(-1, 1, step), function(x, y) complex(r = x,
i = y))
a <<- a[Mod(a) <= 2] #絶対値2以下のものだけにする(あまり意味はないが)
d <- c()
dc <- c()
for (c in a) {
z <- 0
for (i in 1:100) {
z <- z^n + c
if (Mod(z) >= 2) {
d <- c(d, c)
dc <- c(dc, i) #何回目で発散したか
break
}
}
}
# 回数で色分け
plot(d, pch = pch, xlab = paste("step:", step, "n = ", n), xlim = c(-2,
1), ylim = c(-1, 1), col = colors()[dc + col])
dc <<- dc
}
mandelbrot()
何回で発散したか棒グラフ
barplot(table(dc), col = colors()[30 + as.numeric(names(table(dc)))])
これはフラクタル?
barplot(dc)