Experiment: Periods of the bulbs on the Mandelbrot set

Goal: The goal of this lab is to investigate the periods of the bulbs hanging off the Mandelbrot set.

Procedure: Attached to the "main cardioid" in the Mandelbrot set you see lots of little decorations. These are disks that are directly attached to the main cardioid. These are called the "principal" bulbs on the Mandelbrot set. As we shall see, if you choose any c-value in one of these bulbs, the orbit of 0 always has the same fate: it tends to an attracting cycle of some period. Your job is to determine this period for the principal bulbs (and other bulbs in this set).

One easy way to do this is to use the Mandelbrot Set Iterator on the web. To find the period of a bulb, simply click in its interior (try for the middle); the orbit of 0 as well as the period is displayed. Alternatively, you may use the Mandelbrot/Julia Set applet on the web which shows you both the orbit of 0 and the corresponding filled Julia set but does not display the period of the cycle. Also, you can use this Mathematica notebook.

Questions: 

1. Find all the principal bulbs (the bulbs that are directly attached to the main cardioid, not their satelites) that have periods 2 through 8, inclusive. On a sketch of the Mandelbrot set, indicate the relative ordering of these bulbs. Hint: There are 6 period 7 bulbs and 4 period 8 bulbs.

2. Given two principal bulbs that are close to each other (with no larger bulbs in between), how do you find the period of the largest bulb that lies between them?

3. Now go to the period 2 bulb. Find the periods of all the bulbs hanging directly off this bulb whose period is "analogous" to that of the previous question. What does "analogous" mean here? (See question 6.) Provide a sketch similar to the sketch for the main cardioid.

4. Repeat question 3 for the period 3 bulb attached to the upper part of the cardioid.

5. First find the "baby Mandelbrot set" which lies along the real axis and has period 3 in its main cardioid. Repeat question 1 for the cardioid of this baby M-set.

6. In a brief essay, discuss how all of these baby bulbs are ordered around their parent bulb.

7. For a given c-value in one of the bulbs, you may also compute the corresponding filled Julia set using the Mandelbrot/Julia Set applet on the web or using the program explained below. Clicking on a c-value in a bulb in the Mandelbrot set allows you to display the filled Julia set for that value. Your job is to find each of the following filled Julia sets. That is, on a sketch of the Mandelbrot set, indicate where Julia sets 1-4 came from.

Figure 1

Figure 2

Figure 3

Figure 4

The Mandelbrot set

Choose which portion of the set you want to display by changing the corners of the window. Guess a value of cinside the bulb you want to study (you may need to zoom in to guess cwith a couple of significant digits). First evaluate the Mandelbrot function (compile) and then the following cell to display the set.Then, plug that value of c in the cell corresponding to the Julia set. Both sets are plotted using the escape criterion.

The period will be displayed in the complex plane with black dots below the filled Julia set.

To visualize the whole set use the region (-2.1,-1.2)-(.7,1.2).

Note: You can change the number of Iterates which the program tests for the critical point (0,0) to escape the circle of radius 2 to have more details plotted when zooming in. You can also change the value of PlotPoints to have better definition in the picture. However, depending on the characteristics of your system this could make the computation time too long.

Iterates = 100;
\(\(Mandelbrot = 
        Compile[{{c, _Complex}}, 
          Length[FixedPointList[#\^2 + c &, 0, Iterates, 
              SameTest -> \((Abs[#] > 
                      2.0 &)\)]]];\)\)

CrealInf = -2.1;
CrealSup =  .7;
CimagInf = -1.2;
CimagSup = 1.2;

    
$TextStyle = {FontFamily -> "Times", FontSize -> 14}; 
    MandelbrotSet = 
      DensityPlot[
        Mandelbrot[x + I y], {x, CrealInf, CrealSup}, {y, CimagInf, 
          CimagSup}, Mesh -> False,  Frame -> True, 
        Axes -> False, PlotPoints -> 100, 
        AspectRatio -> Automatic, 
        FrameLabel -> {"Re(c)", "Im(c)"}, 
        PlotLabel -> "The c-plane", RotateLabel -> False, 
        ColorFunction -> (If[# ≥ 1, RGBColor[0, 0, 0], 
                Hue[#]] &), ImageSize -> 400];

Filled Julia sets

Remember to compile the function before using it, i.e., evaluate the next cell first.

Iterates = 100;
\(\(Julia = 
        Compile[{{z, _Complex}, {c, _Complex}}, 
          Length[FixedPointList[#\^2 + c &, z, Iterates, 
              SameTest -> \((Abs[#] > 
                      2.0 &)\)]]];\)\)

c = - .7 - 0.28 I;

    
RealZInf = -1.6;
RealZSup = 1.6;
ImagZInf = -1.2;
ImagZSup = 
        1.2;


$TextStyle = {FontFamily -> "Times", 
          FontSize -> 14};
FilledJuliaSet = 
        DensityPlot[
          Julia[x + I y, c], {x, RealZInf, RealZSup}, {y, ImagZInf, 
            ImagZSup}, Mesh -> False,  Frame -> True, 
          Axes -> False, PlotPoints -> 200, 
          AspectRatio -> Automatic, 
          FrameLabel -> {"Re(z)", "Im(z)"}, 
          RotateLabel -> False, 
          PlotLabel -> "Filled Julia set for c =" <> ToString[c], 
          ColorFunction -> (If[# ≥ 1, RGBColor[0, 0, 0], 
                  Hue[#]] &), 
          DisplayFunction -> Identity];
\(\(Orbit = 
        Drop[NestList[#\^2 + c &, 0, 5000], 
          4980];\)\)
PeriodicOrbitData = 
        Table[{RGBColor[0, 0, 0], PointSize[0.02], 
            Point[{Re[Orbit[[i]]], Im[Orbit[[i]]]}]}, {i, 1, 
            Length[Orbit]}];
PeriodicOrbitPlot = 
        Graphics[PeriodicOrbitData, 
          PlotRange -> {{RealZInf, RealZSup}, {ImagZInf, ImagZSup}},  
          Frame -> True, Axes -> False, 
          AspectRatio -> Automatic, 
          FrameLabel -> {"Re(z)", "Im(z)"}, 
          RotateLabel -> False, 
          PlotLabel -> "Periodic orbit for c =" <> 
              ToString[c]];
Show[GraphicsArray[{{FilledJuliaSet}, {PeriodicOrbitPlot}}], 
        ImageSize -> 400];
Clear[c];