I'm sure you've seen images of the Mandelbrot set, that wonderfully intricate little fractal. All that beauty, an infinitely detailed interface between what is in the set and what is excluded, is created by a very simple little algorithm.
The Mandelbrot set can be defined as the set of points, , in the complex plain for which the infinite series , converges to a finite value.
In the images shown, the real axis is the horizontal (x) axis and the imaginary axis is the vertical (y) axis. There is no reason to go farther from the origin than -2 or 2 on the real axis or -2i or 2i on the imaginary axis, since any point that far from the origin will quickly diverge for the series shown above. The dark pixels represent starting points, , in the complex plane that did not diverge. My test for convergence is whether or not for each starting point, , the series, , reached an absolute value of 2 or greater after 100 iterations of the series shown above. You can also get beautiful pictures by shading differently or coloring differently depending on how long it took to diverge, or by the absolute value reached by a certain number of iterations or both.
The closer you look at the border between what is in the set and what diverges, the more structure you find.
When creating these images it is convenient to use a simple x-y plane and assume a certain number of pixels in your image, say 400 by 400. You choose a center for your image somewhere in the plane, (x′, y′), somewhere less than 2 from the origin, and scale your pixels to represent numbers in the complex plane represented by c=(x-x′)/(scale)+i(y-y′)/(scale) and for each pixel start at z=0+0i and iterate until you reach above 2 or get tired of iterating. You then choose to color the pixel as being in the set or not (can even be just black or white) or shade according to the quickness of divergence or maximum value of z² reached for those you decide are in the set.
Note that you don't actually have to have the computer do complex math for you, since you are only finding one new (x,y) value from one old value each time and then testing whether or not x² + y² > 2. and new x value is just the old x value squared minus the old y value squared plus the pixel x value while each new y value is just 2 times the old x times the old y plus the pixel y. (It is kind of fun to work this out and show that it is that simple).
Benöit Mandelbrot published a paper in 1980 (after decades of work in complex analysis and complex dynamics) discussing the parameter space of quadratic polynomials. Adrien Douady and John H. Hubbard did detailed mathematical studies of the set establishing many of the fundamental properties and they are responsible for naming the set in honor of Mandelbrot. Popularization of the set came with the publications of images by Heinz-Otto Peitgen and Peter Richter. See "The Beauty of Fractals" 1986.
If you happen to have Matlab, you can right click here and choose to save the m-file and right click here to save the *.fig file that I wrote in Matlab to create images of the mandelbrot set. When downloading these files, the genius browsers will insist that they are .htm files so you will need to replace their suffix htm with m in the case of the m file and fig in the case of the fig file. I think that as long as these two files are in the same directory, you can direct matlab to that directory and run the command, "Mandelbrot" to use this simple application.
I also have a stand-alone application here that will install the application along with the Matlab MCR. Please right click and save the zipped executable named Mandelbrot_pkg.zip rather than running it over the net.... it is much easier that way. When you unzip or unpack the file you should have Mandelbrot_pkg.exe which will install on a windows computer. Have fun!