The histogram reveals a weakness in the simple approach to the inverse
iteration algorithm for Julia sets. In this simple approach, we start with
an initial point and build up a list of many points by continually
applying the inverse image. For example, we may construct an image of the
Julia set for c=-1 as follows:
c = -1; depth = 12;
invImage[complexPoints_] :=
N[{1,-1} Sqrt[#-c]]& /@ complexPoints // Flatten;
points = {Re[#], Im[#]}& /@ Nest[invImage, {1}, depth];
ListPlot[points, Axes -> False, AspectRatio -> Automatic,
Prolog -> {AbsolutePointSize[0.4]}]
Unfortunately, some regions are much more attractive
under the action of the inverse than others. To illustrate this, we can
create the above histogram like this:
res = 50;
choppedPoints = Floor[res points]/res;
countedPoints = {#,Count[choppedPoints,#]}& /@ choppedPoints // Union;
lines = Line[{Append[First[#],1], Flatten[#]}]& /@ countedPoints;
Show[Graphics3D[lines], BoxRatios -> {1,.55,.25}, Boxed -> False,
Axes -> False, PlotRange -> All]
I have some
Mathematica code
which improves this algorithm. The technique is fully described in my
forthcoming article in Mathematica in Education and Research.