library(viridis)
library(scico)
options(repr.plot.width=10, repr.plot.height=10)
Loading required package: viridisLite
Mandelbrot Set#
mandelbrot_vectorized <- function(px = 0, py = 0, d = 2, size=1500, num_iter=100) {
# variables
x <- seq(px - d, px + d, length.out=size)
y <- seq(py - d, py + d, length.out=size)
c <- outer(x,y*1i,FUN="+")
z <- matrix(0.0, nrow=length(x), ncol=length(y))
k <- matrix(0.0, nrow=length(x), ncol=length(y))
m <- matrix(0.0, nrow=length(x), ncol=length(y))
for (rep in 1:num_iter) {
index <- which(Mod(z) < 2)
z[index] <- z[index]^2 + c[index]
k[index] <- k[index] + exp(-abs(z[index]))
}
k[index] = num_iter
return(k)
}
pal2 = c('#421e0f','#19071a','#09012f','#040449','#000764','#0c2c8a','#1852b1','#397dd1',
'#86b5e5','#d3ecf8','#f1e9bf','#f8c95f','#ffaa00','#cc8000','#995700','#6a3403','#421e0f')
clr = colorRampPalette(pal2)(300)
clr[300] = 'black'
display <- function(z) {
z[z==max(z)] = NA
z = z %% (length(pal2)*2)
z[is.na(z)] = length(pal2)*2 + 1
par(mar=c(0,0,0,0))
image(z,useRaster=TRUE, col=clr, axes=FALSE)
}