Fractals are structures that contain features at all scales, which means that they always reveal more features when zoomed into. Images of computer generated fractals, like the featured image, are something that almost everyone has seen. They can be made by different kinds of iterations of complex valued functions.

After just having quickly (in about half an hour) written an R-code that generates one kind of fractal, I’ll share it here:

n <- 500 # Number of pixels in x and y directions L <- 1 # Length of the sides of square in complex plane dx <- L/n # Spatial step size flg <- 0 # A flag that tells if divergence has been observed tres <- 0 # Variable for number of iterations before divergence iter <- 50 # Number of iterations per pixel bmap = matrix(nrow = n, ncol = n) # Bitmap for the fractal image for (j in c(1:n)) # Loops over the real and imaginary axis { for (k in c(1:n)) { z = dx*j-1.5 + (1i)*(k*dx-0.5) # Point z is chosen from the square flg <- 0 # Initially, the flag is zero tres <- 0 # Zero the treshold variable x <- 1 # Initial value used in iteration for (l in c(1:iter)) # Iterate { x = x^2 + z # n -> n+1 if ((flg == 0) && (Mod(x) > 8)) # If divergence seems to have taken place, record the number of iterations done and set flag to 1 { flg <- 1 tres <- l } } bmap[j,k] <- tres # Decide the color of pixel based on the treshold number of iterations } } jpeg(file = "fractal.jpg") # Save the bitmap image(bmap, zlim = c(1,30))

The image that the code creates looks like this.

Now, if you want, try to modify the values of the parameters in the code and see how it affects the output image file. Examples of modifications include changing the exponent 2 in the iterated function f(z) = z^2 + x to some other number (1.9, 2.1, 2.4 or something) or multiplying the z^2 with something other than 1.