Julia Set in R

マンデルブロー集合(Mandelbrot Set)の定義を調べたついでにジュリア集合の定義を調べてみると、瓜二つであることが判明。マンデルブロー集合(Mandelbrot Set)に続き、ジュリア集合も R & ggplot2 /lattice で 2D/3D グラフを書いてみた。

R & Lattice/ggplot2

c = golden ratio

c=i

Definition
Julia 集合
z_{n+1} = z_n^2 + c, c in C(複素数)
で定義される漸化式で、n -> ∞ の時に収束するような漸化式の初期値 z_0 全体の集合。
複素数 c は固定。これを動かすことで様々な図形が浮かび上がる。

Mandelbrot 集合
z_{n+1} = z_n^2 + c, c in C(複素数), z_0 = 0
で定義される漸化式で、n -> ∞ の時に収束するような c 全体の集合。

Program
Mandelbrot 集合と Julia 集合の差異がわかるように、Mandelbrot 集合を書いた時のプログラムから必要最小限の修正しか行っていない。

library(ggplot2)
library(lattice)
c <-  1- ((1+sqrt(5))/2) # XXX
g <- function(x0, y0) {
  z <- complex(real=x0, imag=y0)
  for (i in 1:20) {
    z <- z^2 + c
  }
  exp(-(abs(z) ^ 2))
}
m <- 1200
X <- seq(-2,  2, length.out=m)
Y <- seq(-2, 2, length.out=m)
grid   <- expand.grid(x=X, y=Y)
grid$z <- g(grid$x, grid$y)
grid <- grid[grid$z != 0, ]
# lattice 3D plot
wireframe(z ~ x*y, grid, shade=TRUE)
# ggplot2 2D plot
ggplot(grid, aes(x=x, y=y, fill=z)) + geom_tile()
# ggplot2 2D plot(monochrome)
ggplot(grid, aes(x=x, y=y)) + geom_tile()

MEMO1
Mandelbrot 集合の時とは異なり、R^2 ではなく C^1 で計算。

MEMO2
カラフルなグラフの作成は left as an exercise

MEMO3
plyr を使うとgrid$z <- g(grid$x, grid$y)の箇所は grid <- ddply(grid, .(x, y), transform, z=g(x, y)) というように書ける

Advertisements
Tagged with: , , ,
Posted in algorithm, R

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Archives
  • RT @__apf__: How to write a research paper: a guide for software engineers & practitioners. docs.google.com/presentation/d… /cc @inwyrd 4 months ago
  • RT @HayatoChiba: 昔、自然と対話しながら数学に打ち込んだら何かを悟れるのではと思いたち、専門書1つだけ持ってパワースポットで名高い奈良の山奥に1週間籠ったことがある。しかし泊まった民宿にドカベンが全巻揃っていたため、水島新司と対話しただけで1週間過ぎた。 それ… 5 months ago
  • RT @googlecloud: Ever wonder what underwater fiber optic internet cables look like? Look no further than this deep dive w/ @NatAndLo: https… 5 months ago
  • @ijin UTC+01:00 な時間帯で生活しています、、、 10 months ago
  • RT @mattcutts: Google's world-class Site Reliability Engineering team wrote a new book: amazon.com/Site-Reliabili… It's about managing produc… 1 year ago
%d bloggers like this: