Initial image of a Mandelbrot set zoom sequence with a continuously coloured environment
Mandelbrot animation based on a static number of iterations per pixel
Mandelbrot set detail
The Mandelbrot set is the set of complex numbers 'c' for which the sequence ( c , c² + c , (c²+c)² + c , ((c²+c)²+c)² + c , (((c²+c)²+c)²+c)² + c , ...) does not approach infinity. The set is closely related to Julia sets (which include similarly complex shapes) and is named after the mathematician Benoit Mandelbrot, who studied and popularized it. Mandelbrot set images are made by sampling complex numbers and determining for each whether the result tends towards infinity when a particular mathematical operation is iterated on it. Treating the real and imaginary parts of each number as image coordinates, pixels are colored according to how rapidly the sequence diverges, if at all.
More precisely, the Mandelbrot set is the set of values of c in the complex plane for which the orbit of 0 under iteration of the complex quadratic polynomial

z_{n+1}=z_n^2+c
remains bounded.^{[1]} That is, a complex number c is part of the Mandelbrot set if, when starting with z_{0} = 0 and applying the iteration repeatedly, the absolute value of z_{n} remains bounded however large n gets.
For example, letting c = 1 gives the sequence 0, 1, 2, 5, 26,…, which tends to infinity. As this sequence is unbounded, 1 is not an element of the Mandelbrot set. On the other hand, c = −1 gives the sequence 0, −1, 0, −1, 0,..., which is bounded, and so −1 belongs to the Mandelbrot set.
Images of the Mandelbrot set display an elaborate boundary that reveals progressively everfiner recursive detail at increasing magnifications. The "style" of this repeating detail depends on the region of the set being examined. The set's boundary also incorporates smaller versions of the main shape, so the fractal property of selfsimilarity applies to the entire set, and not just to its parts.
The Mandelbrot set has become popular outside mathematics both for its aesthetic appeal and as an example of a complex structure arising from the application of simple rules, and is one of the bestknown examples of mathematical visualization.
Contents

History 1

Formal definition 2

Basic properties 3

Other properties 4

Main cardioid and period bulbs 4.1

Hyperbolic components 4.2

Local connectivity 4.3

Selfsimilarity 4.4

Further results 4.5

Relationship with Julia sets 4.6

Geometry 5

Image gallery of a zoom sequence 5.1

Generalizations 6

Other, nonanalytic, mappings 7

Computer drawings 8

Escape time algorithm 8.1

Histogram coloring 8.1.1

Continuous (smooth) coloring 8.1.2

Distance estimates 8.2

Exterior distance estimation 8.2.1

Interior distance estimation 8.2.2

Optimizations 8.3

Cardioid / bulb checking 8.3.1

Periodicity checking 8.3.2

Border tracing / edge checking 8.3.3

Perturbation theory and series approximation 8.3.4

GIF zoom sequence 9

Popular culture 10

See also 11

References 12

Further reading 13

External links 14
History
The first picture of the Mandelbrot set, by
Robert W. Brooks and Peter Matelski in 1978
The Mandelbrot set has its place in complex dynamics, a field first investigated by the French mathematicians Pierre Fatou and Gaston Julia at the beginning of the 20th century. The first pictures of this fractal were drawn in 1978 by Robert W. Brooks and Peter Matelski as part of a study of Kleinian groups.^{[2]} On 1 March 1980, at IBM's Thomas J. Watson Research Center in Yorktown, Heights, New York, Benoit Mandelbrot first saw a visualization of the set.^{[3]}
Mandelbrot studied the parameter space of quadratic polynomials in an article that appeared in 1980.^{[4]} The mathematical study of the Mandelbrot set really began with work by the mathematicians Adrien Douady and John H. Hubbard,^{[5]} who established many of its fundamental properties and named the set in honor of Mandelbrot.
The mathematicians HeinzOtto Peitgen and Peter Richter became well known for promoting the set with photographs, books,^{[6]} and an internationally touring exhibit of the German GoetheInstitut.^{[7]}^{[8]}
The cover article of the August 1985 Scientific American introduced the algorithm for computing the Mandelbrot set to a wide audience. The cover featured an image created by Peitgen, et al.^{[9]}^{[10]}
The work of Douady and Hubbard coincided with a huge increase in interest in complex dynamics and abstract mathematics, and the study of the Mandelbrot set has been a centerpiece of this field ever since. An exhaustive list of all the mathematicians who have contributed to the understanding of this set since then is beyond the scope of this article, but such a list would notably include Mikhail Lyubich,^{[11]}^{[12]} Curt McMullen, John Milnor, Mitsuhiro Shishikura, and JeanChristophe Yoccoz.
Formal definition
The Mandelbrot set M is defined by a family of complex quadratic polynomials

P_c:\mathbb C\to\mathbb C
given by

P_c: z\mapsto z^2 + c,
where c is a complex parameter. For each c, one considers the behavior of the sequence

(0, P_c(0), P_c(P_c(0)), P_c(P_c(P_c(0))), \ldots)
obtained by iterating P_c(z) starting at critical point z = 0, which either escapes to infinity or stays within a disk of some finite radius. The Mandelbrot set is defined as the set of all points c such that the above sequence does not escape to infinity.
A mathematician's depiction of the Mandelbrot set M. A point c is coloured black if it belongs to the set, and white if not. Re[c] and Im[c] denote the real and imaginary parts of c, respectively.
More formally, if P_c^n(z) denotes the nth iterate of P_c(z) (i.e. P_c(z) composed with itself n times), the Mandelbrot set is the subset of the complex plane given by

M = \left\{c\in \mathbb C : \exists s\in \mathbb R, \forall n\in \mathbb N, P_c^n(0) \le s \right\}.
As explained below, it is in fact possible to simplify this definition by taking s=2.
Mathematically, the Mandelbrot set is just a set of complex numbers. A given complex number c either belongs to M or it does not. A picture of the Mandelbrot set can be made by colouring all the points c that belong to M black, and all other points white. The more colourful pictures usually seen are generated by colouring points not in the set according to which term in the sequence P_c^n(0) is the first term with an absolute value greater than a certain cutoff value, usually 2. See the section on computer drawings below for more details.
The Mandelbrot set can also be defined as the connectedness locus of the family of polynomials P_c(z). That is, it is the subset of the complex plane consisting of those parameters c for which the Julia set of P_c is connected.
Basic properties
The Mandelbrot set is a compact set, contained in the closed disk of radius 2 around the origin. In fact, a point c belongs to the Mandelbrot set if and only if

P_c^n(0)\leq 2 for all n\geq 0.
In other words, if the absolute value of P_c^n(0) ever becomes larger than 2, the sequence will escape to infinity.
The intersection of M with the real axis is precisely the interval [2, 0.25]. The parameters along this interval can be put in onetoone correspondence with those of the real logistic family,

z\mapsto \lambda z(1z),\quad \lambda\in[1,4].\,
The correspondence is given by

c = \frac\lambda2\left(1\frac\lambda2\right).
In fact, this gives a correspondence between the entire parameter space of the logistic family and that of the Mandelbrot set.
As of October 2012, the area of the Mandelbrot is estimated to be 1.5065918849 ± 0.0000000028.^{[13]}
Douady and Hubbard have shown that the Mandelbrot set is connected. In fact, they constructed an explicit conformal isomorphism between the complement of the Mandelbrot set and the complement of the closed unit disk. Mandelbrot had originally conjectured that the Mandelbrot set is disconnected. This conjecture was based on computer pictures generated by programs that are unable to detect the thin filaments connecting different parts of M. Upon further experiments, he revised his conjecture, deciding that M should be connected.
The dynamical formula for the uniformisation of the complement of the Mandelbrot set, arising from Douady and Hubbard's proof of the connectedness of M, gives rise to external rays of the Mandelbrot set. These rays can be used to study the Mandelbrot set in combinatorial terms and form the backbone of the Yoccoz parapuzzle.^{[14]}
The boundary of the Mandelbrot set is exactly the bifurcation locus of the quadratic family; that is, the set of parameters c for which the dynamics changes abruptly under small changes of c. It can be constructed as the limit set of a sequence of plane algebraic curves, the Mandelbrot curves, of the general type known as polynomial lemniscates. The Mandelbrot curves are defined by setting p_{0}=z, p_{n+1}=p_{n}^{2}+z, and then interpreting the set of points p_{n}(z)=2 in the complex plane as a curve in the real Cartesian plane of degree 2^{n+1} in x and y.
Other properties
Main cardioid and period bulbs
Periods of hyperbolic components
Upon looking at a picture of the Mandelbrot set, one immediately notices the large cardioidshaped region in the center. This main cardioid is the region of parameters c for which P_c has an attracting fixed point. It consists of all parameters of the form

c = \frac\mu2\left(1\frac\mu2\right)
for some \mu in the open unit disk.
To the left of the main cardioid, attached to it at the point c=3/4, a circularshaped bulb is visible. This bulb consists of those parameters c for which P_c has an attracting cycle of period 2. This set of parameters is an actual circle, namely that of radius 1/4 around 1.
There are infinitely many other bulbs tangent to the main cardioid: for every rational number \textstyle\frac{p}{q}, with p and q coprime, there is such a bulb that is tangent at the parameter

c_{\frac{p}{q}} = \frac{e^{2\pi i\frac pq}}2\left(1\frac{e^{2\pi i\frac pq}}2\right).
Attracting cycle in 2/5bulb plotted over
Julia set (animation)
This bulb is called the
\textstyle\frac{p}{q}bulb of the Mandelbrot set. It consists of parameters that have an attracting cycle of period
q and combinatorial rotation number
\textstyle\frac{p}{q}. More precisely, the
q periodic
Fatou components containing the attracting cycle all touch at a common point (commonly called the
\alphafixed point). If we label these components
U_0,\dots,U_{q1} in counterclockwise orientation, then
P_c maps the component
U_j to the component
U_{j+p\,(\operatorname{mod} q)}.
Attracting cycles and
Julia sets for parameters in the 1/2, 3/7, 2/5, 1/3, 1/4, and 1/5 bulbs
Cycle periods and antennae
The change of behavior occurring at c_{\frac{p}{q}} is known as a bifurcation: the attracting fixed point "collides" with a repelling period qcycle. As we pass through the bifurcation parameter into the \textstyle\frac{p}{q}bulb, the attracting fixed point turns into a repelling fixed point (the \alphafixed point), and the period qcycle becomes attracting.
Hyperbolic components
All the bulbs we encountered in the previous section were interior components of the Mandelbrot set in which the maps P_c have an attracting periodic cycle. Such components are called hyperbolic components.
It is conjectured that these are the only interior regions of M. This problem, known as density of hyperbolicity, may be the most important open problem in the field of complex dynamics. Hypothetical nonhyperbolic components of the Mandelbrot set are often referred to as "queer" or ghost components.^{[15]}^{[16]} For real quadratic polynomials, this question was answered positively in the 1990s independently by Lyubich and by Graczyk and Świątek. (Note that hyperbolic components intersecting the real axis correspond exactly to periodic windows in the Feigenbaum diagram. So this result states that such windows exist near every parameter in the diagram.)
Not every hyperbolic component can be reached by a sequence of direct bifurcations from the main cardioid of the Mandelbrot set. However, such a component can be reached by a sequence of direct bifurcations from the main cardioid of a little Mandelbrot copy (see below).
Each of the hyperbolic components has a , namely the point c such that the inner Fatou domain for P_c(z) has a superattracting cycle (the attraction is infinite). This means that the cycle contains the critical point 0, so that 0 is iterated back to itself after some iterations. We therefore have that P_c^{n}(0) = 0 for some n. If we call this polynomial Q^{n}(c) (letting it depend on c instead of z), we have that Q^{n+1}(c) = Q^{n}(c)^{2} + c and that the degree of Q^{n}(c) is 2^{n1}. We can therefore construct the centres of the hyperbolic components, by successive solvation of the equations Q^{n}(c) = 0, n = 1, 2, 3, .... Note that for each step, we get just as many new centres as we have found so far.
Local connectivity
Topological model of Mandelbrot set without mini Mandelbrot sets and Misiurewicz points (Cactus model)
Thurston model of Mandelbrot set (abstract Mandelbrot set)
It is conjectured that the Mandelbrot set is locally connected. This famous conjecture is known as MLC (for Mandelbrot Locally Connected). By the work of Adrien Douady and John H. Hubbard, this conjecture would result in a simple abstract "pinched disk" model of the Mandelbrot set. In particular, it would imply the important hyperbolicity conjecture mentioned above.
The work of JeanChristophe Yoccoz established local connectivity of the Mandelbrot set at all finitely renormalizable parameters; that is, roughly speaking those contained only in finitely many small Mandelbrot copies. Since then, local connectivity has been proved at many other points of M, but the full conjecture is still open.
Selfsimilarity
Self similarity in the Mandelbrot set shown by zooming in on a round feature while panning in the negative
x direction. The display center pans from (−1, 0) to (−1.31, 0) while the view magnifies from 0.5 × 0.5 to 0.12 × 0.12 to approximate the
Feigenbaum ratio \delta.
Selfsimilarity around Misiurewicz point −0.1011 + 0.9563i.
The Mandelbrot set is
selfsimilar under magnification in the neighborhoods of the
Misiurewicz points. It is also conjectured to be selfsimilar around generalized
Feigenbaum points (e.g., −1.401155 or −0.1528 + 1.0397
i), in the sense of converging to a limit set.
^{[17]}^{[18]}
Quasiselfsimilarity in the Mandelbrot set
The Mandelbrot set in general is not strictly selfsimilar but it is quasiselfsimilar, as small slightly different versions of itself can be found at arbitrarily small scales.
The little copies of the Mandelbrot set are all slightly different, mostly because of the thin threads connecting them to the main body of the set.
Further results
The Hausdorff dimension of the boundary of the Mandelbrot set equals 2 as determined by a result of Mitsuhiro Shishikura.^{[19]} It is not known whether the boundary of the Mandelbrot set has positive planar Lebesgue measure.
In the BlumShubSmale model of real computation, the Mandelbrot set is not computable, but its complement is computably enumerable. However, many simple objects (e.g., the graph of exponentiation) are also not computable in the BSS model. At present it is unknown whether the Mandelbrot set is computable in models of real computation based on computable analysis, which correspond more closely to the intuitive notion of "plotting the set by a computer." Hertling has shown that the Mandelbrot set is computable in this model if the hyperbolicity conjecture is true.
The occurrence of π in the Mandelbrot set was discovered by David Boll in 1991.^{[20]} He found that when looking at the pinch points of the Mandelbrot set, the number of iterations needed for the point (.75,ε) before escaping, multiplied by ε, was equal to π. Based on this initial finding, Aaron Klebanoff developed a further test near another pinch point (.25+ε,0) in the Mandelbrot set and found that the number of iterations times the square root of ε was equal to π.
A zoom into the Mandelbrot set illustrating a Julia "island" and the corresponding Julia set of the form f_c(z) = z^2 + c\,, in which c is the centre of the Mandelbrot set zoom in.
Relationship with Julia sets
As a consequence of the definition of the Mandelbrot set, there is a close correspondence between the geometry of the Mandelbrot set at a given point and the structure of the corresponding Julia set. For instance, a point is in the Mandelbrot set exactly when the corresponding Julia set is connected.
This principle is exploited in virtually all deep results on the Mandelbrot set. For example, Shishikura proves that, for a dense set of parameters in the boundary of the Mandelbrot set, the Julia set has Hausdorff dimension two, and then transfers this information to the parameter plane. Similarly, Yoccoz first proved the local connectivity of Julia sets, before establishing it for the Mandelbrot set at the corresponding parameters. Adrien Douady phrases this principle as:
Plough in the dynamical plane, and harvest in parameter space.
Geometry
Components on main cardioid for periods 814 with antennae 713
For every rational number \textstyle\frac{p}{q}, where p and q are relatively prime, a hyperbolic component of period q bifurcates from the main cardioid. The part of the Mandelbrot set connected to the main cardioid at this bifurcation point is called the p /qlimb. Computer experiments suggest that the diameter of the limb tends to zero like \textstyle\frac{1}{q^2}. The best current estimate known is the Yoccozinequality, which states that the size tends to zero like \textstyle\frac{1}{q}.
A periodq limb will have q − 1 "antennae" at the top of its limb. We can thus determine the period of a given bulb by counting these antennas.
In an attempt to demonstrate that the thickness of the p/qlimb is zero, David Boll carried out a computer experiment in 1991, where he computed the number of iterations required for the series to converge for z = \textstyle\frac{3}{4} + i\epsilon (\textstyle\frac{3}{4} being the location thereof). As the series doesn't converge for the exact value of z = \textstyle\frac{3}{4}, the number of iterations required increases with a small ε. It turns out that multiplying the value of ε with the number of iterations required yields an approximation of π that becomes better the smaller ε. For example, for ε = 0.0000001 the number of iterations is 31415928 and the product is 3.1415928.^{[21]}
Image gallery of a zoom sequence
The Mandelbrot set shows more intricate detail the closer one looks or magnifies the image, usually called "zooming in". The following example of an image sequence zooming to a selected c value gives an impression of the infinite richness of different geometrical structures, and explains some of their typical rules.
The magnification of the last image relative to the first one is about 10,000,000,000 to 1. Relating to an ordinary monitor, it represents a section of a Mandelbrot set with a diameter of 4 million kilometres. Its border would show an astronomical number of different fractal structures.

Start. Mandelbrot set with continuously coloured environment.

Gap between the "head" and the "body", also called the "seahorse valley"

On the left doublespirals; on the right "seahorses"

The seahorse "body" is composed by 25 "spokes" consisting of two groups of 12 "spokes" each and one "spoke" connecting to the main cardioid. These two groups can be attributed by some kind of metamorphosis to the two "fingers" of the "upper hand" of the Mandelbrot set; therefore, the number of "spokes" increases from one "seahorse" to the next by 2; the "hub" is a socalled Misiurewicz point. Between the "upper part of the body" and the "tail" a distorted small copy of the Mandelbrot set called satellite may be recognized.

The central endpoint of the "seahorse tail" is also a Misiurewicz point.

Part of the "tail" — there is only one path consisting of the thin structures that lead through the whole "tail". This zigzag path passes the "hubs" of the large objects with 25 "spokes" at the inner and outer border of the "tail"; thus the Mandelbrot set is a simply connected set, which means there are no islands and no loop roads around a hole.

Satellite. The two "seahorse tails" are the beginning of a series of concentric crowns with the satellite in the center. Open this location in an interactive viewer.

Each of these crowns consists of similar "seahorse tails"; their number increases with powers of 2, a typical phenomenon in the environment of satellites. The unique path to the spiral center passes the satellite from the groove of the cardioid to the top of the "antenna" on the "head".

"Antenna" of the satellite. Several satellites of second order may be recognized.

The "seahorse valley" of the satellite. All the structures from the start of the zoom reappear.

Doublespirals and "seahorses"  unlike the 2nd image from the start they have appendices consisting of structures like "seahorse tails"; this demonstrates the typical linking of n+1 different structures in the environment of satellites of the order n, here for the simplest case n=1.

Doublespirals with satellites of second order  analog to the "seahorses" the doublespirals may be interpreted as a metamorphosis of the "antenna".

In the outer part of the appendices islands of structures may be recognized; they have a shape like Julia sets J_{c}; the largest of them may be found in the center of the "doublehook" on the right side.

Part of the "doublehook"

The islands above seem to consist of infinitely many parts like Cantor sets, as is actually the case for the corresponding Julia set J_{c}. However they are connected by tiny structures so that the whole represents a simply connected set. The tiny structures meet each other at a satellite in the center that is too small to be recognized at this magnification. The value of c for the corresponding J_{c} is not that of the image center but, relative to the main body of the Mandelbrot set, has the same position as the center of this image relative to the satellite shown in the 6th zoom step.
Generalizations
Animation of the set for d from 2 to 5 (see the generalized formula)
Animation of the set for d from 0.05 to 2
Multibrot sets are bounded sets found in the complex plane for members of the general monic univariate polynomial family of recursions

z \mapsto z^d + c.\
For integer d, these sets are connectedness loci for the Julia sets built from the same formula. The full cubic connectedness map has also been studied; here one considers the twoparameter recursion z \mapsto z^3 + 3kz + c , whose two critical points are the complex square roots of the parameter k. A point is in the map if either critical point is stable.^{[22]}
For general families of holomorphic functions, the boundary of the Mandelbrot set generalizes to the bifurcation locus, which is a natural object to study even when the connectedness locus is not useful.
Other, nonanalytic, mappings
Of particular interest is the tricorn fractal, the connectedness locus of the antiholomorphic family

z \mapsto \bar{z}^2 + c\, .
The tricorn (also sometimes called the Mandelbar set) was encountered by Milnor in his study of parameter slices of real cubic polynomials. It is not locally connected. This property is inherited by the connectedness locus of real cubic polynomials.
Another nonanalytic generalization is the Burning Ship fractal, which is obtained by iterating the mapping

z \mapsto (\Re \left(z\right)+i\Im \left(z\right))^2 + c\, .
The Multibrot set is obtained by varying the value of the exponent d. The article has a video that shows the development from d = 0 to 7 at which point there are 6 i.e. (d  1) lobes around the perimeter. A similar development with negative exponents results in (1  d) clefts on the inside of a ring.
Computer drawings
Still image of on 0.001643721971153  0.822467633298876i
There are many programs used to generate the Mandelbrot set and other fractals, some of which are described in fractalgenerating software. These programs use a variety of algorithms to determine the color of individual pixels and achieve efficient computation.
Escape time algorithm
The simplest algorithm for generating a representation of the Mandelbrot set is known as the "escape time" algorithm. A repeating calculation is performed for each x, y point in the plot area and based on the behavior of that calculation, a color is chosen for that pixel.
The x and y locations of each point are used as starting values in a repeating, or iterating calculation (described in detail below). The result of each iteration is used as the starting values for the next. The values are checked during each iteration to see if they have reached a critical 'escape' condition or 'bailout'. If that condition is reached, the calculation is stopped, the pixel is drawn, and the next x, y point is examined. For some starting values, escape occurs quickly, after only a small number of iterations. For starting values very close to but not in the set, it may take hundreds or thousands of iterations to escape. For values within the Mandelbrot set, escape will never occur. The programmer or user must choose how much iteration, or 'depth,' they wish to examine. The higher the maximum number of iterations, the more detail and subtlety emerge in the final image, but the longer time it will take to calculate the fractal image.
Escape conditions can be simple or complex. Because no complex number with a real or imaginary part greater than 2 can be part of the set, a common bailout is to escape when either coefficient exceeds 2. A more computationally complex method that detects escapes sooner, is to compute distance from the origin using the Pythagorean theorem, i.e., to determine the absolute value, or modulus, of the complex number. If this value exceeds two, the point has reached escape. More computationally intensive rendering variations include the Buddhabrot method, which finds escaping points and plots their iterated coordinates.
The color of each point represents how quickly the values reached the escape point. Often black is used to show values that fail to escape before the iteration limit, and gradually brighter colours are used for points that escape. This gives a visual representation of how many cycles were required before reaching the escape condition.
To render such an image, the region of the complex plane we are considering is subdivided into a certain number of pixels. To color any such pixel, let c be the midpoint of that pixel. We now iterate the critical point 0 under P_c, checking at each step whether the orbit point has modulus larger than 2. When this is the case, we know that c does not belong to the Mandelbrot set, and we color our pixel according to the number of iterations used to find out. Otherwise, we keep iterating up to a fixed number of steps, after which we decide that our parameter is "probably" in the Mandelbrot set, or at least very close to it, and color the pixel black.
In pseudocode, this algorithm would look as follows. The algorithm does not use complex numbers, and manually simulates complex number operations using two real numbers, for those who do not have a complex data type. The program may be simplified if the programming language includes complex data type operations.
For each pixel (Px, Py) on the screen, do:
{
x0 = scaled x coordinate of pixel (scaled to lie in the Mandelbrot X scale (2.5, 1))
y0 = scaled y coordinate of pixel (scaled to lie in the Mandelbrot Y scale (1, 1))
x = 0.0
y = 0.0
iteration = 0
max_iteration = 1000
while ( x*x + y*y < 2*2 AND iteration < max_iteration )
{
xtemp = x*x  y*y + x0
y = 2*x*y + y0
x = xtemp
iteration = iteration + 1
}
color = palette[iteration]
plot(Px, Py, color)
}
where, relating the pseudocode to c, z and P_c:

z = x + iy\

z^2 = x^2 +i2xy  y^2\

c = x_0 + i y_0\
and so, as can be seen in the pseudocode in the computation of x and y:

x = \mathop{\mathrm{Re}}(z^2+c) = x^2y^2 + x_0 and y = \mathop{\mathrm{Im}}(z^2+c) = 2xy + y_0.\
To get colorful images of the set, the assignment of a color to each value of the number of executed iterations can be made using one of a variety of functions (linear, exponential, etc.). One practical way, without slowing down calculations, is to use the number of executed iterations as an entry to a lookup color palette table initialized at startup. If the color table has, for instance, 500 entries, then the color selection is n mod 500, where n is the number of iterations.
Histogram coloring
A more accurate coloring method involves using a histogram, which keeps track of how many pixels reached each iteration number, from 1 to n. This method will equally distribute colors to the same overall area, and, importantly, is independent of the maximum number of iterations chosen.
First, create an array of size n. For each pixel, which took i iterations, find the ith element and increment it. This creates the histogram during computation of the image. Then, when finished, perform a second "rendering" pass over each pixel, utilizing the completed histogram. If you had a continuous color palette ranging from [0.0, 1.0], you could find the normalized color of each pixel as follows, using the variables from above.
total = 0
for (i = 0; i < max_iterations; i += 1)
{
total += histogram[i]
}
hue = 0.0;
for (i = 0; i < iteration; i += 1)
{
hue += histogram[i] / total // Must be floatingpoint division.
}
color = palette[hue]
This method may be combined with the smooth coloring method below for more aesthetically pleasing images.
Continuous (smooth) coloring
The Escape Time Algorithm is popular for its simplicity. However, it creates bands of color, which, as a type of aliasing, can detract from an image's aesthetic value. This can be improved using an algorithm known as "Normalized Iteration Count",^{[23]}^{[24]} which provides a smooth transition of colors between iterations. The algorithm associates a real number \nu with each value of z by using the connection of the iteration number with the potential function. This function is given by

\phi(z) = \lim_{n \to \infty} (\logz_n/P^{n}),\,
where z_{n} is the value after n iterations and P is the power for which z is raised to in the Mandelbrot set equation (z_{n+1} = z_{}n^{P} + c, P is generally 2).
If we choose a large bailout radius N (e.g., 10^{100}), we have that

\logz_n/P^{n} = \log(N)/P^{\nu(z)},\,
for some real number \nu(z), and this is

\nu(z) = n  \log_P (\logz_n/\log(N)),\,
and as n is the first iteration number such that z_{n} > N, the number we subtract from n is in the interval [0, 1).
For the colouring we must have a cyclic scale of colours (constructed mathematically, for instance) and containing H colours numbered from 0 to H − 1 (H = 500, for instance). We multiply the real number \nu(z) by a fixed real number determining the density of the colours in the picture, and take the integral part of this number modulo H, and use it to look up the corresponding color in the color table.
For example, modifying the above pseudocode and also using the concept of linear interpolation would yield
For each pixel (Px, Py) on the screen, do:
{
x0 = scaled x coordinate of pixel (scaled to lie in the Mandelbrot X scale (2.5, 1))
y0 = scaled y coordinate of pixel (scaled to lie in the Mandelbrot Y scale (1, 1))
x = 0.0
y = 0.0
iteration = 0
max_iteration = 1000
// Here N=2^8 is chosen as a reasonable bailout radius.
while ( x*x + y*y < (1 << 16) AND iteration < max_iteration ) {
xtemp = x*x  y*y + x0
y = 2*x*y + y0
x = xtemp
iteration = iteration + 1
}
// Used to avoid floating point issues with points inside the set.
if ( iteration < max_iteration ) {
zn = sqrt( x*x + y*y )
nu = log( log(zn) / log(2) ) / log(2)
// Rearranging the potential function.
// Could remove the sqrt and multiply log(zn) by 1/2, but less clear.
// Dividing log(zn) by log(2) instead of log(N = 1<<8)
// because we want the entire palette to range from the
// center to radius 2, NOT our bailout radius.
iteration = iteration + 1  nu
}
color1 = palette[floor(iteration)]
color2 = palette[floor(iteration) + 1]
// iteration % 1 = fractional part of iteration.
color = linear_interpolate(color1, color2, iteration % 1)
plot(Px, Py, color)
}
Distance estimates
One can compute the distance from point c (in exterior or interior) to nearest point on the boundary of the Mandelbrot set.^{[25]}
Exterior distance estimation
The proof of the connectedness of the Mandelbrot set in fact gives a formula for the uniformizing map of the complement of M (and the derivative of this map). By the Koebe 1/4 theorem, one can then estimate the distance between the midpoint of our pixel and the Mandelbrot set up to a factor of 4.
In other words, provided that the maximal number of iterations is sufficiently high, one obtains a picture of the Mandelbrot set with the following properties:

Every pixel that contains a point of the Mandelbrot set is colored black.

Every pixel that is colored black is close to the Mandelbrot set.
Exterior distance estimate may be used to color whole complement of Mandelbrot set
The distance estimate b of a pixel c (a complex number) from the Mandelbrot set is given by

b=\lim_{n \to \infty} 2\cdot\frac{\mid{P_c^n(c)\mid\cdot\ln\mid{P_c^n(c)}}\mid}{\mid\frac{\partial}{\partial{c}} P_c^n(c)\mid}
where

P_c(z) \, stands for complex quadratic polynomial

P_c^n(c) stands for n iterations of P_c(z) \to z or z^2 + c \to z, starting with z=c: P_c^{ 0}(c) = c, P_c^{ n+1}(c) = P_c^n(c)^2 + c;

\frac{\partial}{\partial{c}} P_c^n(c) is the derivative of P_c^n(c) with respect to c. This derivative can be found by starting with \frac{\partial}{\partial{c}} P_c^{ 0}(c) = 1 and then \frac{\partial}{\partial{c}} P_c^{ n+1}(c) = 2\cdot{}P_c^n(c)\cdot\frac{\partial}{\partial{c}} P_c^n(c) + 1. This can easily be verified by using the chain rule for the derivative.
The idea behind this formula is simple: When the equipotential lines for the potential function \phi(z) lie close, the number \phi'(z) is large, and conversely, therefore the equipotential lines for the function \phi(z)/\phi'(z) should lie approximately regularly.
From a mathematician's point of view, this formula only works in limit where n goes to infinity, but very reasonable estimates can be found with just a few additional iterations after the main loop exits.
Once b is found, by the Koebe 1/4theorem, we know there's no point of the Mandelbrot set with distance from c smaller than b/4.
The distance estimation can be used for drawing of the boundary of the Mandelbrot set, see the article Julia set.
Interior distance estimation
Pixels colored according to the estimated interior distance
It is also possible to estimate the distance of a limitly periodic (i.e., inner) point to the boundary of the Mandelbrot set. The estimate is given by

b=\frac{1\mid{\frac{\partial}{\partial{z}}P_c^p(z_0)}\mid^2} {\mid{\frac{\partial}{\partial{c}}\frac{\partial}{\partial{z}}P_c^p(z_0) + \frac{\partial}{\partial{z}}\frac{\partial}{\partial{z}}P_c^p(z_0) \frac{\frac{\partial}{\partial{c}}P_c^p(z_0)} {1\frac{\partial}{\partial{z}}P_c^p(z_0)}}\mid}
where

p is the period,

c is the point to be estimated,

P_c(z) is the complex quadratic polynomial P_c(z)=z^2 + c

P_c^p(z_0) is the pfold iteration of P_c(z) \to z, starting with P_c^{ 0}(z) = z_0

z_0 is any of the p points that make the attractor of the iterations of P_c(z) \to z starting with P_c^{ 0}(z) = c; z_0 satisfies z_0 = P_c^p(z_0),

\frac{\partial}{\partial{c}}\frac{\partial}{\partial{z}}P_c^p(z_0), \frac{\partial}{\partial{z}}\frac{\partial}{\partial{z}}P_c^p(z_0), \frac{\partial}{\partial{c}}P_c^p(z_0) and \frac{\partial}{\partial{z}}P_c^p(z_0) are various derivatives of P_c^p(z), evaluated at z_0.
Analogous to the exterior case, once b is found, we know that all points within the distance of b/4 from c are inside the Mandelbrot set.
There are two practical problems with the interior distance estimate: first, we need to find z_0 precisely, and second, we need to find p precisely. The problem with z_0 is that the convergence to z_0 by iterating P_c(z) requires, theoretically, an infinite number of operations. The problem with any given p is that, sometimes, due to rounding errors, a period is falsely identified to be an integer multiple of the real period (e.g., a period of 86 is detected, while the real period is only 43=86/2). In such case, the distance is overestimated, i.e., the reported radius could contain points outside the Mandelbrot set.
3D view : smallest absolute value of the orbit of the interior points of the Mandelbrot set
Optimizations
Cardioid / bulb checking
One way to improve calculations is to find out beforehand whether the given point lies within the cardioid or in the period2 bulb. Before passing the complex value through the escape time algorithm, first check if:

p = \sqrt{ \left(x  \frac{1}{4}\right)^2 + y^2} ,

x < p  2p^2 + \frac{1}{4} , and

(x+1)^2 + y^2 < \frac{1}{16}
where x represents the real value of the point and y the imaginary value. The first two equations determine if the point is within the cardioid, the last the period2 bulb.
The cardioid test can equivalently be performed without the square root:

q = \left(x  \frac{1}{4}\right)^2 + y^2

q \left(q + \left(x  \frac{1}{4}\right)\right) < \frac{1}{4}y^2.
3rd and higherorder buds do not have equivalent tests, because they are not perfectly circular.^{[26]} However, it is possible to find whether the points are within circles that are circumscribed by these higher order bulbs, preventing many, though not all, of the points in the bulb from being iterated.
Periodicity checking
To prevent having to do huge numbers of iterations for points in the set, one can perform periodicity checking. Check if a point reached in iterating a pixel has been reached before. If so, the pixel cannot diverge and must be in the set.
Periodicity checking is, of course, a tradeoff. The need to remember points costs memory and data management instructions, whereas it saves computational instructions.
However, checking against only one previous iteration can detect many periods with little performance overhead. For example, within the while loop of the pseudocode above, make the following modifications.
while ( x*x + y*y < 2*2 AND iteration < max_iteration )
{
xtemp = x*x  y*y + x0
ytemp = 2*x*y + y0
if (x == xtemp AND y == ytemp)
{
iteration = max_iteration
break
}
x = xtemp
y = ytemp
iteration = iteration + 1
}
Border tracing / edge checking
It can be shown that if a solid shape can be drawn on the Mandelbrot set, with all the border colors being the same, then the shape can be filled in with that color. This is a result of the Mandelbrot set being simply connected. Boundary tracing works by following the edges of the various iteration levels (colored bands) all around, then filling the shape in. This can be a good speed increase, because it means that large numbers of points can be skipped.^{[27]}
A similar method operation on the same principle uses rectangles instead of arbitrary border shapes. It is usually faster than boundary tracing because it requires fewer calculations to work out the rectangle. It is inefficient however because boundaries are not rectangular, and so some areas get missed out. This issue can be minimized by created a recursive algorithm that, if a rectangle border fails, will subdivide it into four smaller rectangles and test those, and either fill each or subdivide again and repeat the process.
However, this only works using discrete colors in the escape time algorithm. It will not work for smooth/continuous coloring.
Perturbation theory and series approximation
Very highly magnified images require more than the standard 64128 or so bits of precision most hardware floatingpoint units provide, requiring renderers use slow "bignum" or "arbitrary precision" math libraries to calculate. However, this can be sped up by the exploitation of perturbation theory. Given

z_{n+1} = z_n^2 + c
as the iteration, and a small epsilon, it is the case that

(z_n + \epsilon)^2 + c = z_n^2 + 2z_n\epsilon + \epsilon^2 + c
or

z_{n+1} + 2z_n\epsilon + \epsilon^2
so if one defines

\epsilon_{n+1} = 2z_n\epsilon_n + \epsilon_n^2
one can calculate a single point (e.g. the center of an image) using normal, highprecision arithmetic (z), giving a reference orbit, and then compute many points around it in terms of various initial offsets epsilonzero plus the above iteration for epsilon. For most iterations, epsilon does not need more than 16 significant figures, and consequently hardware floatingpoint may be used to get a mostly accurate image.^{[28]} There will often be some areas where the orbits of points diverge enough from the reference orbit that extra precision is needed on those points, or else additional local highprecisioncalculated reference orbits are needed. By measuring the orbit distance between the reference point and the point calculated with low precision, it can be detected that it is not possible to calculate the point correctly, and the calculation can be stopped. These incorrect points can later be recalculated e.g. from another closer reference point.
Further it is possible to approximate the starting values for the low precision points with a truncated Taylor series, which often enables a significant amount of iterations to be skipped.^{[29]} Renderers implementing these techniques are publicly available and offer speedups for highly magnified images by around two orders of magnitude.^{[30]}
GIF zoom sequence
Popular culture
See also
References

^ "Mandelbrot Set Explorer: Mathematical Glossary". Retrieved 20071007.

^ Robert Brooks and Peter Matelski, The dynamics of 2generator subgroups of PSL(2,C), in "Riemann Surfaces and Related Topics", ed. Kra and Maskit, Ann. Math. Stud. 97, 65–71, ISBN 0691082642

^ R.P. Taylor & J.C. Sprott (2008). "Biophilic Fractals and the Visual Journey of Organic Screensavers" (pdf). Nonlinear Dynamics, Psychology, and Life Sciences, Vol. 12, No. 1. Society for Chaos Theory in Psychology & Life Sciences. Retrieved 1 January 2009.

^ Benoit Mandelbrot, Fractal aspects of the iteration of z\mapsto\lambda z(1z) for complex \lambda, z, Annals NY Acad. Sci. 357, 249/259

^ Adrien Douady and John H. Hubbard, Etude dynamique des polynômes complexes, Prépublications mathémathiques d'Orsay 2/4 (1984 / 1985)

^ Peitgen, HeinzOtto; Richter Peter (1986).

^ Frontiers of Chaos, Exhibition of the GoetheInstitut by H.O. Peitgen, P. Richter, H. Jürgens, M. Prüfer, D.Saupe. since 1985 shown in over 40 countries.

^ Gleick, James (1987).

^ Dewdney, A.K. (1985). A computer microscope zooms in for a close look at the most complicated object in mathematics. http://www.nature.com/scientificamerican/journal/v253/n2/pdf/scientificamerican088516.pdf: Scientific American. pp. 16–24.

^ Fractals: The Patterns of Chaos. John Briggs. 1992. p. 80.

^ Lyubich, Mikhail (May–June 1999). "Six Lectures on Real and Complex Dynamics". Retrieved 20070404.

^

^ foerstemann.name

^ The Mandelbrot set, theme and variations. Tan, Lei. Cambridge University Press, 2000. ISBN 9780521774765. Section 2.1, "Yoccoz parapuzzles", p. 121

^ Exploring the Mandelbrot set. The Orsay Notes by Adrien Douady and John H. Hubbard. page 12

^ Homeomorphisms on Edges of the Mandelbrot Set by Wolf Jung

^ Lei.pdf Tan Lei, "Similarity between the Mandelbrot set and Julia Sets", Communications in Mathematical Physics 134 (1990), pp. 587617.

^ J. Milnor, "SelfSimilarity and Hairiness in the Mandelbrot Set", in Computers in Geometry and Topology, M. Tangora (editor), Dekker, New York, pp. 211257.

^ Mitsuhiro Shishikura, The Hausdorff dimension of the boundary of the Mandelbrot set and Julia sets, Ann. Math. 147 (1998) p. 225267. (First appeared in 1991 as a Stony Brook IMS Preprint, available as arXiv:math.DS/9201282.)

^ Klebanoff, Aaron (2001), "π in the Madelbrot set", Fractals 9 (4): 393–402,

^ Gary William Flake, The Computational Beauty of Nature, 1998. p. 125. ISBN 9780262561273

^ Rudy Rucker's discussion of the CCM: CS.sjsu.edu

^ García, Francisco; Ángel Fernández; Javier Barrallo; Luis Martín. "Coloring Dynamical Systems in the Complex Plane" (PDF). Retrieved 20080121.

^ Linas Vepstas. "Renormalizing the Mandelbrot Escape".

^ Albert Lobo Cusidó. "Interior and exterior distance bounds for the Mandelbrot".

^ "Mandelbrot Bud Maths".

^ "Boundary Tracing Method".

^ "Superfractalthing  Arbitrary Precision Mandelbrot Set Rendering in Java".

^ "SUPERFRACTALTHING MATHS".

^ "Kalles Fraktaler 2".
Further reading

John W. Milnor, Dynamics in One Complex Variable (Third Edition), Annals of Mathematics Studies 160, (Princeton University Press, 2006), ISBN 0691124884
(First appeared in 1990 as a Stony Brook IMS Preprint, available as arXiV:math.DS/9201272 )

Nigel LesmoirGordon, The Colours of Infinity: The Beauty, The Power and the Sense of Fractals, ISBN 1904555055
(includes a DVD featuring Arthur C. Clarke and David Gilmour)

HeinzOtto Peitgen, Hartmut Jürgens, Dietmar Saupe, Chaos and Fractals  New Frontiers of Science (Springer, NewYork, 1992, 2004), ISBN 0387202293
External links

Chaos and Fractals at DMOZ

The Mandelbrot Set and Julia Sets by Michael Frame, Benoit Mandelbrot, and Nial Neger

Video: Mandelbrot fractal zoom to 6.066 e228

मण्डलबेथ (maṇḍalabeth) 3D analog of the mandelbrot set, with various symmetry groups
This article was sourced from Creative Commons AttributionShareAlike License; additional terms may apply. World Heritage Encyclopedia content is assembled from numerous content providers, Open Access Publishing, and in compliance with The Fair Access to Science and Technology Research Act (FASTR), Wikimedia Foundation, Inc., Public Library of Science, The Encyclopedia of Life, Open Book Publishers (OBP), PubMed, U.S. National Library of Medicine, National Center for Biotechnology Information, U.S. National Library of Medicine, National Institutes of Health (NIH), U.S. Department of Health & Human Services, and USA.gov, which sources content from all federal, state, local, tribal, and territorial government publication portals (.gov, .mil, .edu). Funding for USA.gov and content contributors is made possible from the U.S. Congress, EGovernment Act of 2002.
Crowd sourced content that is contributed to World Heritage Encyclopedia is peer reviewed and edited by our editorial staff to ensure quality scholarly research articles.
By using this site, you agree to the Terms of Use and Privacy Policy. World Heritage Encyclopedia™ is a registered trademark of the World Public Library Association, a nonprofit organization.