# [R] Fractals in R and having fun! (and more persp and color)

Martin Maechler maechler at stat.math.ethz.ch
Thu Sep 18 14:48:26 CEST 2003

```>>>>> "Mario" == Mario ??? <ucgamdo at ucl.ac.uk>
>>>>>     on Wed, 17 Sep 2003 12:45:51 +0100 writes:

Mario> Well, I started playing with fractals in R, and wrote
Mario> a function to generate de Mandelbrot set, which might
Mario> be of interest to some people

Mario> ###################################################################
Mario> # Mandelbrot set
Mario> ###################################################################

Mario> mandelbrot <- function(x = c(-3.0, 1.0),   # x coordinates
Mario>                        y = c(-1.8, 1.8),   # y coordinates
Mario>                        b = .05,            # by 'steps'
Mario>                        iter = 20)          # maximum number of iterations

Mario>     <..................>
Mario>     <..................>
Mario>     <..................>

Well, only a bit more than year ago I had posted my version of
mandelbrot() and a drawing function, see

http://finzi.psych.upenn.edu/R/Rhelp02a/archive/5898.html

[ I have a slightly updated version of the R code, that is now
available as ftp://stat.ethz.ch/U/maechler/R/Mandelbrot.R
]

which is an order of magnitude more efficient than yours (22 x
faster for your "b = 0.01", *1), *2)
and with an iterImage() function for drawing its result in
several (simple) color schemes.
I agree that the proper solution would *definitely* use C code!

Your idea of using persp() -- while seen frequently in fractal books,
is new ``for R'' however, and nice!  Thank you.

Regards,
Martin

*1) mainly because I only have the iteration loop
and do the rest vectorized, but also because I have a check
for symmetry and make use of it when appropriate

*2) For speed comparison, note that I use 10 x more iterations
and a much higher resolution by default

*3) When I do the comparison, I see that your function's result
slightly differs from mine -- not for the Mandelbrot set
itself, but for the very ``outer points'' (the dark orange
ones in the image plot). Your result is
asymmetric and hence can't be quite correct.

```