# Fractals/Iterations in the complex plane/boettcher

The Böttcher function of which maps the complement of the Mandelbrot set ( Julia set) conformally to the complement of the closed unit disk.

# Complex potential on dynamical plane

Exterior or complement of filled-in Julia set is :

${\displaystyle 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 )

" The dynamics of polynomials is much better understood than the dynamics of general rational maps" due to the Bottcher’s theorem[1]

## 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 )
• ${\displaystyle z_{s}=0\,}$  is finite superattracting fixed point for map ${\displaystyle f_{0}\,}$
• ${\displaystyle z_{s}=0\,}$  and ${\displaystyle z_{s}=-1\,}$  are two finite superattracting fixed points for map ${\displaystyle f_{-1}\,}$

## Description

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

${\displaystyle z_{n+1}=f_{c}(z_{n})=z_{n}^{2}+c\,}$

based on complex quadratic polynomial ${\displaystyle f_{c}(z)=z^{2}+c\,}$  is similar to

${\displaystyle w_{n+1}=f_{0}(w_{n})=w_{n}^{2}\,}$

based on ${\displaystyle f_{0}(w)=w^{2}\,}$

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

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

[3]

In other words map ${\displaystyle f_{c}\,}$  is conjugate [4] to map ${\displaystyle f_{0}\,}$  near infinity.[5]

### Names

• ${\displaystyle w\,}$  is Boettcher coordinate
• ${\displaystyle \Phi _{c}\,}$  is Boettcher function[6]
• Boettcher Functional Equation:[7][8]
 ${\displaystyle \Phi _{c}(f_{c}(z))=\Phi _{c}(z)^{2}\,}$


where :

 ${\displaystyle w=\Phi _{c}(z)\,}$


Complex potential or Boettcher coordinate has :

• radial values ( real potential ) LogPhi = CPM/J = value of the Green's function
• angular values ( external angle ) ArgPhi

Both values can be used to color with 2D gradient.

## Computation

Formula from Mathemathica[9]

${\displaystyle w=B(c,z)=\lim _{n\to \infty }z_{n}^{\frac {1}{2^{n}}}\,}$

To compute Boettcher coordinate ${\displaystyle w\,}$  use this formula [10]

${\displaystyle 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 :

### explicit closed form solution

• c = 0
• c = -2

#### c = -2

polar coordinate system and Psi_c for c=-2

For c = -2 Julia set is a horizontal segment between -2 and 2 on the real axis:[11]

${\displaystyle \ K_{-2}\ {\overset {\underset {\mathrm {def} }{}}{=}}\ \{z\in \mathbb {C} :-2\leq \operatorname {Re} (z)\leq 2,\operatorname {Im} (z)=0\}}$


Now:

• equipotential lines are elipses
• field lines are hyperbolas
• Boettcher map and it's inverse have explicit equations ( closed-form expression[12] ):
${\displaystyle \Phi _{-2}(z)={\frac {z+{\sqrt {z^{2}-4}}}{2}}\,}$

${\displaystyle \Phi ^{-1}(w)=w+{\frac {1}{w}}\,}$


where branch cut is taken to coincide with ${\displaystyle \ K_{-2}}$

• charged line segment
• Joukowsky transformation[13]

## History

In 1904 LE Boettcher:[14]

• solved Schröder functional equation[15][16] in case of supperattracting fixed point[17][18]
• "proved the existence of an analytic function ${\displaystyle \phi (z)\sim z}$  near ${\displaystyle \infty }$  which conjugates the polynomial with ${\displaystyle z^{d}}$ , that is ${\displaystyle \phi \circ p(z)=\phi (z)^{d}}$ " ( Alexandre Eremenko ) [19]

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

### The potential function and the real iteration number

The Julia set for ${\displaystyle f(z)=z^{2}}$  is the unit circle, and on the outer Fatou domain, the potential function φ(z) is defined by φ(z) = log|z|. The equipotential lines for this function are concentric circles. As ${\displaystyle |f(z)|=|z|^{2}}$  we have

${\displaystyle \varphi (z)=\lim _{k\to \infty }{\frac {\log |z_{k}|}{2^{k}}},}$

where ${\displaystyle z_{k}}$  is the sequence of iteration generated by z. For the more general iteration ${\displaystyle f(z)=z^{2}+c}$ , it has been proved that if the Julia set is connected (that is, if c belongs to the (usual) Mandelbrot set), then there exist a biholomorphic map ψ between the outer Fatou domain and the outer of the unit circle such that ${\displaystyle |\psi (f(z))|=|\psi (z)|^{2}}$ .[20] This means that the potential function on the outer Fatou domain defined by this correspondence is given by:

${\displaystyle \varphi (z)=\lim _{k\to \infty }{\frac {\log |z_{k}|}{2^{k}}}.}$

This formula has meaning also if the Julia set is not connected, so that we for all c can define the potential function on the Fatou domain containing ∞ by this formula. For a general rational function f(z) such that ∞ is a critical point and a fixed point, that is, such that the degree m of the numerator is at least two larger than the degree n of the denominator, we define the potential function on the Fatou domain containing ∞ by:

${\displaystyle \varphi (z)=\lim _{k\to \infty }{\frac {\log |z_{k}|}{d^{k}}},}$

where d = mn is the degree of the rational function.[21]

If N is a very large number (e.g. 10100), and if k is the first iteration number such that ${\displaystyle |z_{k}|>N}$ , we have that

${\displaystyle {\frac {\log |z_{k}|}{d^{k}}}={\frac {\log(N)}{d^{\nu (z)}}},}$

for some real number ${\displaystyle \nu (z)}$ , which should be regarded as the real iteration number, and we have that:

${\displaystyle \nu (z)=k-{\frac {\log(\log |z_{k}|/\log(N))}{\log(d)}},}$

where the last number is in the interval [0, 1).

For iteration towards a finite attracting cycle of order r, we have that if z* is a point of the cycle, then ${\displaystyle f(f(...f(z^{*})))=z^{*}}$  (the r-fold composition), and the number

${\displaystyle \alpha ={\frac {1}{\left|(d(f(f(\cdots f(z))))/dz)_{z=z^{*}}\right|}}\qquad (>1)}$

is the attraction of the cycle. If w is a point very near z* and w' is w iterated r times, we have that

${\displaystyle \alpha =\lim _{k\to \infty }{\frac {|w-z^{*}|}{|w'-z^{*}|}}.}$

Therefore the number ${\displaystyle |z_{kr}-z^{*}|\alpha ^{k}}$  is almost independent of k. We define the potential function on the Fatou domain by:

${\displaystyle \varphi (z)=\lim _{k\to \infty }{\frac {1}{(|z_{kr}-z^{*}|\alpha ^{k})}}.}$

If ε is a very small number and k is the first iteration number such that ${\displaystyle |z_{k}-z^{*}|<\epsilon }$ , we have that

${\displaystyle \varphi (z)={\frac {1}{(\varepsilon \alpha ^{\nu (z)})}}}$

for some real number ${\displaystyle \nu (z)}$ , which should be regarded as the real iteration number, and we have that:

${\displaystyle \nu (z)=k-{\frac {\log(\varepsilon /|z_{k}-z^{*}|)}{\log(\alpha )}}.}$

If the attraction is ∞, meaning that the cycle is super-attracting, meaning again that one of the points of the cycle is a critical point, we must replace α by

${\displaystyle \alpha =\lim _{k\to \infty }{\frac {\log |w'-z^{*}|}{\log |w-z^{*}|}},}$

where w' is w iterated r times and the formula for φ(z) by:

${\displaystyle \varphi (z)=\lim _{k\to \infty }{\frac {\log(1/|z_{kr}-z^{*}|)}{\alpha ^{k}}}.}$

And now the real iteration number is given by:

${\displaystyle \nu (z)=k-{\frac {\log(\log |z_{k}-z^{*}|/\log(\varepsilon ))}{\log(\alpha )}}.}$

For the colouring we must have a cyclic scale of colours (constructed mathematically, for instance) and containing H colours numbered from 0 to H−1 (H = 500, for instance). We multiply the real number ${\displaystyle \nu (z)}$  by a fixed real number determining the density of the colours in the picture, and take the integral part of this number modulo H.

The definition of the potential function and our way of colouring presuppose that the cycle is attracting, that is, not neutral. If the cycle is neutral, we cannot colour the Fatou domain in a natural way. As the terminus of the iteration is a revolving movement, we can, for instance, colour by the minimum distance from the cycle left fixed by the iteration.

### 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 :[22]

${\displaystyle 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 : ${\displaystyle G_{f}(z)=\lim _{n\rightarrow \infty }{\frac {1}{2^{n}}}log^{+}|f^{n}(z)|\,}$ where : ${\displaystyle 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) [23] Math simplified formula : ${\displaystyle 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) :[24] 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 The continuous potential formula doesn't align properly with iteration bands ## ArgPhi - External angle (angular component of complex potential) and external ray One can start with binary decomposition of basin of attraction of infinity. The second step can be using ${\displaystyle \Psi _{c}\,}$ ### 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. ON THE NOTIONS OF MATING by CARSTEN LUNDE PETERSEN AND DANIEL MEYER
2. Neighbourhood in wikipedia
3. The work of George Szekeres on functional equations by Keith Briggs
4. Topological conjugacy in wikipedia
5. How to draw external rays by Wolf Jung
6. wolfram : MandelbrotSetBoettcher function
7. Böttcher equation at Hyperoperations Wiki
8. wikipedia : Böttcher's equation
9. wolfram language : JuliaSetBoettcher
10. How to draw external rays by Wolf Jung
11. The Beauty of Fractals - book by Heinz-Otto Peitgen and Peter Richter, page 63
12. wikipedia  : Closed-form expression
13. Joukowsky transformation by John D. Cook
14. wikipedia : Lucjan_Böttcher
15. Schröder equation in wikipedia
16. Lucjan Emil Böttcher and his mathematical legacy by Stanislaw Domoradzki, Malgorzata Stawiska
17. 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.
18. wikipedia : Böttchers_equation
19. Mathoverflow : Growth of the size of iterated polynomials
20. Adrien Douady and John H. Hubbard, Etude dynamique des polynômes complexes, Prépublications mathémathiques d'Orsay 2/4 (1984 / 1985)
21. Peitgen, Heinz-Otto; Richter Peter (1986). The Beauty of Fractals. Heidelberg: Springer-Verlag. ISBN 0-387-15851-0.
22. The Beauty of Fractals, page 65
23. Holomorphic families of rational maps: dynamics, geometry, and potential theory. A thesis presented by Laura G. DeMarco
24. Euler examples by R. Grothmann
25. 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.
26. Thierry Bousch : De combien tournent les rayons externes? Manuscrit non publié, 1995
27. Program Mandel by Wolf Jung
28. Explanation by Wolf Jung
29. Modular arithmetic in wikipedia
30. Square root of complex number gives 2 values so one has to choose only one. For details see Wolf Jung page
31. c program by Curtis McMullen (quad.c in Julia.tar.gz)
32. Quadratische Polynome by Matjaz Erat
33. wikipedia : Complex_quadratic_polynomial / planes / Dynamical_plane
34. wikipedia : Line segment