Dark Heart Complex Function Viewer
See http://dhushara.com/DarkHeart/ for research, updates and source code.
Compatibility: Tiger through to Snow Leopard Mac XCode Application
DHViewer allows you to interactively explore the fractal dynamics of a wide variety of complex polynomial, rational and transcendental functions.
Many of the most interesting examples which can be viewed in dertail with DHViewer are shown in Exploding the Dark Heart of Chaos
DHViewer and its twin RZViewer, now packeged together, form the tools to investigate the functions discussed in this paper.
Fig 1: Cubic function z3-z+c its conjoint parameter plane (Mandelbrot set) showing the overlapping effects of the escape from each of the two critical points and two cubic Julia sets from the 'Mariana trench' in the crossed cusps leading toward the centre of the black overlap region entrapping both critical points resulting in a fully connected Julia set.
A new version 1.3.1 has just been released with many new features and several bug fixes. The suite of functions has been generalized to a spectrum of degree-k polynomials and composite transcendental functions such as: zk - z + c, zk + (c-1) z - c, c.zz+kc, c.Cos(zk), Cos(zk) + c, Newton's method on zk + (c-1) z - c and using save and load to define the coefficients and c parameters, one can explore all the parameter planes of any polynomial up to degree 5. The application now comes with scriptable movie generation giving powerful flexibility in generating sequences of movie frames which can be compiled into a movie with Quicktime viewer.
Fig 1(b) New functions in the current version 1.3.1. Top row: Detail of parameter plane of Newton's method on z5 + (c-1) z - c for z4 - z + c, showing a degree 4 Mandelbrot island, folowed by two details of the Julia set showing how the five fractal basins are entwined. Bottom row Mandelbrot parameter planes of z4 - z + c, czz+7, and c.Cos(z(3/2)).
DHViewer is a matched pair application with the Riemann Zeta Function Viewer, RZViewer, which explores the corresponding L-functions based on Dirichlet series, rather than power series, and can be downloaded from the above site.
Fig 1(c) Movie of Julia set of z3 - z + c going up the lower right Mariana trench in Fig 1 generated by DHViewer
You can investigate a variety of functions, z2+c, cz(1-z), z3+c, z4+c, z3-z+c, z3+(c-1)z-c, Newton's method on the previous cubic i.e. (2z3+c)/(3z2+c-1), the Herman ring function cz2(z-4)/(4z-1), cCos(z), c(Sin(z) + Sin(2z)/2), c(Cos(z)+Cos(2z), c(Cos(z1/2), cSin(z)/z, czez, czLog(z), czz, czz+1, e(-z^2)+c, zez+c, Cos(z)+c, some of which form a border line with the gamma function in RZViewer. All but a few of the functions are unique valued on the complex plane. Although c(Cos(z1/2) has no branch cuts, all those implicitly involving Log(z), including czLog(z), czz, czz+1 do.
Drag a rectangle to enlarge a portion of the current image.
Click a point to cycle:
Function > Mandelbrot > Julia(c)
at the clicked point c on the Mandelbrot set. By clicking, you can investigate the discrete dynamical parameter plane (Mandelbrot set) of the critical values and the Julia sets of z=f(z,c) for (x,y)=c.
The controls all have floating help panes to guide you.
The window can be resized to suit in real time, resulting in a refresh and recalculation.
Threads enables a multi-core machine to work faster using as many threads as coprocessors. Max Iterations gives how many iteration steps of a point on the Julia or Mandelbrot set before maximum iteration cutoff. Recalc refreshes and recalculates the existing screen. Reset returns to the function and default scale but doesn't alter any other settings. Keep scope on click keeps the window centre and scale when clicking between Mandelbrot, Julia and function, so the other parameters can be changed without changing the point of view.
To facilitate fast fractal iteration, the default is 100 function series terms and a cutoff of 64 iterations for each point of the Mandelbrot and Julia sets, but these can be adjusted for greater accuracy.
Fig2: Transcendental function Cos(z)+c has a repeating parameter plane (Mandelbrot set) again with two critical values corresponding to the maxima and minima of the function, displaying the same cubic features as in fig 1. The Julia set right from the ?Mariana trench? shows the same cubic characteristics as the Julia set in fig 1 lower right. by comparison cCos(z) has dominant degree 2 behavior and c(Cos(z)+Cos(2z) has degree 4 components because of its double repeated maxima).
About gives a complete instruction summary. Save saves the current window's image as a tif file and all the settings for a given calculation in a text file (see format below), enabling you to save all the parameters for future investigation and redrawing. It will overwrite any files of the same name. Load Parameters will load a previous calculation and redraw it. Load Movie Seq loads a sequence text file to generate a series of images to make a movie (see format below). Save Movie saves the sequence as a series of LZW compressed tifs, which can then easily be composited into a movie e.g. using open image sequence in Quicktime Player. Print enables an image to be printed or exported to pdf format. Page Setup needs to be landscape in 80% to fit the standard window on one A4 page. Help directs you to the About menu.
Parameters Text file format:  mandel (2=function, 1= Mandelbrot, 0=Julia), [2-6] Scale, X, Y, (Fn k J/M c) R, I,  the current function,  escape type (abs real or imag),  orbit trap epsilon (negative exponent 10^n),  escape only (0 or 1),  color scheme (0 to 3),  escape bound (exponent 10^n),  attractor radius epsilon bound (negative exponent 10^n),  maximum iterations, [15-16] real and imaginary values of k,  previous function  dummy 987.654321 so you can find >> [19-30] complex coefficients a + bi of a polynomial up to degree 5 (6 pairs of reals), [31-36] powers of c (usually 0 or 1) multiplied into each coefficient for the Mandelbrot plane.
Movie Sequence Formats: The text file consists of s eries of floating point numbers. (1) File type 1/2 (2) N<=1000 number of frames (3) 1/0 Mandelbrot/Julia followed by a sequence of frame parameters screen X, Y, Scale CX, CY. If the file format is 1 only the start and end parameters are specified and DHViewer will generate N frames in a linear sequence between these values. In format 2 the file supplies a series of N parameters in any shape for instance computed values running around the cardioid of a Mandelbrot set. The files can either generate blowups of Mandelbrot parameter planes or movies of Julia sets as CX and CY vary. The sequence file has no parameters except mandel, so you can set all the other settings manually before saving the movie. If you want to determine in advance the complete parameters for a movie run, save your parameters and load them before loading the movie sequence file.
Pop-up Menus: Color schemes can be changed in real time using the color pop up menu. All the other controls require window recalculation.
A Variety of Functions as discussed above can be explored using the function pop-up menu.
The escape bound can be set but resets on function change to the one most appropriate for the given function.
Buttons and Text Fields: Current window parameters and c values can be read out from and written into the text fields and set by pressing the appropriate button. Numbers in the text fields are double precision and may appear in floating format e.g. -7.000000186963007e-05 manifestly too large to see in their entirety in the text box without dragging or selecting all and copying. The Julia c values will be overwritten by the Mandelbrot critical point origin and current Julia click point each cycle but can be manually re-entered as desired.
Tick boxes: There is an imaginary axis orbit trap option. Escape only tests only for escaping points, to avoid spurious periodic solutions from overwriting escaping orbits, but is slower because attracting orbits have to run to the Max interactions for each point.
Sliders: Attractor bound adjusts the size of the epsilon neighbourhood testing for fixed point or periodic attractors. Escape bound sets the numerical bounds on points escaping to infinity.
Sin(z)/z portrayed in color scheme 4 highlighting parameters planes of the first 6 critical points
There are several colour schemes for function, Mandelbrot and Julia:
Function: (0,4) rgb = logarithmic abs(z), blue cosine abs(z), green ang(z). This is the most informative although not the most appealing (1)rgb = real, imaginary and angle, (2) bg = abs(z) and angle (3) rgb = real, imaginary and cos(angle).
Mandelbrot: (0) Sine wave colours, (1) attractor coded colours, (2) RGB ranked colours which can also show which attracting fixed point is involved in Newton?s method and the Herman ring (3) Potential function rainbow. Attractor coding gives escaping points tending to real infinity green through orange and points remaining finite coloured by decreasing blue by iteration, combined with redness corresponding to the attractor period. (4) As 0 but with square root trending very good for highlighting boundaries and complex dynamics.
The 'critical' point for the Mandelbrot set is chosen to represent a prominent critical landmark. Other critical points can be chosen using the advanced settings. Not all the functions have meaningful Mandelbrot sets.
Julia: (0) Sine wave colours, (1) attractor coded colours, (2) RGB ranked colours, (3) rainbow with potential function on escaping points. Colour coded Julia attractors have blue shaded to escaping real, red shaded to periodic attractor, and grey indeterminate, with green default with escape only. (4) As 0 but with square root trending. Very good for highlighting boundaries and complex dynamics.