The inverse iteration algorithm

This algorithm is based on the fac that the Julia set of the function f_c is a dynamical repellor for f_c.  Therefore, it should be a dynamical attractor for an inverse of f_c.  

Since f_c has two inverses, f_1^(-1)(z) = (z - c)^(1/2) and f_2^(-1)(z) = -(z - c)^(1/2), we can find the backwards orbit of a point z_0.  If we find all points in the backwards orbit of z_0 at level n, we'll have 2^n points very close to the Julia set.

This can be implemented like this:

c = -1. ; depth = 12 ;

invImage[z_] := {Sqrt[z - c], -Sqrt[z - c]} ;

invImage[points_List] := invImage /@ points ;

ListPlot[{Re[#], Im[#]} & /@ Flatten[Nest[invImage, 1., depth]]] ;

[Graphics:../HTMLFiles/index_25.gif]

Recall that there are some complications arising from the fact that certain parts of the Julia set are more  attractive than other parts.  We discussed a way to fix this, but the code can be a bit complicated.  I implemented the code in a package called JuliaSet.

Julia[z^2 - 1, z] ;

[Graphics:../HTMLFiles/index_27.gif]

My inverse iteration applet uses this algorithm: http://facstaff.unca.edu/mcmcclur/java/Julia/.


Created by Mathematica  (October 25, 2005) Valid XHTML 1.1!