mandelbrot set

マンデルブロ博士曰く「マンデルブロ集合を描く時、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()

plot of chunk unnamed-chunk-1

何回で発散したか棒グラフ

barplot(table(dc), col = colors()[30 + as.numeric(names(table(dc)))])

plot of chunk unnamed-chunk-2

これはフラクタル?

barplot(dc)

plot of chunk unnamed-chunk-3

裏RjpWiki ダメ出し:初心者の手本になるようなプログラムを描こう