FINDPERC  and FINDPERM

Find Period in Component, Ver 1.3, (C) Jay R. Hill, May 12, 1997
Redistribution and noncommercial use of this program is fine as long
as you you keep the programs and this document together.

Given the approximate coordinates in or very near a component of
the Mandelbrot Set, these programs will help you deterimine the period
and the 'center' of the component.  The center of a period p component
is a complex number, c, for which the following iteration, starting
with z=0, yields z=0 after p iterations.  The iteration is the basic
Mandelbrot Set formula:

z <- z*z + c


BACKGROUND.

On about May 6, 1997 zussman@netvision.net.il wrote to sci.fractals:
>
> Hi !
> I'm searching for a program wich can state the periods of the bulbs
> quickly .
> I'm also searching for information about the windows in the
> bifurcation diagram ( fiegenbaum diagram ) compared with the
> bifurcation ( and periods ) in mandelbrondelbrot.
>
>                                         Guy .

Great question Guy.

So, here are two programs for Guy and anyone else who wants to know the
period of a component of the Mandelbrot Set.  FINDPERC.EXE uses 80-bit
floating point arithmetic to achieve 19 digit results.  The program
FINDPERM, also included, uses 57 digits with the extended arithmetic
package MFLOAT by Friedrich Kaufmann.  It displays results to 37 digits.

One way to use this program is with FRACTINT or other Mandelbrot Set
plotter which displays coordinates. I like WinFract, the old windows
version of FRACTINT, since it has a coordinate box showing the
coordinates of any spot on the screen.  With FRACTINT or WinFract in
one window and one of these programs in a DOS window, you can locate
components easily.

Be aware that FRACTINT in higher than 320x200 mode must be in graphics
DOS mode when you press Alt-ENTER to switch between Windows and DOS
(in Win95).  If you press TAB to see the coordinates and switch to
Windows mode while FRACTINT is in the ASCII mode, you will blow your
picture away!

USAGE.

FINDPERC.EXE realpart imagpart

or

FINDPERM.EXE realpart imagpart

where  (realpart, imagpart) is in or VERY near the component.

If you forget how to run the programs, just type the name and
a help text appears.


When running, the programs display 4 columns,

k, real(z[k]), imag(z[k]), norm(P[k])

z[k] is the k-th iteration and P is the cummulative product of (2*z[k]).
When k is at the period, you will see z and P drop to near zero.

Try -.31858988 .62252567.  A screen full of numbers shows the norm(P[k])
column that P is always larger than 1.  So we keep going, at the prompt:

See a period? What is it? (Press ENTER to keep going.)

we press ENTER a few times.  When you get to k=304, we see this:

  k,       real(z[k]),      imag(z[k]),         norm(P[k])
 303  -0.71341524036164   0.43591489613005     4750.122208675
 304   0.00034962851219   0.00054900920032        0.008049579

Finally, the period is likely to be 304 since P[304] is much less than 1.
P fell to 0.00804957986829, so at the prompt we enter 304.  The result is:

Started with=(-0.318589880000000000  0.622525670000000000) period=304
Found center=(-0.318590930805574861  0.622525086442532124) period=304

This confirms the period and solves for the component center.  If the
center we found does not match the expected value given the uncertainties
of your original guess, then the period is wrong or the guess not close
enough.

If you put 305 as the period, you get:

Started with=(-0.318589880000000000  0.622525670000000000) period=305
Found center=( 0.000000000000000000  0.000000000000000000) period=1

The program failed to find a solution with that period.

Next try -.31856978 .62255716.  Run program until you see
1899  -0.71343552607456   0.43629675580981   17506031.028553824
1900   0.00006561073511   0.00001794898841          0.323997053
P drops below 1 from 17506031.028 to .324.  That it, ENTER 1900 and get:

Started with=(-0.318569780000000000  0.622557159999999999) period=1900
Found center=(-0.318569781551786128  0.622557157465553250) period=1900


We know there is a component near (-.125 1.25) with period 4. The
iterations diverge in 3 iterations. Enter 4, we are lucky, the answer:
Found center=(-0.156520166833755062  1.0322471089228318) period=4

Other solutions can be found with this starting value:

Started with=(-0.125000000000000000  1.250000000000000000) period=5
Found center=(-0.198042099364253840  1.100269537292698530) period=5

Started with=(-0.125000000000000000  1.250000000000000000) period=6
Found center=(-0.163598261552022645  1.099780642888272150) period=6

and so on.  But usually such luck runs out with smaller higher period
components.  I use Newton's method.  (Newton was no Srinivasa Ramanujan.)

:-)



MORE EXAMPLES.

Use the cut and paste tool bar in your Win95 Dos window to try these.

Found center=(-0.318614350657053174  0.622619818705517736) period=620
Found center=(-0.318614350657037262  0.622619818705529503) period=4960
Found center=(-0.318614350657049402  0.622619818705531170) period=3100

There is a very small bud on the edge of the bid cardoid.
Found center=(-0.305387626598290530  0.621188098119757066) period=478

And a very small little cardioid in its branches
Found center=(-0.305375844037193914  0.621193604423463881) period=1068

and its period 4 x 1068 cardiod nearby
Found center=(-0.305375654258032003  0.621193684057795200) period=4272

Here is another cardoid in branches
Found center=(-0.305375053063239252  0.621194524943383268) period=1841

And its period 4 x 1841 cardiod nearby
Found center=(-0.305375017903283374  0.621194595993191902) period=7364

with its 5 x 1841 cardiod nearby
Found center=(-0.305375064263574989  0.621194577480919706) period=9205

and its 9 x 1841 cardiod nearby
Found center=(-0.305375064929673924  0.621194575544827108) period=16569


And some more in branches of the original period 478 bud:

Found center=(-0.305371675699702831  0.621195607463890906) period=2024
Found center=(-0.305370656815140940  0.621195006931190628) period=1251
Found center=(-0.305373404413026598  0.621195638112011218) period=3092
Found center=(-0.305370398501323764  0.621196601413837009) period=956
Found center=(-0.305376676023385352  0.621195863767802037) period=885
Found center=(-0.305374581005961303  0.621195301492036328) period=2614
Found center=(-0.305372478737719552  0.621196983916585383) period=3275
Found center=(-0.305371090741148021  0.621195896981910752) period=2319
