[ Home | Scattering | Mandelbrot | Fracture | Software Mandel | Software Fiber ]  [ deutsch ]

Wolf Jung   jung@mndynamics.com
Gesamtschule Aachen-Brand, Rombachstrasse 41, 52078 Aachen, Germany.


Mandel: software for real and complex dynamics

Mandel is an interactive program for drawing the Mandelbrot set and Julia sets, and for illustrating and researching their mathematical properties. It is available on Linux, Unix, Windows, and Mac with a graphical user interface based on the c++ toolkit Qt. Features include: The latest release is Mandel 5.1 of March 14, 2008. The source code is available under the GNU General Public License. Compile it yourself on Linux, Windows, or Mac after installing Qt 4.x. (x ≥ 3 for Linux users.) For your convenience, a Windows executable is offered in addition.
Download the source code (65 kB) or the Windows exe (4.5 MB).

The non-GUI-version has been renamed: Exmandel is a DOS-program with VGA-graphics. Its mathematical functions are similar to Mandel, but it is controlled by keyboard only. This program may be used and redistributed without restriction. It comes with no warranty.
Download exmandel.exe 4.1 of June 21, 2007 (208 kB).

Other sites with programs on complex dynamics or fractals:
fractint, IMS, Arnaud Chéritat, Xaos, spanky.

Just for fun ... a PostScript program for computing M. You may change parameters by editing the source code. Download mc.eps (1.4 kb).

The DOS-program logistic.exe deals with the real iteration of z2 + c, which is conjugate to the standard logistic map. It provides features like drawing q-curves, finding hyperbolic intervals or periodic points, cobweb graphics. This program may be used and redistributed without restriction. It comes with no warranty.
Download logistic.exe 2.0 of July 30, 1998. Preliminary manual logistic.ps.

How to draw external rays:

Background:

The mapping fc(z) = z2 + c is conjugate to F(z) = z2 in a neighborhood of ∞. The conjugacy is provided by the Boettcher mapping Φc(z), since Φc(fc(z)) = F(Φc(z)). We have

(1)  Φc(z) = limn→∞ (fcn(z))1/2n

for a suitable choice of the 2n-th root. This is made precise by the following formula, which is valid for large |z| with the principal value of the roots:

(2)  Φc(z) = z ∏n=1 (1 + c/(fcn-1(z))²) 1/2n = z ∏n=1 (fcn(z)/(fcn(z)-c)) 1/2n.

In the dynamics of quadratic polynomials, there is a basic dichotomy:

Adrien Douady has shown that the mapping ΦM(c) = Φc(c) is a conformal mapping from the exterior of the Mandelbrot set M to the exterior of the unit disk, thus M is connected. By means of ΦM(c), external rays and equipotential lines are defined in the parameter plane as well. See the image above. When the argument θ of an external ray is a rational multiple of 2π, then the ray is landing at a distinguished boundary point of the Julia set or Mandelbrot set, respectively. See the following papers by Dierk Schleicher (arXiv:math.DS/9711213) and John Milnor (arXiv:math.DS/9905169).

Computation of the external argument:

External rays are characterized by the fact that the argument of Φc(z) or ΦM(c) equals a given value θ. For large |z|, formula (2) implies

(3)  argc(z) = arg(z) + ∑n=1 1/2n arg(1 + c/(fcn-1(z))²) = arg(z) + ∑n=11/2n arg(fcn(z)/(fcn(z)-c)).

Note that the principal value of the argument satisfies -π<arg(z)≤π, and it is discontinuous on the negative real axis. The function arg(z/(z-c)) is discontinuous on the straight line segment from z = 0 to z = c. When the Julia set is connected, the discontinuity can be moved such that the argument is continuous in the whole exterior, and (3) is valid everywhere. Approximating the Julia set by two straight line segments from the fixed point αc to 0 and c, respectively, the argument can be adjusted by three simple inequalities, cf. mndlbrot::turn(). The same formulas work in the parameter plane as well. The left image shows the discontinuities arising from the principal value, they are appearing on curves joining centers of different periods. In the right image, the argument is adjusted, and the discontinuities are moved closer to the Mandelbrot set.

Drawing “all” rays:

To get an overview of all rays, compute the argument at every point and map it to a range of colors. The images above where obtained with Mandel's algorithm No. 4. The code of mndlbrot::turn() has been ported to Java by Evgeny Demidov. See also the algorithms 5 and 6, where no discontinuity appears, but only the ends of certain rays are visible.

Drawing a single ray:

Note that most of these methods can be modified to draw equipotential lines. In this case there is no problem with the ambiguity of the argument. Boundary scanning is slow and Newton's method has three problems: finding a starting point, drawing several lines around a disconnected Julia set, and choosing the number of points depending on the chosen subset of the plane. Therefore I am using boundary tracing with starting points on several lines through the image. See QmnPlane::green(). Still, sometimes not the whole line is drawn, or not all components are found.
Last modified: March 2008.  Disclaimer: I am not responsible for linked sites by other people.
[ Home | Scattering | Mandelbrot | Fracture | Software Mandel | Software Fiber ]  [ deutsch ]