Quantcast
Channel: R-bloggers
Viewing all articles
Browse latest Browse all 12081

Chaotic Galaxies

$
0
0

(This article was first published on Ripples, and kindly contributed to R-bloggers)

Tell me, which side of the earth does this nose come from? Ha! (ALF)

Reading about strange attractors I came across with this book, where I discovered a way to generate two dimensional chaotic maps. The generic equation is pretty simple:

x_{n+1}= a_{1}+a_{2}x_{n}+a_{3}x_{n}^{2}+a_{4}x_{n}y_{n}+a_{5}y_{n}+a_{6}y_{n}^{2} y_{n+1}= a_{7}+a_{8}x_{n}+a_{9}x_{n}^{2}+a_{10}x_{n}y_{n}+a_{11}y_{n}+a_{12}y_{n}^{2}

I used it to generate these chaotic galaxies:

galaxy4galaxy3galaxy2galaxy1

Changing the vector of parameters you can obtain other galaxies. Do you want to try?

library(ggplot2)library(dplyr)#Generic functionattractor = function(x, y, z){  c(z[1]+z[2]*x+z[3]*x^2+ z[4]*x*y+ z[5]*y+ z[6]*y^2,     z[7]+z[8]*x+z[9]*x^2+z[10]*x*y+z[11]*y+z[12]*y^2)}#Function to iterate the generic function over the initial point c(0,0)galaxy= function(iter, z){  df=data.frame(x=0,y=0)  for (i in 2:iter) df[i,]=attractor(df[i-1, 1], df[i-1, 2], z)  df %>% rbind(data.frame(x=runif(iter/10, min(df$x), max(df$x)),                           y=runif(iter/10, min(df$y), max(df$y))))-> df  return(df)}opt=theme(legend.position="none",          panel.background = element_rect(fill="#00000c"),          plot.background = element_rect(fill="#00000c"),          panel.grid=element_blank(),          axis.ticks=element_blank(),          axis.title=element_blank(),          axis.text=element_blank(),          plot.margin=unit(c(-0.1,-0.1,-0.1,-0.1), "cm"))#First galaxyz1=c(1.0, -0.1, -0.2,  1.0,  0.3,  0.6,  0.0,  0.2, -0.6, -0.4, -0.6,  0.6)galaxy1=galaxy(iter=2400, z=z1) %>% ggplot(aes(x,y))+  geom_point(shape= 8, size=jitter(12, factor=4), color="#ffff99", alpha=jitter(.05, factor=2))+  geom_point(shape=16, size= jitter(4, factor=2), color="#ffff99", alpha=jitter(.05, factor=2))+  geom_point(shape=46, size= 0, color="#ffff00")+opt#Second galaxyz2=c(-1.1, -1.0,  0.4, -1.2, -0.7,  0.0, -0.7,  0.9,  0.3,  1.1, -0.2,  0.4)galaxy2=galaxy(iter=2400, z=z2) %>% ggplot(aes(x,y))+  geom_point(shape= 8, size=jitter(12, factor=4), color="#ffff99", alpha=jitter(.05, factor=2))+  geom_point(shape=16, size= jitter(4, factor=2), color="#ffff99", alpha=jitter(.05, factor=2))+  geom_point(shape=46, size= 0, color="#ffff00")+opt#Third galaxyz3=c(-0.3,  0.7,  0.7,  0.6,  0.0, -1.1,  0.2, -0.6, -0.1, -0.1,  0.4, -0.7)galaxy3=galaxy(iter=2400, z=z3) %>% ggplot(aes(x,y))+  geom_point(shape= 8, size=jitter(12, factor=4), color="#ffff99", alpha=jitter(.05, factor=2))+  geom_point(shape=16, size= jitter(4, factor=2), color="#ffff99", alpha=jitter(.05, factor=2))+  geom_point(shape=46, size= 0, color="#ffff00")+opt#Fourth galaxyz4=c(-1.2, -0.6, -0.5,  0.1, -0.7,  0.2, -0.9,  0.9,  0.1, -0.3, -0.9,  0.3)galaxy4=galaxy(iter=2400, z=z4) %>% ggplot(aes(x,y))+  geom_point(shape= 8, size=jitter(12, factor=4), color="#ffff99", alpha=jitter(.05, factor=2))+  geom_point(shape=16, size= jitter(4, factor=2), color="#ffff99", alpha=jitter(.05, factor=2))+  geom_point(shape=46, size= 0, color="#ffff00")+opt

To leave a comment for the author, please follow the link and comment on their blog: Ripples.

R-bloggers.com offers daily e-mail updates about R news and tutorials on topics such as: Data science, Big Data, R jobs, visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...


Viewing all articles
Browse latest Browse all 12081

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>