411 REFERENCE · Wikibooks
Fractals/Iterations in the complex plane/Mandelbrot set/centers
Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.
name ( synonims )
center of hyperbolic component of Mandelbrot set
Nucleus of a Mu-Atom Nucleus - From the Mandelbrot Set Glossary and Encyclopedia, by Robert Munafo, (c) 1987-2015.
definition
A center of a hyperbolic component H is a parameter ( or point of parameter plane ) such that the corresponding periodic orbit has multiplier= 0." Surgery in Complex Dynamics by Carsten Lunde Petersen, online paper
Initial domain
"All centers of M of any period are contained in the interior of M, so that the circle C = {z ∈ C: |z − 0.75| = 2} surrounds all centers. "
"one can exploit the real symmetry of M and only use starting points with non-negative imaginary parts; "NEWTON’S METHOD IN PRACTICE: FINDING ALL ROOTS OF POLYNOMIALS OF DEGREE ONE MILLION EFFICIENTLY by DIERK SCHLEICHER AND ROBIN STOLL
Period
Period of center = period of critical orbit = period of hyperbolic component
Julia set
It is the easiest case for drawing Julia sets.
Dynamical plane consist of 2 superattracting basins
exterior ( ininity is a superattracting fixed point)
interior ( z=0 is one of superattracting periodic points)
See commons categories:
commons Category:Circle Julia sets = period 1 center Julia set
commons Category:Basilica Julia sets = period 2 Julia set
period 3 centers
commons Category:Douady rabbit Julia sets
commons Category:Airplane Julia sets
Number of Mandelbrot set components
Equation :
where :
N(p) is a number of all components of Mandelbrot set for given period p.
p is a period
s is a sum of numbers of its components for each divisordivisor in wikipedia of period smaller than period p
All values are positive integers. It is sequence A000740
Program in Maxima CAS :
N(p) := block(
[a:2^(p-1),f:0],
for f in divisors(p) do
if f < p then a : a - N(f),
return(a)
);
One can run it :
for p:1 thru 50 step 1 do display(N(p));
N(1)=1
N(2)=1
N(3)=3
N(4)=6
N(5)=15
N(6)=27
N(7)=63
N(8)=120
N(9)=252
N(10)=495
N(11)=1023
N(12)=2010
N(13)=4095
N(14)=8127
N(15)=16365
N(16)=32640
N(17)=65535
N(18)=130788
N(19)=262143
N(20)=523770
N(21)=1048509
N(22)=2096127
N(23)=4194303
N(24)=8386440
N(25)=16777200
N(26)=33550335
N(27)=67108608
N(28)=134209530
N(29)=268435455
N(30)=536854005
N(31)=1073741823
N(32)=2147450880
N(33)=4294966269
N(34)=8589869055
N(35)=17179869105
N(36)=34359605280
N(37)=68719476735
N(38)=137438691327
N(39)=274877902845
N(40)=549755289480
N(41)=1099511627775
N(42)=2199022198821
N(43)=4398046511103
N(44)=8796090925050
N(45)=17592186027780
N(46)=35184367894527
N(47)=70368744177663
N(48)=140737479934080
N(49)=281474976710592
N(50)=562949936643600
or :
sum(N(p),p,1,50);
result :
1125899873221781
Also c program:
/*
gcc c.c -lm -Wall
./a.out
Root point between period 1 component and period 987 component = c = 0.2500101310666710+0.0000000644946597
Internal angle (c) = 1/987
Internal radius (c) = 1.0000000000000000
*/
#include <stdio.h>
#include <math.h> // M_PI; needs -lm also
#include <complex.h>
// numer of hyberolic components ( and it's centers ) of Mandelbrot set
int GiveNumberOfCenters(int period){
//int s = 0;
int num = 1;
int f;
int fMax = period-1; //sqrt(period); // https://stackoverflow.com/questions/11699324/algorithm-to-find-all-the-exact-divisors-of-a-given-integer
if (period<1 ) {printf("input error: period should be positive integer \n"); return -1;}
if (period==1) { return 1;}
num = pow(2, period-1);
// minus sum of number of center of all it's divisors (factors)
for (f=1; f<= fMax; ++f){
if (period % f==0)
{num = num - GiveNumberOfCenters(f); }
}
return num ;
}
int ListNumberOfCenters(int period){
int p=1;
int pMax = period;
int num=0;
if (period ==1 || period==2) {printf (" for period %d there is only one component\n", period); return 0;}
for (p=1; p<= pMax; ++p){
num = GiveNumberOfCenters(p);
printf (" for period %d there are %d components\n", p, num);
}
return 0;
}
int main (){
int period = 15;
ListNumberOfCenters(period);
return 0;
}
See also
Counting Hyperbolic Components in the Main Molecule
How to compute centers ?
Methods :
all centers for given period
solving or FF Topic: The Mandelbrot Polynomial Roots Challenge (Read 5233 times)
showing results in graphical form
using numerical methodsPiers Lawrence and Rob Corless : Mandelbrot Polynomials and Matrices. 1 ; 048 ; 575 roots of period 21 IAP Poster 2013
"quick and dirty" algorithm : check if then colour c-point with colour n. Here n is a period of attracting orbit and eps is a radius of circle around attracting point = precision of numerical comutations
finding all roots of polynomial
The iterated refinement Newton methodNewton's method in practice II: The iterated refinement Newton method and near-optimal complexity for finding all roots of some polynomials of very large degrees by Robin Stoll, Dierk Schleicher
the Ehrlich-Aberth iteration ( Mpsolvewikipedia : MPSolve )
atom domains
Myrberg's method Determination of Mandelbrot Set's Hyperbolic Component Centres by G Alvarez, M Romera, G Pastor and F Montoya. Chaos, Solitons & Fractals 1998, Vol 9 No 12 pp 1997-2005Myrberg, P J, Iteration der reelen polynome zweiten GradesIII, Ann. Acad. Sci. Fennicae, A. I no. 348, 1964.
interval arithmetics and a divide and conquer strategy evaldraw script that can compute 1 million root by knighty
"Searching is performed using a quadtree subdivision of the grid which increases search resolution in areas of higher root density. Within a search area first a map of the function magnitude is made at moderate resolution, then points of local minimum are refined using 640 bit fixed point math. Root searching requires twice the precision of the desired result due to multiplying very small numbers. As roots are added the quadtree is subdivided further and the search continues. Only the upper half plane is searched due to symmetry.
Quadtree depth was purposely limited on higher periods to reduce run time since the number of roots becomes unmanageable." James Artherton
one center for given period near given point
some steps of Newton method for solving
System of equations defining centers
right|thumb|Centers of hyperbolic components for period 10
right|thumb|Centers of hyperbolic components for period 1-10 computed using irreducible polynomials
Center of hyperbolic component is a point of parameter plain, for which periodic z-cycle is superattracting.
It gives a system of 2 equations defining centers of period hyperbolic components :
first defines periodic point ,
second makes point superattracting.
see definitions for details.
"These polynomials have integer coefficients. They can be obtained by a recurrent relation on the degree. Let Pd the polynomial of degree d. We have" A ROOTFINDING ALGORITHM FOR POLYNOMIALS AND SECULAR EQUATIONS by LEONARDO ROBOL
Solving system of equations
Second equation can be solved when critical point is in this cycle :
To solve system put into first equation.
Equation defining centers
One gets equation :
Centers of components are roots of above equation.
Because one can remove z from these equations :
for period 1 : z^2+c=z and z=0 so
for period 2 : (z^2+c)^2 +c =z and z=0 so
for period 3 : ((z^2+c)^2 +c)^2 +c = z and z=0 so
Here is Maxima functions for computing above functions :
P[n]:=if n=1 then c else P[n-1]^2+c;
Reduced equation defining centers
Set of roots of above equation contains centers for period p and its divisors. It is because :
where :
= Gleason's period-m polynomial mathoverflow question: discriminants-of-gleasons-period-n-polynomials-for-the-mandelbrot-set= irreducible divisors irreducible divisors at wikipedia of V Dolotin , A Morozow : On the shapes of elementary domains or why Mandelbrot set is made from almost ideal circles ?irreducible
capital Pi notation of iterated multiplication is used
means here : for all divisors of ( from 1 to p ). See table of divisors.
For example, :
So one can find irreducible polynomials using :
Here is Maxima function for computing :
GiveG[p]:=
block(
[f:divisors(p),
t:1], /* t is temporary variable = product of Gn for (divisors of p) other than p */
f:delete(p,f), /* delete p from list of divisors */
if p=1
then return(Fn(p,0,c)),
for i in f do t:t*GiveG[i],
g: Fn(p,0,c)/t,
return(ratsimp(g))
)$
Here is a table with degree of and for periods 1-10 and precision needed to compute coefficients of these functions (the roots can be calculated with lower precision, provided you work with the unexpanded form ).
period 1 1 1 16 2 2 1 16 3 4 3 16 4 8 6 16 5 16 15 16 6 32 27 16 7 64 63 32 8 128 120 64 9 256 252 128 10 512 495 3001110241023600
Where:
fpprec is the number of significant decimal digits for arithmetic on bigfloat numbersmaxima manual : fpprec
Here is a table of greatest coefficients.
period 10120131241353116645892711179994333728211062509775078651239969441679376702280739606341905964246925703665243710868628368409108737879219742421590101854259266273924842041232587715869246932155857567626411179307954157519416310480198744646044941023074672212201592336666825190665221680585174032224052483643672228833833882969097257874618885560816937172481027939807172551469349507844122611544
Precision can be estimated as bigger than size of binary form of greatest coefficient :
period 1 1 1 16 2 1 1 16 3 3 2 16 4 6 2 16 5 15 7 16 6 27 13 16 7 63 34 32 8 120 67 64 9 252 144 128 10 495 286 300111023596600
Here is Maxima code for
period_Max:11;
/* ----------------- definitions -------------------------------*/
/* basic function = monic and centered complex quadratic polynomial
http://en.wikipedia.org/wiki/Complex_quadratic_polynomial
*/
f(z,c):=z*z+c $
/* iterated function */
fn(n, z, c) :=
if n=1 then f(z,c)
else f(fn(n-1, z, c),c) $
/* roots of Fn are periodic point of fn function */
Fn(n,z,c):=fn(n, z, c)-z $
/* gives irreducible divisors of polynomial Fn[p,z=0,c] */
GiveG[p]:=
block(
[f:divisors(p),t:1],
g,
f:delete(p,f),
if p=1
then return(Fn(p,0,c)),
for i in f do t:t*GiveG[i],
g: Fn(p,0,c)/t,
return(ratsimp(g))
)$
/* degree of function */
GiveDegree(_function,_var):=hipow(expand(_function),_var);
log10(x) := log(x)/log(10);
/* ------------------------------*/
file_output_append:true; /* to append new string to file */
grind:true;
for period:1 thru period_Max step 1 do
(
g[period]:GiveG[period], /* function g */
d[period]:GiveDegree(g[period],c), /* degree of function g */
cf[period]:makelist(coeff(g[period],c,d[period]-i),i,0,d[period]), /* list of coefficients */
cf_max[period]:apply(max, cf[period]), /* max coefficient */
disp(cf_max[period]," ",ceiling(log10(cf_max[period]))),
s:concat("period:",string(period)," cf_max:",cf_max[period]),
stringout("max_coeff.txt",s)/* save output to file as Maxima expressions */
);
See also:
math.stackexchange question: irreducible-factors-of-mandelbrot-polynomials
Graphical methods for finding centers
All these methods shows centers for period n and its divisors.
right|thumb|Animation showing colors proportional to absolute value of iterations 1-20
right|thumb|Absolute value of first iteration
right|thumb|Color shows in which quadrant 5-th iteration lands
color is proportional to magnitude of zn
color is proportional to magnitude of zn Mandelbrot Set in R by J.D. Long
Parameter plane is scanned for points c for which orbit of critical point vanishes Fractal Stream help file
YouTube video : Mandelbrot Oscillations youtube video : Mandelbrot Oscillations
color shows in which quadrant zn lands
right|thumb|ninth-decomposition. Image and src code
This is radial nth-decomposition of exterior of Mandelbrot set ( compare it with n-th decomposition of LSM/M )
4 colors are used because there are 4 quadrants :
re(z_n) > 0 and im(z_n) > 0 ( 1-st quadrant )
re(z_n) < 0 and im(z_n) > 0 ( 2-nd quadrant )
re(z_n) < 0 and im(z_n) < 0 ( 3-rd quadrant )
re(z_n) > 0 and im(z_n) < 0 (4-th quadrant ).
"... when the four colors are meeting somewhere, you have a zero of q_n(c), i.e., a center of period dividing n. In addition, the light or dark color shows if c is in M." ( Wolf Jung )
Here is fragment of c code for computing 8-bit color for point c = cx + cy * i :
/* initial value of orbit = critical point Z= 0 */
Zx=0.0;
Zy=0.0;
Zx2=Zx*Zx;
Zy2=Zy*Zy;
/* the same number of iterations for all points !!! */
for (Iteration=0;Iteration<IterationMax; Iteration++)
{
Zy=2*Zx*Zy + Cy;
Zx=Zx2-Zy2 +Cx;
Zx2=Zx*Zx;
Zy2=Zy*Zy;
};
/* compute pixel color (8 bit = 1 byte) */
if ((Zx>0) && (Zy>0)) color[0]=0; /* 1-st quadrant */
if ((Zx<0) && (Zy>0)) color[0]=10; /* 2-nd quadrant */
if ((Zx<0) && (Zy<0)) color[0]=20; /* 3-rd quadrant */
if ((Zx>0) && (Zy<0)) color[0]=30; /* 4-th quadrant */
One can also find cpp code in function quadrantqn from class mndlbrot in mndlbrot.cpp file from source code of program Mandel by Wolf JungMultiplatform cpp program Mandel by Wolf Jung
The differences from standard loop are :
there is no bailout test (for example for max value of abs(zn) ). It means that every point has the same number of iterations. For large n overflow is possible. Also one can't use test Iteration==IterationMax
Iteration limit is relatively small ( start for example IterationMax = 8 )
See also code in SageFormation of Escape-Time Fractals By Christopher Olah
using Gaussian wave function method _3__The_Dark Exploding the Dark Heart of Chaos by Chris King March-Dec 2009
Newton method
Newton method for finding one root
Lists of centers
centers for periods 1-20 ( sum = 1 045 239 ) by James Artherton. Made with custom software using 320 bit fixed point math (approx. 92 decimal digits) and a quadtree subdivision of the grid to increase the search resolution in areas with higher root density. This adapts to very fine resolution in the tips of the antennae.Fractal Dragons by James Artherton
largest islands by Robert P MunafoLargest Islands by Robert P. Munafo, 2010 Oct 21mrob : largest-islands.txt
a database of all islands up to period 16, found by tracing external rays (period, islandhood, angled internal address, lower external angle numerator, denominator, upper numerator, denominator, orientation, size, centre realpart, imagpart) a database of all islands up to period 16, found by tracing external rays by Claude
real centers of components computed by Jay R. Hillreal centers of components computed by Jay R. Hill
collection of centers listsmset centers
islands
madore.org/~david math/mandpoints.dat
List:
c = 0.339410819995598 -0.050668285162643 i period = 11, distorted minibrot
c = 0.325589509550660 -0.038047880934756 i period = 12, distorted minibrot
c = 0.314559489984000 -0.029273969079000 i period = 13, distorted minibrot
c = 0.272149607027528 +0.005401159465460 i period = 22, distorted minibrotmath.stackexchange question: mini-mandelbrots-are-they-exact-copies?
85 0.355534 -0.337292
134 -1.7492046334590113301 -2.8684660234660531403e-04
268 -1.7492046334594190961 -2.8684660260955536656e-04
272 3.060959246472445584e-01 2.374276727158354376e-02
204 3.06095924633099439e-01 2.3742767284688944e-02
204 3.06095924629285095e-01 2.37427672645622342e-02
136 3.06095924643046857e-01 2.374276727237906e-02
68 3.06095924629536442e-01 2.37427672749394494e-02
134 -1.7492046334590114 -2.8684660234659111e-04
267 -1.1822493706369402373694114253571e-01 6.497492977188836930425943612155e-01
268 -1.182402951560276787014475129283e-01 6.4949165134945441813936036487738e-01
18 -0.814158841137593 0.189802029306573
32 0.2925755 -0.0149977
52 -0.22817920780250860271129306628202459167994 1.11515676722969926888221122588497247465766
programs
MPSolve
mandelbrot-solver
It is a package for Ubuntu
A solver for Mandelbrot polynomials based on MPSolve.
A polynomial rootfinder that can determine arbitrary precision approximations with guaranteed inclusion radii.
It supports exploiting of polynomial structures such as sparsisty and allows for polynomial implicitly defined or in some non standard basis.
This binary, provided as an example of custom polynomial implementation in the MPSolve package, uses the particular structure of this family of polynomials to develop
an efficient solver that exhibit experimental O(n^2) complexity.
This package contains the specialization of mpsolve to Mandelbrot polynomials.
example :
mandelbrot-solver
Usage: mandelbrot-solver n [starting_file]
Parameters:
- n is the level of the Mandelbrot polynomial to solve
- starting_file is an optional file with the approximations that shall be
use as starting points.
a@zelman:~$ mandelbrot-solver 2
(-1.22561166876654e-01, 7.44861766619744e-01)
(-1.75487766624669e+00, 0.00000000000000e+00)
(-1.22561166876654e-01, -7.44861766619744e-01)
a@zelman:~$ mandelbrot-solver 1
(-1.00000000000000e+00, 0.00000000000000e+00)
a@zelman:~$ mandelbrot-solver 3
( 2.82271390766914e-01, 5.30060617578525e-01)
(-1.56520166833755e-01, 1.03224710892283e+00)
(-1.94079980652948e+00, 1.26679600613393e-16)
(-1.00000000000000e+00, 0.00000000000000e+00)
(-1.31070264133683e+00, -7.22823506473338e-18)
(-1.56520166833755e-01, -1.03224710892283e+00)
( 2.82271390766914e-01, -5.30060617578525e-01)
It seems that:
level = period -1
and then results are centers.
Notes
irreducibleIt is conjectured that the polynomials (for the centers) are irreducible, but this has not been proved yet - Wolf Jung
References
A comparison of solution methods for Mandelbrot-like polynomials by Eunice Y. S. Chan. 2016