Variations of the Mandelbrot set

This short article by Dan Polansky explores variations of the Mandelbrot set. It asks: what happens if we change the exponent of the iterative function (away from 2) or if we let the orbits start from a fixed value different from 0?

The results are interesting, some of them bizarre. That a simple formula iterated could result in the curves of the Mandelbrot set is curious enough; the kind of deformations that result from changing these parameters perhaps even more so.

Let us recall: the function being iterated in the standard Mandelbrot set is f(x) = x ** 2 + c, where the iteration process starts at zero. We can instead take e.g. f(x) = x ** 2.1 + c, starting at 0.5 + 0.5i instead of 0.

Exercise: install PyPy and other requirements, copy the Python code below to a local file, and try your own hand in discovering interesting plots. Try different parameter values or even different iteration formulas.

On a subjective note, some people to whom I have shown the images asked whether it was something like Rorschach test. Indeed, one could perhaps produce a series of neo-Rorschach test using this technique.

Gallery
A gallery follows.

Normal: exponent 2, start from 0:

Exponent 0.5:

Exponent 1.0:

Exponent 1.5:

Exponent 1.9:

Exponent 2.1:

Exponent 3:

Exponent 4:

Exponent 2, starting from 0.5:

Exponent 2, starting from 0.5i:

Exponent 2, starting from 0.5 + 0.5i:

Exponent 2.1, starting from 0.5 + 0.5i:

Exponent 2, starting from 0.3 + 0.3i:

Exponent 2, starting from 0.7 + 0.7i:

Exponent 2, starting from 0.9 + 0.9i:

Part of the above images are covered in the animation File:Mandelbrot Set Animation 1280x720.gif.

Plotting code
The images above were plotted using the following Python code, run using PyPy JIT compiler rather than the standard CPython. For this code, the speed difference from using PyPy is huge; the speed with PyPy in plotting a 2000 x 2000 pixel image is pleasant, unlike with CPython. We make use of pure-Python PNG-creation library purepng. To be fair to CPython, the plotting could turn rather tolerable if it would use vectorization using numpy. The code is very straightforward, like code one might find written in Basic in a popular computing magazine decades ago.

Plotting prerequisites
One option for installing prerequisites is this:

1) Install PyPy

2) Install pip for PyPy: pypy -m ensurepip

3) Use pip to install purepng: pypy -m pip install purepng

Links:
 * python - Install pip on pypy, stackoverflow.com
 * purepng, pypi.org