# Intro

## Superattracting fixed points

For complex quadratic polynomial there are many superattracting fixed point ( with multiplier = 0 ):

• infinity ( It is always is superattracting fixed point for polynomials )
• $z_s = 0 \,$ is finite superattracting fixed point for map $f_0\,$
• $z_s = 0 \,$ and $z_s = -1 \,$ are two finite superattracting fixed points for map $f_{-1}\,$

## Description

Near[1] super attracting fixed point (for example infinity) the behaviour of discrete dynamical system :

$z_{n+1} = f_c(z_n) = z_n^2 + c \,$

based on complex quadratic polynomial $f_c(z) = z^2 + c\,$ is similar to

$w_{n+1} = f_0(w_n) = w_n^2 \,$

based on $f_0(w) = w^2\,$

It can be treated as one dynamical system viewed in two coordinate systems :

• easy ( w )
• hard to analyse( z )

[2]

In other words map $f_c\,$ is conjugate [3] to map $f_0\,$ near infinity. [4]

## History

In 1904 LE Boettcher solved Schröder equation[5][6] in case of supperattracting fixed point[7]

## Names

• $w\,$ is Boettcher coordinate
• $\Phi_c \,$ is Boettcher function
• Boettcher Functional Equation [8][9]: $\Phi_c(f_c(z)) = \Phi_c(z)^2 \,$

where :

$w = \Phi_c(z)\,$

Exterior or complement of filled-in Julia set is :

$A_{f_c}(\infty) = K(f_c)^C = F_\infty$

It can be analysed using

• escape time (simple but gives only radial values = escape time ) LSM/J,
• distance estimation ( more advanced, continuus, but gives only radial values = distance ) DEM/J
• Boettcher coordinate or complex potential ( the best , gives  :
• radial values ( real potential ) LogPhi = CPM/J
• angular values ( external angle ) ArgPhi

So both values can be used to color with 2D gradient.

First compute Boettcher coordinate $w\,$ using this formula [10]

$w = \Phi_c(z) = z* \prod_{n=1}^\infty \left( \frac{f_c^n(z)}{f_c^n(z)-c}\right )^{1/2^n}\,$

It looks "simple", but square root of complex nuber gives two values so one have to choose one value.

# Complex potential on dynamical plane

## LogPhi - Douady-Hubbard potential - real potential - radial component of complex potential

### CPM/J

Potential of filled Julia set
Diagram of potential computed with 2 methods : simple and full

Note that potential inside Kc is zero so :

Pseudocode version :

if (LastIteration==IterationMax)
then potential=0    /* inside  Filled-in Julia set */
else potential= GiveLogPhi(z0,c,ER,nMax); /* outside */


It also removes potential error for log(0).

#### Full version

Math (full) notation : [11]

$LogPhi_c(z) = ln |z| + \sum_{n=1}^\infty \frac{1}{2^n} ln | 1 + \frac{c}{(f_c^{n-1}(z))^2}|$

Maxima (full) function :

GiveLogPhi(z0,c,ER,nMax):=
block(
[z:z0,
logphi:log(cabs(z)),
fac:1/2,
n:0],
while n<nMax and abs(z)<ER do
(z:z*z+c,
logphi:logphi+fac*log(cabs(1+c/(z*z))),
n:n+1
),
return(float(logphi))
)$ #### Simplified version The escape rate function of a polynomial f is defined by : $G_f(z) = \lim_{n\rightarrow \infty}\frac{1}{2^n} log^+ |f^n(z)| \,$ where : $log^+ = max(log,0)$ "The function Gp is continous on C and harmonic on the complement of the Julia set. It vanishes identically on K(f) and as it has a logarithmic pole at infinity, it is a it is the Green's function for C/ K(f)." ( Laura G. DeMarco) [12] Math simplified formula : $SLogPhi_c(z) = \frac{log(f^n(z))}{ 2^n} \,$ Maxima function : GiveSLogPhi(z0,c,e_r,i_max):= block( [z:z0, logphi, fac:1/2, i:0 ], while i<i_max and cabs(z)<e_r do (z:z*z+c, fac:fac/2, i:i+1 ), logphi:fac*log(cabs(z)), return(float(logphi)) )$


If you don't check if orbit is not bounded ( escapes, bailout test) then use this Maxima function :

GiveSLogPhi(z0,c,e_r,i_max):=
block(
[z:z0, logphi, fac:1/2, i:0],
while i<i_max and cabs(z)<e_r do
(z:z*z+c,
fac:fac/2,
i:i+1 ),
if i=i_max
then logphi:0
else logphi:fac*log(cabs(z)),
float(logphi)
)$ C version : double jlogphi(double zx0, double zy0, double cx, double cy) /* this function is based on function by W Jung http://mndynamics.com */ { int j; double zx=zx0, zy=zy0, s = 0.5, zx2=zx*zx, zy2=zy*zy, t; for (j = 1; j < 400; j++) { s *= 0.5; zy = 2 * zx * zy + cy; zx = zx2 - zy2 + cx; zx2 = zx*zx; zy2 = zy*zy; t = fabs(zx2 + zy2); // abs(z) if ( t > 1e24) break; } return s*log2(t); // log(zn)* 2^(-n) }//jlogphi  Euler version by R. Grothmann ( with small change : from z^2-c to z^2+c) :[13] function iter (z,c,n=100) ... h=z; loop 1 to n; h=h^2+c; if totalmax(abs(h))>1e20; m=#; break; endif; end; return {h,m}; endfunction x=-2:0.05:2; y=x'; z=x+I*y; {w,n}=iter(z,c); wr=max(0,log(abs(w)))/2^n;  ### Level Sets of potential = pLSM/J Here is Delphi function which gives level of potential : Function GiveLevelOfPotential(potential:extended):integer; var r:extended; begin r:= log2(abs(potential)); result:=ceil(r); end;  ### Level Curves of potential = equipotential lines = pLCM/J ## ArgPhi - External angle - angular component of complex potential One can start with binary decomposition of basin of attraction of infinity. The second step can be using $\Psi_c\,$ polar coordinate system and Psi_c for c=-2 ### period detection How to find period of external angle measured in turns under doubling map : Here is Common Lisp code : (defun give-period (ratio-angle) "gives period of angle in turns (ratio) under doubling map" (let* ((n (numerator ratio-angle)) (d (denominator ratio-angle)) (temp n)) ; temporary numerator (loop for p from 1 to 100 do (setq temp (mod (* temp 2) d)) ; (2 x n) modulo d = doubling) when ( or (= temp n) (= temp 0)) return p )))  Maxima CAS code : doubling_map(n,d):=mod(2*n,d);  /* catch-throw version by Stavros Macrakis, works */ GivePeriodOfAngle(n0,d):= catch( block([ni:n0], for i thru 200 do if (ni:doubling_map(ni,d))=n0 then throw(i), 0 ) )$

/* go-loop version, works */
GiveP(n0,d):=block(
[ni:n0,i:0],
block(
loop,
ni:doubling_map(ni,d),
i:i+1,
if i<100 and not (n0=ni) then go(loop)
),
if (n0=ni)
then i
else 0
);

/* Barton Willis while version without for loop , works */
GivePeriod(n0,d):=block([ni : n0,k : 1],
while (ni : doubling_map(ni,d)) # n0 and k < 100 do (
k : k + 1),


## Lamination of dynamical plane

Lamination of rabbit Julia set

Here is long description

# References

1. Neighbourhood in wikipedia
2. The work of George Szekeres on functional equations by Keith Briggs
3. Topological conjugacy in wikipedia
4. How to draw external rays by Wolf Jung
5. Schröder equation in wikipedia
6. Lucjan Emil Böttcher and his mathematical legacy by Stanislaw Domoradzki, Malgorzata Stawiska
7. L. E. Boettcher, The principal laws of convergence of iterates and their aplication to analysis (Russian), Izv. Kazan. fiz.-Mat. Obshch. 14) (1904), 155-234.
8. Böttcher equation at Hyperoperations Wiki
9. wikipedia : Böttcher's equation
10. How to draw external rays by Wolf Jung
11. The Beauty of Fractals, page 65
12. Holomorphic families of rational maps: dynamics, geometry, and potential theory. A thesis presented by Laura G. DeMarco
13. Euler examples by R. Grothmann
14. A. Douady, “Algorithms for computing angles in the Mandelbrot set,” in Chaotic Dynamics and Fractals, M. Barnsley and S. G. Demko, Eds., vol. 2 of Notes and Reports in Mathematics in Science and Engineering, pp. 155–168, Academic Press, Atlanta, Ga, USA, 1986.
15. Thierry Bousch : De combien tournent les rayons externes? Manuscrit non publié, 1995
16. Program Mandel by Wolf Jung
17. Explanation by Wolf Jung
18. Modular arithmetic in wikipedia
19. Square root of complex number gives 2 values so one has to choose only one. For details see Wolf Jung page
20. c program by Curtis McMullen (quad.c in Julia.tar.gz)
21. Quadratische Polynome by Matjaz Erat