This page is interactive, please scroll down and try out some of the exhibits. There is also a sister page on complexity in julia sets.
It is often remarked how amazing it is that the infinite complexity that appears to be embedded within the Mandelbrot set arises from iterating the rather simple equation z → z2 + c.
Here 'c' is the variable and 'z' starts at 0. They are both complex numbers.
If however you look at the algorithm that draws the contours it becomes a bit clearer. The colouring algorithm isn't fixed, but I tend to use the rather simple one, searching for the first 'i' value where zi2 ≥ 4.
zi is know as the modulus of zi and zi2 = xi2 + yi2.
We can now look at the set of contours where zi2 = 4. When i is 1, z1 = 02 + c = c, so the equation of the first contour is c2 = 4, or in cartesian coordinates: x2 + y2 = 4. This is simply a circle of radius 2 centred at (0,0).
The second contour is encountered when z22 = 4 where z2 = c2 + c, which, when expanded out in terms of x and y contains terms in the 4th power; (x2 + x − y2)2 + (2xy + y)2 = 4.
The first 7 terms in this sequence are:
z8 starts with c128 + 64c127 + 2016c126... and continues with terms like 2.6761185429789726e+21c81.
This term is actually beyond the ability of the Javascript to calculate using the built in numbers, to get it accurately I would need to implement some sort of unlimited precission maths library. So for practical terms the highest contour we can calculate explicitly is z7 = 2.
So, even after 6 iterations we have terms like c64 in our equation. When translated to x and y to calulate c2 = 4 we will have terms up to x128 and y128.
The exponent of the leading term, and hence the complexity, doubles after each iteration. After 100 iterations we will have terms of the order of x1030. Some of the more interesting paterns have iterations in the thousands.
So it's not surprising that the results are so complicated.
The rest of this page offers some interactive explorations of the behaviour of these functions.
Orbits show the evolution of a single point as the equation z → z2 + c is iterated. Click on the '?' for instructions.
Interesting examples are 0.387 + 0.2i which diverges after 417 iterations and 0.387 + 0.21i which converges on a 6‑cycle. For a really bizarre experience try the point 0.1 + 0.649. This eventually diverges after 57,206 iterations. This point is in one of the regions.
Also, try the circle animation with the default parameters, or view some videos generated by this page.
Real: Imaginary: Iterations: 

Animate: Real 2: Imaginary 2: Steps: 

Singular points can be found at locations where z → z2 + c = z
⇒ z2 − z + c = 0.
which can be solved as a simple quadratic equation giving:
z = 1/2 ± √ (1/4 − c) (remember though that 'c' can be complex).
If we iterate the generating equation twice we get z → (z2 + c)2 + c = z, which rearranges to
z4 + 2cz2 − z + c(c + 1) = 0.
This can be factorised as
(z2 − z − c)(z2 + z + (c + 1)) = 0.
The first term reproduces the singular points we've already found. The second term, z2 + z + (c + 1) = 0, gives us two new points:
z = 1/2 ± √ (3/4 − c)
These form a 2‑cycle. The point (0.9 + 0.2i) forms quite an interesting 3‑cycle which takes 606 iterations to converge.
C: Real: Imaginary: 
If you try with the default parameters you will see that there is a singular point at 0.10749911910390636+0.06369412456584582i. If you enter the same parmeters into the orbit calculator above you will see that the iteration actually converges on this point.
Generally this is unusual, most points (those outside the familliar Mandelbrot region) don't converge anywhere other than at infinity. If you try the orbit mapper below you can see the type of attractor the points inside the set converge on. The 'c' values that converge on a singular point are coloured in red.
If you iterate the equation three times you get an eighth degree polynomial in z.
z8 + 4cz6 + 2c(3c+1)z4 + 4c2(c+1)z2 − z + (c4 + 2c3 + c2 + c) = 0.
This can be factorised into two polynomials, the original quadratic that defines the two point attractors (z2 − z − c) and a sixth degree polynomial:
z6 + z5 + (3c+1)z4 + (2c+1)z3 + (3c2+2c+1)z2 + (c2+2c+1)z + (c3+2c2+c+1)
This sixth degree polynomial will define the two 3cycles, but there is no obvious factorisation into 2 cubics (or anything else).
The fourth polynomial will have 16 terms and be the product of the two quadratics from the 2‑cycle calculation and a twelfth degree polynomial defining three 4‑cycles.
The fifth will have 32 terms and be the product of the original quatratic and a 30th degree polynomial that will contain 6 five cycles.
In summary:
cycle  degree  facorisation  cycles 

1  2  2  2×1 
2  4  2×2  2×1, 1×2 
3  8  2×6  2×1, 2×3 
4  16  2×2×12  2×1, 1×2, 3×4 
5  32  2×30  2×1, 6×5 
6  64  2×2×6×54  2×1, 1×2, 2×3, 9×6 
7  128  2×126  2×1, 18×7 
8  256  2×2×12  2×1, 1×2, 3×4, 30×8 
9  512  2×6×504  2×1, 2×3, 56×9 
10  1024  2×2×30×990  2×1, 2×1, 6×5, 99×10 
This section shows areas of convergence onto different sized orbits.
Enter a 'c' value (real,imaginary) into the boxes below. This will be the centre of the diagram. "Width" determines the size of the window into the mandelbrot set that is explored and "Iterations" limits the number of calculations if the point doesn't diverge. Note: This can take a long time if you enter large limit values.
Real:
Imaginary:
Size:
Iterations: The "Real" and "Imaginary" boxes define the centre of the view. The "Size" button defines how large the window is, the range will be centre ± (size÷2). There is a WebGL version of this view. It is a lot faster but suffers from the low precission of the floating point supported by the graphics card. It does however allow you to explore other equations and positions off the Mandelbrot plane. 
This section shows how fast points converge on the singlular points for a given 'c' value. It is not what I expected, it appears that the 'z' values that converge fastest on the singular points are usually nowhere near the points themselves. When the 'z' values do converge on a point they usually do it in a very gradual spiral.
Enter a 'c' value (real,imaginary) into the boxes below.
Real:
Imaginary:
This view shows how fast the 'z' values converge on a particular singular attactor for a given 'c' value. The point attactors are shown as red and green circles, the yellow circles show the 2‑cycle attractor. The 'z' values that move towards a point attractor are shown in red and green, the intensity showing increasing attractiveness. For most 'c' values the areas that are attracted to the points (red and green) are separate from the attactors themselves, and the iteration will diverge or converge somewhere else. If an attactive point and the 'c' value both fall within a zone of attraction, like the point 0.15 + 0.15i, for instance, then the iteration will converge on this point. Enter the 'c' value into the text entry boxes and click go. Challenge, find a starting point that converges on the red attractor. The map is centered at 0 and extends to ± 2 in the real and imaginary directions. 
This section shows how fast points converge on the 2‑cycles.
Enter a 'c' value (real,imaginary) into the boxes below.
Real:
Imaginary:
This view shows how fast the 'z' values converge on the 1 and 2 cycle attractors after two iterations of the equation. The point attactors are shown as red and green circles, the yellow circles show the 2‑cycle attractor. The 'z' values that move towards a point attractor are shown in red and green, points that are drawn towards the 2‑cycle are shown in blue, the intensity showing increasing attractiveness. Enter the 'c' value into the text entry boxes and click go. The map is centered at 0 and extends to ± 2 in the real and imaginary directions. 
This section shows how points converge on the 1 and 2 cycles after a number of iterations.
Enter a 'c' value (real,imaginary) into the boxes below.
Real:
Imaginary:
Iterations: This view shows how fast the 'z' values converge on the 1 and 2 cycle attractors after N iterations of the equation. The point attactors are shown as red and green circles, the yellow circles show the 2‑cycle attractor. The 'z' values that move towards a point attractor are shown in red and green, points that are drawns towards the 2‑cycle are shown in blue, the intensity showing increasing attractiveness. Enter the 'c' value into the text entry boxes and click go. The map is centered at 0 and extends to ± 2 in the real and imaginary directions. 
Enter a 'c' value (real,imaginary) into the "Real" and "Imaginary" boxes. "Iterations" limits the number of calculations performed if the point doesn't diverge or converge on a cycle.
The buttons perform the following actions.
Orbit  Draws the orbit points superimposed on the z < 2 circle. Here the starting point is shown in blue, the singular points in red and green, the 2cycle in yellow and the orbit in orange/red. 
Cycle  Displays the reason an iteration has completed, and for cycles an image of the cycle. 
Line  This will start an animation of the orbits shown by the "Orbit" button. The animation will show the evolution as the 'c' value moves from the first point to the second. The number of points is defined by the steps parameter. 
Circle  This will start an animation of the orbits shown by the "Orbit" button. The animation will show the evolution as the 'c' starts at the second point and the orbits the first point at a constant distance. The number of points is defined by the steps parameter. 
(c) John Whitehouse 20162017