"Most programs for computing Julia sets work well when the underlying dynamics is hyperbolic butexperience an exponential slowdown in the parabolic case." (Mark Braverman)[1]
In other words it means that one can need days for making a good picture of parabolic Julia set with standard / naive algorithms.
There are 2 problems here:


Dynamic plane = complex z-plane:
See also:
The Leau-Fatou flower theorem states that, if function has the Taylor expansion[15]
then the complex number on the unit circle describes unit vector ( direction):
There are n equally spaced attracting directions, separated by n equally spaced repelling directions.The integer n+1 is called the multiplicity of fixed point
Function expansion: z+z^5
/* Maxima CAS */display2d:false;taylor(z+z^5, z,0,5); z + z^5
So :
Compute attracting directions:
/* Maxima CAS */solve (4*v^4 = 1, v);[v = %i/sqrt(2),v = -1/sqrt(2),v = -%i/sqrt(2),v = 1/sqrt(2)]
Function m*z+z^2
(%i7) taylor(m*z+z^2, z,0,5);(%o7) m*z+z^2
So :
(%i9) solve (v = 1, v);(%o9) [v = 1]
Ecalle cylinders[16] or Ecalle-Voronin cylinders (by Jean Ecalle[17][18])[19]
"... the quotient of a petal P under the equivalence relation identifying z and f (z) if both z and f (z) belong to P. This quotient manifold is called the Ecalle cilinder, and it is conformally isomorphic to the infinite cylinder C/Z"[20]
Physical model: the behaviour of cake when one uses eggbeater.
The mathematical model: a 2D vector field with 2 centers (second-order degenerate points)[21][22]
The field is spinning about the centers, but does not appear to be diverging.
Maybe better description of parabolic dynamics will be Hawaiian earrings
germ of vector field
"the horn map h = Φ ◦ Ψ, where Φ is a shorthand for Φattr and Ψ for Ψrep (extended Fatou coordinate and parameterizations)."[27]


Definitions:
Sum of allpetals creates a flower[30] with center at parabolic periodic point.[31]
Cauliflower or broccoli:[32]
Please note that:
How Julia set changes along real axis (going from c=0 thru c=1/4 and further):
Perturbation of a function by complex:
When one add epsilon > 0 (move along real axis toward + infinity) there is abifurcation of parabolic fixed point:
"If we slightly perturb with epsilon<0 then the parabolic fixed point splits up into two real fixed points on the real axis (one attracting, one repelling)."
See:
Parabolic imposion
| parameter c | location | Julia set | interior | type of dynamics | critical point | fixed points |
|---|---|---|---|---|---|---|
| c = 0 | center, interior | connected | exist | superattracting | attracted to alfa fixed point | fixed critical point equal to alfa fixed point, alfa is superattracting, beta is repelling |
| 0<c<1/4 | internal ray 0, interior | connected | exist | attracting | attracted to alfa fixed point | alfa is attracting, beta is repelling |
| c = 1/4 | cusp, boundary | connected | exist | parabolic | attracted to alfa fixed point | alfa fixed point equal to beta fixed point, both are parabolic |
| c>1/4 | external ray 0, exterior | disconnected | disappears | - | repelling to infinity | both finite fixed points are repelling |
Video on YouTube[33]
singularity types:
"A curvilinear sector is defined as the region bounded by a circle C with arbitrary small radius and two streamlines S and S! both converging towards singularity. One then considers the streamlines passing through the open sector g in order to distinguish between three possible types of curvilinear sectors."
Dynamics:
Local dynamics:
See also

Why analyze f^p not f ?
Forward orbit of f near parabolic fixed point is composite. It consist of 2 motions:
Type of parabolic parameters:
| n | Internal angle (rotation number) t = 1/n | The root point c = parabolic parameter | Two external angles of parameter rays landing on the root point c (1/(2^n+1); 2/(2^n+1) | fixed point | external angles of dynamic rays landing on fixed point |
|---|---|---|---|---|---|
| 1 | 1/1 | 0.25 | (0/1 ; 1/1) | 0.5 | (0/1 = 1/1) |
| 2 | 1/2 | -0.75 | (1/3; 2/3) | -0.5 | (1/3; 2/3) |
| 3 | 1/3 | 0.64951905283833*%i-0.125 | (1/7; 2/7) | 0.43301270189222*%i-0.25 | (1/7; 2/7; 3/7) |
| 4 | 1/4 | 0.5*%i+0.25 | (1/15; 2/15) | 0.5*%i | (1/15; 2/15; 4/15; 8/15) |
| 5 | 1/5 | 0.32858194507446*%i+0.35676274578121 | (1/31; 2/31) | 0.47552825814758*%i+0.15450849718747 | (1/31; 2/31; 4/31; 8/31; 16/31) |
| 6 | 1/6 | 0.21650635094611*%i+0.375 | (1/63; 2/63) | 0.43301270189222*%i+0.25 | (1/63; 2/63; 4/63; 8/63; 16/63; 32/63) |
| 7 | 1/7 | 0.14718376318856*%i+0.36737513441845 | (1/127; 2/127) | 0.39091574123401*%i+0.31174490092937 | (1/127; 2/127, 4/127; 8/127; 16/127; 32/127, 64/127) |
| 8 | 1/8 | 0.10355339059327*%i+0.35355339059327 | 0.35355339059327*%i+0.35355339059327 | ||
| 9 | 1/9 | 0.075191866590218*%i+0.33961017714276 | 0.32139380484327*%i+0.38302222155949 | ||
| 10 | 1/10 | 0.056128497072448*%i+0.32725424859374 | 0.29389262614624*%i+0.40450849718747 |
For internal angle n/p parabolic period p cycle consist of one z-point with multiplicity p[36] andmultiplier = 1.0 . This point z is equal to fixed point
One can easily compute boundary point c
of period 1 hyperbolic component (main cardioid) for giveninternal angle (rotation number) t using thiscpp code by Wolf Jung[37]
t*=(2*PI);// from turns to radianscx=0.5*cos(t)-0.25*cos(2*t);cy=0.5*sin(t)-0.25*sin(2*t);
or thisMaxima CAS code:
/* conformal map from circle to cardioid ( boundary of period 1 component of Mandelbrot set */F(w):=w/2-w*w/4;/* circle D={w:abs(w)=1 } where w=l(t,r) t is angle in turns ; 1 turn = 360 degree = 2*Pi radians r is a radius */ToCircle(t,r):=r*%e^(%i*t*2*%pi);GiveC(angle,radius):=( [w], /* point of unit circle w:l(internalAngle,internalRadius); */ w:ToCircle(angle,radius), /* point of circle */ float(rectform(F(w))) /* point on boundary of period 1 component of Mandelbrot set */)$compile(all)$/* ---------- global constants & var ---------------------------*/Numerator: 1;DenominatorMax: 10;InternalRadius: 1;/* --------- main -------------- */for Denominator:1 thru DenominatorMax step 1 do( InternalAngle: Numerator/Denominator, c: GiveC(InternalAngle,InternalRadius), display(Denominator), display(c), /* compute fixed point */ alfa:float(rectform((1-sqrt(1-4*c))/2)), /* alfa fixed point */ display(alfa))$// cpp code by W Jung http://www.mndynamics.comt*=(2*PI);// from turns to radianscx=0.25*cos(t)-1.0;cy=0.25*sin(t);
/*batch file for Maxima CAS computing bifurcation points for period 1-6 Formulae for cycles in the Mandelbrot set IIStephenson, John; Ridgway, Douglas T.Physica A, Volume 190, Issue 1-2, p. 104-116.*/kill(all);remvalue(all);start:elapsed_run_time ();/* ------------ functions ----------------------*//* exponential for of complex number with angle in turns */ /* "exponential form prevents allroots from working", code by Robert P. Munafo */GivePoint(Radius,t):=rectform(ev(Radius*%e^(%i*t*2*%pi), numer))$ /* gives point of unit circle for angle t in turns */GiveCirclePoint(t):=rectform(ev(%e^(%i*t*2*%pi), numer))$ /* gives point of unit circle for angle t in turns Radius = 1 *//* gives a list of iMax points of unit circle */GiveCirclePoints(iMax):=block( [circle_angles,CirclePoints], CirclePoints:[], circle_angles:makelist(i/iMax,i,0,iMax), for t in circle_angles do CirclePoints:cons(GivePoint(1,t),CirclePoints), return(CirclePoints) /* multipliers */)$/* http://commons.wikimedia.org/wiki/File:Mandelbrot_set_Components.jpg Boundary equation b_n(c,P)=0 defines relations between hyperbolic components and unit circle for given period n , allows computation of exact coordinates of hyperbolic componenets.b_n(w,c), is boundary polynomial (implicit function of 2 variables).*/GiveBoundaryEq(P,n):=block( if n=1 then return(c + P^2 - P), if n=2 then return(- c + P - 1), if n=3 then return(c^3 + 2*c^2 - (P-1)*c + (P-1)^2), if n=4 then return(c^6 + 3*c^5 + (P+3)* c^4 + (P+3)* c^3 - (P+2)*(P-1)*c^2 - (P-1)^3), if n=5 then return(c^15 + 8*c^14 + 28*c^13 + (P + 60)*c^12 + (7*P + 94)*c^11 + (3*P^2 + 20*P + 116)*c^10 + (11*P^2 + 33*P + 114)*c^9 + (6*P^2 + 40*P + 94)*c^8 + (2*P^3 - 20*P^2 + 37*P + 69)*c^7 + (3*P - 11)*(3*P^2 - 3*P - 4)*c^6 + (P - 1)*(3*P^3 + 20*P^2 - 33*P - 26)*c^5 + (3*P^2 + 27*P + 14)*(P - 1)^2*c^4 - (6*P + 5)*(P - 1)^3*c^3 + (P + 2)*(P - 1)^4*c^2 - c*(P - 1)^5 + (P - 1)^6),if n=6 then return (c^27+13*c^26+78*c^25+(293 - P)*c^24+(792 - 10*P)*c^23+(1672 - 41*P)*c^22+(2892 - 84*P - 4*P^2)*c^21+(4219 - 60*P - 30*P^2)*c^20+(5313 + 155*P - 80*P^2)*c^19+(5892 + 642*P - 57*P^2 + 4*P^3)*c^18+(5843 + 1347*P + 195*P^2 + 22*P^3)*c^17+(5258 + 2036*P + 734*P^2 + 22*P^3)*c^16+(4346 + 2455*P + 1441*P^2 - 112*P^3 + 6*P^4)*c^15 + (3310 + 2522*P + 1941*P^2 - 441*P^3 + 20*P^4)*c^14 + (2331 + 2272*P + 1881*P^2 - 853*P^3 - 15*P^4)*c^13 + (1525 + 1842*P + 1344*P^2 - 1157*P^3 - 124*P^4 - 6*P^5)*c^12 + (927 + 1385*P + 570*P^2 - 1143*P^3 - 189*P^4 - 14*P^5)*c^11 + (536 + 923*P - 126*P^2 - 774*P^3 - 186*P^4 + 11*P^5)*c^10 + (298 + 834*P + 367*P^2 + 45*P^3 - 4*P^4 + 4*P^5)*(1-P)*c^9 + (155 + 445*P - 148*P^2 - 109*P^3 + 103*P^4 + 2*P^5)*(1-P)*c^8 + 2*(38 + 142*P - 37*P^2 - 62*P^3 + 17*P^4)*(1-P)^2*c^7 + (35 + 166*P + 18*P^2 - 75*P^3 - 4*P^4)*((1-P)^3)*c^6 + (17 + 94*P + 62*P^2 + 2*P^3)*((1-P)^4)*c^5 + (7 + 34*P + 8*P^2)*((1-P)^5)*c^4 + (3 + 10*P + P^2)*((1-P)^6)*c^3 + (1 + P)*((1-P)^7)*c^2 +-c*((1-P)^8) + (1-P)^9))$/* gives a list of points c on boundaries on all components for give period */GiveBoundaryPoints(period,Circle_Points):=block( [Boundary,P,eq,roots], Boundary:[], for m in Circle_Points do (/* map from reference plane to parameter plane */ P:m/2^period, eq:GiveBoundaryEq(P,period), /* Boundary equation b_n(c,P)=0 */ roots:bfallroots(%i*eq), roots:map(rhs,roots), for root in roots do Boundary:cons(root,Boundary)), return(Boundary))$/* divide llist of roots to 3 sublists = 3 components *//* ---- boundaries of period 3 components period:3$Boundary3Left:[]$Boundary3Up:[]$Boundary3Down:[]$Radius:1; for m in CirclePoints do ( P:m/2^period, eq:GiveBoundaryEq(P,period), roots:bfallroots(%i*eq), roots:map(rhs,roots), for root in roots do ( if realpart(root)<-1 then Boundary3Left:cons(root,Boundary3Left), if (realpart(root)>-1 and imagpart(root)>0.5) then Boundary3Up:cons(root,Boundary3Up), if (realpart(root)>-1 and imagpart(root)<0.5) then Boundary3Down:cons(root,Boundary3Down) ))$--------- *//* gives a list of parabolic points for given: period and internal angle */GiveParabolicPoints(period,t):=block( [m,ParabolicPoints,P,eq,roots], m: GiveCirclePoint(t), /* root of unit circle, Radius=1, angle t=0 */ ParabolicPoints:[], /* map from reference plane to parameter plane */ P:m/2^period, eq:GiveBoundaryEq(P,period), /* Boundary equation b_n(c,P)=0 */ roots:bfallroots(%i*eq), roots:map(rhs,roots), for root in roots do ParabolicPoints:cons(float(root),ParabolicPoints), return(ParabolicPoints))$compile(all)$/* ------------- constant values ----------------------*/fpprec:16;/* ------------unit circle on a w-plane -----------------------------------------*/a:GiveParabolicPoints(6,1/3);a$
/*gcc c.c -lm -Wall./a.outRoot point between period 1 component and period 987 component = c = 0.2500101310666710+0.0000000644946597Internal angle (c) = 1/987Internal radius (c) = 1.0000000000000000*/#include<stdio.h>#include<math.h>// M_PI; needs -lm also#include<complex.h>/* c functions using complex type numbers computes c from component of Mandelbrot set */complexdoubleGive_c(intPeriod,intn,intd,doubleInternalRadius){complexdoublec;complexdoublew;// point of reference plane where image of the component is a unit disk// alfa = ax +ay*i = (1-sqrt(d))/2 ; // resultdoublet;// InternalAngleInTurnst=(double)n/d;t=t*M_PI*2.0;// from turns to radiansw=InternalRadius*cexp(I*t);// map to the unit diskswitch(Period)// of component{case1:// main cardioid = only one period 1 componentc=w/2-w*w/4;// https://en.wikibooks.org/wiki/Fractals/Iterations_in_the_complex_plane/Mandelbrot_set/boundary#Solving_system_of_equation_for_period_1break;case2:// only one period 2 componentc=(w-4)/4;// https://en.wikibooks.org/wiki/Fractals/Iterations_in_the_complex_plane/Mandelbrot_set/boundary#Solving_system_of_equation_for_period_2break;// period > 2default:printf("higher periods : to do, use newton method\n");printf("for each q = Period of the Child component there are 2^(q-1) roots\n");c=10000.0;// bad valuebreak;}returnc;}voidPrintAndDescribe_c(intperiod,intn,intd,doubleInternalRadius){complexdoublec=Give_c(period,n,d,InternalRadius);printf("Root point between period %d component and period %d component = c = %.16f%+.16f*I\t",period,d,creal(c),cimag(c));printf("Internal angle (c) = %d/%d\n",n,d);//printf("Internal radius (c) = %.16f\n",InternalRadius);}/*https://stackoverflow.com/questions/19738919/gcd-function-for-cThe GCD function uses Euclid's Algorithm.It computes A mod B, then swaps A and B with an XOR swap.*/intgcd(inta,intb){inttemp;while(b!=0){temp=a%b;a=b;b=temp;}returna;}intmain(){intperiod=1;doubleInternalRadius=1.0;// internal angle in turns as a ratio = p/qintn=1;intd=987;// n/d = local angle in turnsfor(n=1;n<d;++n){if(gcd(n,d)==1)// irreducible fraction{PrintAndDescribe_c(period,n,d,InternalRadius);}}return0;}
All points of interior of filled Julia set tend to one periodic orbit (or fixed point). This point is in Julia set and is weakly attracting.[38] One can analyse only behavior near parabolic fixed point. It can be done usingcritical orbits.
There are two cases here: easy and hard.
If the Julia set near parabolic fixed point is like n-th arm star (not twisted) then one can simply check argument of zn, relative to the fixed point. See for example z+z^5. This is an easy case.
In the hard case Julia set is twisted around fixed.
Julia set of root point is topologically the same as the Julia set of the child period center, but
Examples:
Description
Steps
each will be used on an annulus
where K is fixed
Lambda form of complex quadratic polynomial which has an indifferent fixed point with multiplier at the origin[41]
where:
Choose
(* code by Professor: Mark McClure from https://marksmath.org/classes/Spring2019ComplexDynamics/ *)n=7;f[z_]=Exp[2Pi*I/n]z+z^2;Remove[F];F[0][z_]=N[Normal[Series[f[z],{z,0,30}]]];Do[F[0][z_]=Chop[N[Normal[Series[F[0][f[z]],{z,0,30}]]],10^-5],{n-1}];Do[F[k][z_]=Chop[N[Normal[Series[F[k-1][F[k-1][z]],{z,0,30}]]],10^-5],{k,1,10}](* define and compile function FF *)FF=With[{n=n,f4=Function[z,Evaluate[F[4][z]]],f5=Function[z,Evaluate[F[5][z]]],f6=Function[z,Evaluate[F[6][z]]],f7=Function[z,Evaluate[F[7][z]]],f8=Function[z,Evaluate[F[8][z]]],f9=Function[z,Evaluate[F[9][z]]],f10=Function[z,Evaluate[F[10][z]]]},Compile[{{z,_Complex}},Which[Abs[z]>1/2^3,Nest[Function[zz,N[Exp[2Pi*I/n]]zz+zz^2],z,n],Abs[z]<=1/2^9,f10[z],Abs[z]<=1/2^8,f9[z],Abs[z]<=1/2^7,f8[z],Abs[z]<=1/2^6,f7[z],Abs[z]<=1/2^5,f6[z],Abs[z]<=1/2^4,f5[z],Abs[z]<=1/2^3,f4[z],True,0]]];(* iterate 1000 times and then see what happens *)iterate=With[{FF=FF,n=n},Compile[{{z0,_Complex}},Module[{z,i},z=z0;i=0;While[1/2^9<Abs[z]<=2&&i++<1000n,z=FF[z]];z],RuntimeOptions->"Speed",CompilationTarget->"C"]];(* now compute some iteration data *)data=Monitor[Table[iterate[x+I*y],{y,Im[center]+1.2,Im[center],-0.0025},{x,Re[center]-1.2,Re[center]+1.2,0.0025}],y];(* use some symmetry to cut computation time in half *)center=First[Select[z/.NSolve[f[z]==0,z],Im[#]<0&]]/2(* center = -0.311745 - 0.390916*I *)data=Join[data,Reverse[Rest[Reverse/@data]]];(* plot it *)kernel={{1,1,1},{1,-8,1},{1,1,1}};(*classifyArg=Compile[{{z,_Complex},{z0,_Complex},{v,_Complex},{n,_Integer}},Module[{check,check2},check=n(Arg[(z0-z)/v]+Pi)/(2Pi);check2=Ceiling[check];If[check==check2,0,check2]]];classified=Map[classify,data,{2}];convolvedData=ListConvolve[kernel,classified];ArrayPlot[Sign[Abs[convolvedData]]]
Mathematical Functions of Wolfram language ( :

One can use periodic dynamic rays landing on parabolic fixed point to find narrow parts of exterior.
Let's check how many backward iterations needs point on periodic ray with external radius = 4 to reach distance 0.003 from parabolic fixed point:
| period | Inverse iterations | time |
|---|---|---|
| 1 | 340 | 0m0.021s |
| 2 | 55 573 | 0m5.517s |
| 3 | 8 084 815 | 13m13.800s |
| 4 | 1 059 839 105 | 1724m28.990s |
| C source code - click on the right to view |
|---|
| a.c: |
/*c console programto compile: gcc double_t.c -lm -Wall -march=nativeto run:time ./a.outperiodEscapeTimetime1 340 0m0.021s2 55 573 0m5.517s3 8 084 81513m13.800s4 1 059 839 105 1724m28.990speriod 1escape time = 340.000000internal angle t = 1.000000period = 1preperiod = 0cx = 0.250000cy = 0.000000alfax = 0.500000alfay = 0.000000real0m0.021s===============escape time = 55573.000000internal angle t = 0.500000period = 2preperiod = 0cx = -0.750000cy = 0.000000alfax = -0.500000alfay = 0.000000real0m5.517s===============================period = 3 c = (-0.125000; 0.649519); alfa = (-0.250000;0.433013)ea = 0.142857;internal angle t = 0.333333preperiod = 0for period = 3 escape time = 8084815real13m13.800s=====================================period = 4 c = (0.250000; 0.500000); alfa = (0.000000;0.500000)ea = 0.066667;internal angle t = 0.250000preperiod = 0for period = 4 escape time = 1059839105real1724m28.990s*/#include<stdio.h>#include<stdlib.h> // malloc#include<math.h> // M_PI; needs -lm also#include<complex.h>unsignedintperiod=4;// of child component of Mandelbrot setunsignedintnumerator=1;unsignedintdenominator;doublet;// internal angle of point c of parent component of Mandelbrot set in turnsunsignedlongintmaxiter=100000;unsignedintpreperiod=0;//of external angle under doubling mapdoublecomplexz,c,alfa;doubleea;// External Angle/* find c in component of Mandelbrot set uses complex type so #include <complex.h> and -lm uses code by Wolf Jung from program Mandel see function mndlbrot::bifurcate from mandelbrot.cpp http://www.mndynamics.com/indexp.html */doublecomplexGiveC(doubleInternalAngleInTurns,doubleInternalRadius,unsignedintperiod){//0 <= InternalRay<= 1//0 <= InternalAngleInTurns <=1// period of parent component of Mandelbrot set { 1,2 }doublet=InternalAngleInTurns*2*M_PI;// from turns to radiansdoubleR2=InternalRadius*InternalRadius;doubleCx,Cy;/* C = Cx+Cy*i */switch(period){case1:// main cardioidCx=(cos(t)*InternalRadius)/2-(cos(2*t)*R2)/4;Cy=(sin(t)*InternalRadius)/2-(sin(2*t)*R2)/4;break;case2:// only one componentCx=InternalRadius*0.25*cos(t)-1.0;Cy=InternalRadius*0.25*sin(t);break;// for each period there are 2^(period-1) roots.default:// safe valuesCx=0.0;Cy=0.0;break;}returnCx+Cy*I;}/*http://en.wikipedia.org/wiki/Periodic_points_of_complex_quadratic_mappingsz^2 + c = zz^2 - z + c = 0ax^2 +bx + c =0 // ge3neral for of quadratic equationso:a=1b =-1c = cso:The discriminant is the d=b^2-4acd=1-4c = dx+dy*ir(d)=sqrt(dx^2 + dy^2)sqrt(d) = sqrt((r+dx)/2)+-sqrt((r-dx)/2)*i = sx +- sy*ix1=(1+sqrt(d))/2 = beta = (1+sx+sy*i)/2x2=(1-sqrt(d))/2 = alfa = (1-sx -sy*i)/2alfa: attracting when c is in main cardioid of Mandelbrot set, then it is in interior of Filled-in Julia set, it means belongs to Fatou set (strictly to basin of attraction of finite fixed point)*/// uses global variables:// ax, ay (output = alfa(c))doublecomplexGiveAlfaFixedPoint(doublecomplexc){doubledx,dy;//The discriminant is the d=b^2- 4ac = dx+dy*idoubler;// r(d)=sqrt(dx^2 + dy^2)doublesx,sy;// s = sqrt(d) = sqrt((r+dx)/2)+-sqrt((r-dx)/2)*i = sx + sy*idoubleax,ay;// d=1-4c = dx+dy*idx=1-4*creal(c);dy=-4*cimag(c);// r(d)=sqrt(dx^2 + dy^2)r=sqrt(dx*dx+dy*dy);//sqrt(d) = s =sx +sy*isx=sqrt((r+dx)/2);sy=sqrt((r-dx)/2);// alfa = ax +ay*i = (1-sqrt(d))/2 = (1-sx + sy*i)/2ax=0.5-sx/2.0;ay=sy/2.0;returnax+ay*I;}doubleDistanceBetween(doublecomplexz1,doublecomplexz2){doubledx,dy;dx=creal(z1)-creal(z2);dy=cimag(z1)-cimag(z2);returnsqrt(dx*dx+dy*dy);}/* principal square root of complex number http://en.wikipedia.org/wiki/Square_root z1= I; z2 = root(z1); printf("zx = %f \n", creal(z2)); printf("zy = %f \n", cimag(z2));*/doublecomplexroot(doublecomplexz){doublex=creal(z);doubley=cimag(z);doubleu;doublev;doubler=sqrt(x*x+y*y);v=sqrt(0.5*(r-x));if(y<0)v=-v;u=sqrt(0.5*(r+x));returnu+v*I;}doublecomplexpreimage(doublecomplexz1,doublecomplexz2,doublecomplexc){doublecomplexzPrev;zPrev=root(creal(z1)-creal(c)+(cimag(z1)-cimag(c))*I);// choose one of 2 rootsif(creal(zPrev)*creal(z2)+cimag(zPrev)*cimag(z2)>0)returnzPrev;// u+v*ielsereturn-zPrev;// -u-v*i}// This function only works for periodic or preperiodic angles.// You must determine the period n and the preperiod k before calling this function.// based on same function from src code of program Mandel by Wolf Jung// http://www.mndynamics.com/indexp.htmldoublebackray(doublet,// external angle in turnsintn,//period of ray's angle under doubling mapintk,// preperiodintiterMax,doublecomplexc){doublexend;// re of the endpoint of the raydoubleyend;// im of the endpoint of the rayconstdoubleR=4;// very big radius = near infinityintj;// number of raydoubleiter=0.0;// index of backward iterationdoublecomplexzPrev;doubleu,v;// zPrev = u+v*IdoublecomplexzNext;doubledistance;/* dynamic 1D arrays for coordinates (x, y) of points with the same R on preperiodic and periodic rays */double*RayXs,*RayYs;intiLength=n+k+2;// length of arrays ?? why +2// creates arrays: RayXs and RayYs and checks if it was doneRayXs=malloc(iLength*sizeof(double));RayYs=malloc(iLength*sizeof(double));if(RayXs==NULL||RayYs==NULL){fprintf(stderr,"Could not allocate memory");getchar();return1;}// starting points on preperiodic and periodic rays// with angles t, 2t, 4t... and the same radius Rfor(j=0;j<n+k;j++){// z= R*exp(2*Pi*t)RayXs[j]=R*cos((2*M_PI)*t);RayYs[j]=R*sin((2*M_PI)*t);t*=2;// t = 2*tif(t>1)t--;// t = t modulo 1}zNext=RayXs[0]+RayYs[0]*I;//printf("RayXs[0] = %f \n", RayXs[0]);//printf("RayYs[0] = %f \n", RayYs[0]);// z[k] is n-periodic. So it can be defined here explicitly as well.RayXs[n+k]=RayXs[k];RayYs[n+k]=RayYs[k];// backward iteration of each point zdo{for(j=0;j<n+k;j++)// period +preperiod{// u+v*i = sqrt(z-c) backward iteration in fc planezPrev=root(RayXs[j+1]-creal(c)+(RayYs[j+1]-cimag(c))*I);// , u, vu=creal(zPrev);v=cimag(zPrev);// choose one of 2 roots: u+v*i or -u-v*iif(u*RayXs[j]+v*RayYs[j]>0){RayXs[j]=u;RayYs[j]=v;}// u+v*ielse{RayXs[j]=-u;RayYs[j]=-v;}// -u-v*i}// for j ...//RayYs[n+k] cannot be constructed as a preimage of RayYs[n+k+1]RayXs[n+k]=RayXs[k];RayYs[n+k]=RayYs[k];// convert to pixel coordinates// if z is in window then draw a line from (I,K) to (u,v) = part of ray// printf("for iter = %d cabs(z) = %f \n", iter, cabs(RayXs[0] + RayYs[0]*I));iter+=1.0;distance=DistanceBetween(RayXs[j]+RayYs[j]*I,alfa);printf("distance = %10.9f ; iter = %10.0f\n",distance,iter);// info}while(distance>0.003);// distance < pixel size// last point of a ray 0xend=RayXs[0];yend=RayYs[0];// free memmoryfree(RayXs);free(RayYs);returniter;//}/* ---------------------- main ------------------*/intmain(){doubleEscapeTime;// internal angledenominator=period;t=(double)numerator/denominator;//c=GiveC(t,1.0,1);alfa=GiveAlfaFixedPoint(c);//external angledenominator=pow(2,period)-1;ea=(double)1.0/denominator;//EscapeTime=backray(ea,period,preperiod,maxiter,c);//printf("period = %d ",period);printf(" c = (%f; %f);",creal(c),cimag(c));printf(" alfa = (%f;%f)\n",creal(alfa),cimag(alfa));printf("ea = %f;\n",ea);printf("internal angle t = %f\n",t);printf("preperiod = %d\n",preperiod);printf("for period = %d escape time = %10.0f\n",period,EscapeTime);//return0;} |
One can use only argument of point z of external rays and its distance to alfa fixed point (see code from image). It works for periods up to 15 (maybe more ...).
Julia set is a boundary of filled-in Julia set Kc.
If components of interior are lying very close to each other then find components using:[42]
color = LastIteration % period
For parabolic components between parent and child component:[43]
periodOfChild = denominator*periodOfParent color = iLastIteration % periodOfChild
where denominator is a denominator of internal angle of parent component of Mandelbrot set.
"if the iterate zn of tends to a fixed parabolic point, then the initial seed z0 is classified according to the argument of zn−z0, the classification being provided by the flower theorem" (Mark McClure[44])

Interior of filled Julia set consist ofcomponents. All comonents are preperiodic, some of them are periodic (immediate basin of attraction).
In other words:
It is possible to use it to color components. Because in the parabolic case the attractor is weak (weakly attracting) it needs a lot of iterations for some points to reach it.
// i = number of iteration// iPeriodChild = period of child component of Mandelbrot set ( parabolic c value is a root point between parant and child component/* distance from z to Alpha */Zxt=Zx-dAlfaX;Zyt=Zy-dAlfaY;d2=Zxt*Zxt+Zyt*Zyt;// interior: check if fall into internal target set (circle around alfa fixed point)if(d2<dMaxDistance2Alfa2)returniColorsOfInterior[i%iPeriodChild];
Here are some example values:
iWidth = 1001 // width of image in pixels PixelWidth = 0.003996 AR = 0.003996 // Radius around attractor denominator = 1 ; Cx = 0.250000000000000; Cy = 0.000000000000000 ax = 0.500000000000000; ay = 0.000000000000000 denominator = 2 ; Cx = -0.750000000000000; Cy = 0.000000000000000 ax = -0.500000000000000; ay = 0.000000000000000 denominator = 3 ; Cx = -0.125000000000000; Cy = 0.649519052838329 ax = -0.250000000000000; ay = 0.433012701892219 denominator = 4 ; Cx = 0.250000000000000; Cy = 0.500000000000000 ax = 0.000000000000000; ay = 0.500000000000000 denominator = 5 ; Cx = 0.356762745781211; Cy = 0.328581945074458 ax = 0.154508497187474; ay = 0.475528258147577 denominator = 6 ; Cx = 0.375000000000000; Cy = 0.216506350946110 ax = 0.250000000000000; ay = 0.433012701892219 denominator = 1 ; i = 243.000000 denominator = 2 ; i = 31 171.000000 denominator = 3 ; i = 3 400 099.000000 denominator = 4 ; i = 333 293 206.000000 denominator = 5 ; i = 29 519 565 177.000000 denominator = 6 ; i = 2 384 557 783 634.000000
where:
C = Cx + Cy*i a = ax + ay*i // fixed point alphai // number of iterations after which critical point z=0.0 reaches disc around fixed point alpha with radius ARdenominator of internal angle (in turns)internal angle = 1/denominator
Note that attraction time i is proportional to denominator.

Now you see what meansweakly attracting.
One can:

Julia set is a common boundary of filled-in Julia set and basin of attraction of infinity.
It works for denominator up to 4.
Inverse iteration of alfa fixed point. It works good only for cutting point (where external rays land). Other points still are not hitten.
External examples:
Forother polynomial maps see here