File:Dynamical plane with branched periodic external ray 0 for map f(z) = z*z + 0.35.png

Original file(1,000 × 1,000 pixels, file size: 47 KB, MIME type: image/png)

Summary

Description
English: dynamical plane with branched periodic external ray 0 for map f(z) = z*z + 0.35. " Julia set for a polynomial ... which belongs to the ray R()(M) in parameter space. The right hand limit ray Ro bounces off infinitely many pre-critical points as it spirals in to the upper fixed point. Both fixed points have rotation number zero." [1] " The countable family of R-analytic curves on which we cannot define the function “external argument”. [2]
Date
Source Own work
Author Adam majewski
Other versions
File:Dynamical plane with branched periodic external ray 0 for map f(z) = z*z + 0.35.svg is a vector version of this file. It should be used in place of this PNG file when not inferior.

File:Dynamical plane with branched periodic external ray 0 for map f(z) = z*z + 0.35.png → File:Dynamical plane with branched periodic external ray 0 for map f(z) = z*z + 0.35.svg

For more information, see Help:SVG.

In other languages
Alemannisch  Bahasa Indonesia  Bahasa Melayu  British English  català  čeština  dansk  Deutsch  eesti  English  español  Esperanto  euskara  français  Frysk  galego  hrvatski  Ido  italiano  lietuvių  magyar  Nederlands  norsk bokmål  norsk nynorsk  occitan  Plattdüütsch  polski  português  português do Brasil  română  Scots  sicilianu  slovenčina  slovenščina  suomi  svenska  Tiếng Việt  Türkçe  vèneto  Ελληνικά  беларуская (тарашкевіца)  български  македонски  нохчийн  русский  српски / srpski  татарча/tatarça  українська  ქართული  հայերեն  বাংলা  தமிழ்  മലയാളം  ไทย  한국어  日本語  简体中文  繁體中文  עברית  العربية  فارسی  +/−
New SVG image

Papers

Video:

Licensing

I, the copyright holder of this work, hereby publish it under the following license:
w:en:Creative Commons
attribution share alike
This file is licensed under the Creative Commons Attribution-Share Alike 4.0 International license.
You are free:
  • to share – to copy, distribute and transmit the work
  • to remix – to adapt the work
Under the following conditions:
  • attribution – You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
  • share alike – If you remix, transform, or build upon the material, you must distribute your contributions under the same or compatible license as the original.


Software

  • Maxima CAS
    • draw package by Mario Rodríguez Riotorto[3]
  • gnuplot

Algorithm

Ray bifurcates at critical point and at it's preimages

Ray consist of segments ( curves between bifurcation points):

  • r0: external ray 0 goes from (+) infinity along critical orbit towards critical point z=0 ( horizontal segment). Here bifurcates.
  • segment r1 has two subsegments : r1a and r1b. These are two vertical segments from critical point z=0 towards it's two preimages : a(z) = f^-1(z) and b(z) = -a(z). So it is: [a(z), -a]
  • each (sub)segment of r1 has 2 preimages
    • a(r1a) and b(r1a)
    • a(r1b) and b(r1b)
  • repeat and infinity ( binary tree)


 Ray = r0 + r1 + r2 + ... + rn


Problems

inverse function


the standard complex square-root ( csqrt) takes values in the right halfplane, but this is rotated by the squareroot. So some points from one list goes to preimage of anothe lists. Onbe can not use gnuplot option "points joined= true".

The soultion

  • use lists with more points ( takes time) and gnuplot option "points joined= false"
  • compute only preimages of one r1 subsegment and use symetry. It is 2-4 times faster and solves the problem of csqrt

length of the list

rn is a lis, but it consist of sublist ( list of lists). Each sublist rn[k] is a list of points describint segment (one of n=th preimage's of segment r0);

rn lists
n % s
0 1.0 493
1 1.0 359
2 1.0 216
3 1.0 132
4 1.0 86
5 1.0 62
6 1.0 48
7 1.0 25
8 22
Example Example Example
Example Example Example
11 77/4096 16

Notation

  • n is a level of binary tree of preimages
  • % denotes ratio of (sublists with size > PixelSize) / ( all sublists of rn)
  • s denotes size ratio = size/PixelSize, where size = cabs( first - last)
  • segments = number of segments in the n-th list = 2^n
  • points = length(r[n][k]) = kMax + 2


List r11 has 4096 sublists ( segments) but only 77 of them are wider then Pixel size = 0.0024

r0 list: 1 / 1 =  1.0 segments has size > MinSize. MaxSize =  247 pixels 
r1 list: 2 / 2 =  1.0 segments has size > MinSize. MaxSize =  179 pixels 
r2 list: 4 / 4 =  1.0 segments has size > MinSize. MaxSize =  108 pixels 
r3 list: 8 / 8 =  1.0 segments has size > MinSize. MaxSize =  66 pixels 
r4 list: 16 / 16 =  1.0 segments has size > MinSize. MaxSize =  43 pixels 
r5 list: 32 / 32 =  1.0 segments has size > MinSize. MaxSize =  31 pixels 
r6 list: 64 / 64 =  1.0 segments has size > MinSize. MaxSize =  24 pixels 
r7 list: 128 / 128 =  1.0 segments has size > MinSize. MaxSize =  20 pixels 
r8 list: 220 / 256 =  0.859375 segments has size > MinSize. MaxSize =  19 pixels 
r9 list: 148 / 512 =  0.2890625 segments has size > MinSize. MaxSize =  18 pixels 
r10 list: 224 / 2048 =  0.109375 segments has size > MinSize. MaxSize =  17 pixels 
r11 list: 200 / 4096 =  0.048828125 segments has size > MinSize. MaxSize =  15 pixels 
r12 list: 196 / 8192 =  0.02392578125 segments has size > MinSize. MaxSize =  13 pixels 

Maxima CAS src code

new code


/*

Batch file for Maxima CAS
save as a s.mac
run maxima : 
 maxima
and then : 
batch("s.mac");

*/




kill(all);
remvalue(all);



/* ---------- functions ---------------------------------------------------- */

/* http://en.wikipedia.org/wiki/Complex_quadratic_polynomial  */

/* Forward iteration */
f(z):=float(rectform(z*z+c))$


/* 

backward iteration of complex quadratic polynomial 
when Im(z-c)  changes sign ( from quadrant (-,-) to (-,+)
then preimaga chages quadrant 

w = sqrt(z-c)

https://www.geogebra.org/m/YPGT79Zq

*/
  
b(z):=float(rectform(-sqrt(z-c)))$
a(z):=float(rectform(sqrt(z-c)))$


/* find fixed point alfa of function f(z,c)   */
GiveFixed_p(c):= float(rectform((1+sqrt(1-4*c))/2))$
GiveFixed_m(c):= float(rectform((1-sqrt(1-4*c))/2))$

/* 
converts complex number z = x*y*%i 
to the list in a draw format:  
[x,y] 
*/
d(z):=[float(realpart(z)), float(imagpart(z))]$

/* give Draw List from one point*/
dl(z):=[d(z)]$

ToPoints(myList):= points(map(d,myList))$


/* gives an orbit of z0 under fc where iMax is the length of the orbit */
 GiveForwardOrbit(z0,c, iMax):= block
(
  [i,z, orbit],
   
   z:z0,
   orbit :[z],
   i:1,
   while ( i<iMax ) 
    do
    ( 
      z:f(z),
      orbit : endcons(z, orbit),
      i:i+1
    ),
    
   return(orbit)
)$








/* 
Line segment =  part of a line that is bounded by two end points 
input : 
- 2 endpoints : z1, z2 
- imax : number of points between endpoints
output: 
- list of complex points


*/

GiveLineSegment(z1,z2,iMax):=block
(
 [l,z, dz, t , tmin, tmax,dt,i],
 dz : z2-z1,
 dt : 1/iMax, 
 tmin: 0, 
 tmax: 1,
 z:z1,
 l:[z1],
 for t:tmin thru tmax step dt 
 
  
    do
    (
     z:z1+dz*t,
     l   :cons(z,l)
    ),
return(l)
)$


minus(z) := -z;


/*

binary complete tree 

to do : 
implemented as an array
Pre-order sequence: ABDECFG ( for depth 3)
for(i=0;i<N;i++){ process node in position i; } results in a level-by-level traversal.

*/







/* 




- read input z
- compute 2 preimages a and b=-a
- output list : [a,b]
 



Give2Preimages(z):= block(
	[p],
	p: a(z),
	return([p,-p]) 
	
	)$

*/	
Give2Preimages(z):= [a(z), b(z)]$	
	
	
/* 

regular complete binary tree depth 

- read input A
- compute full tree of preimages depth d
( number = sum(2^(d-1))
- output: unsorted list zz of complex points
 
lists 
 zz is output list 
 t1 input = previous level of the tree 
 t2 next level 
 temp  temporary list 
 
 length of precritical orbit :    4 094  for depth :  11 
 length of precritical orbit :  262 142  for depth :  17 
 
 if length is to big then save time is too long



*/

GiveBTree(z, depthMax):=block(

	[ zz, t1, t2, tmp],
	zz :[], 
	t1 :[z], 
	t2 :[], 
	tmp  :[], 
		
	for depth : 1 thru depthMax step 1 do (
		
		
		for z in t1 do (
			tmp : Give2Preimages(z),
			zz : append(tmp, zz),
			t2 : append(tmp, t2)
			
		),
		
		tmp:[],
		t1:t2,
		t2:[]
		
		
	),
	
	zz:flatten(zz), 
	return (zz)
)$


/*

input: list zz
output:  list of 2 sublists  

*/


Give2PreimagesOfList(zz):=block(
	[La,Lb, LL],
	La:[],
	Lb:[],
	LL:[],
	for z in zz do (
		tmp : Give2Preimages(z),
		/* trick, sorry, but I do not know how to do it better 
		  the standard square-root takes values in the right halfplane,  but this is rotated by the squareroot of -c 
		  
		if (z = last(zz)) 
			then (
			La:cons(tmp[2], La),
			Lb:cons(tmp[1], Lb)
			
			) 
			else(*/
				La:cons(tmp[1], La),
				Lb:cons(tmp[2], Lb)
		/*	)*/
			
		/*???  check the values */
		
		
	),
	LL:[La , Lb],
	return(LL)



)$


GiveSortedBTree(zz, depthMax):=block(

	[G,  T, P , L],
	 
	 /* local input list */
	T :[],  /* local output list */
	G: [], /* global output list */
	P: [],
	L:[], 
	L:zz,
		
	for depth : 1 thru depthMax step 1 do ( 
		
		
		
		 	P : Give2PreimagesOfList(L),
		 	
			T : cons(P[1], T),
			T : cons(P[2], T),	 	
			
			G : cons(P[1], G),
			G : cons(P[2], G),
			
		P:[],
				
		L:[],	
		L:T,
		T:[]	 
		
			
		
		
		
	),
	
	
	return (G)
)$




/*

Gives external dynamic ray ( as a list of points in a draw format)
input:
- zcr: critical point z
- c : parameter of the function fc(z) = z^2 + c
- kMax : number of points in the line segment   
- parameter n : every n-th element is removed from the list to make it shorter, see ShortList

*/
GiveRay(zcr, depth_Max, k_Max):= block(
	[Ray,t,zz],
	Ray:[],
	R:[],
	t:[],
	zz:[],
	
	/* level 0 = r0 = parent node is a critical orbit */
	/* level 1 : segments between zcr and a or b(zcr) */
	zz: GiveLineSegment(zcr, a(zcr) , k_Max),
	/*ray:zz, */
	Ray : GiveSortedBTree(zz, depth_Max),
	/*
	zz : GiveLineSegment(zcr, b(zcr), kMax),
	
	for z in zz do (
		t: GiveBTree(z, depthMax),
		ray:append(t,ray)
		
		),
	*/	
	
	for L in Ray do( 
		L:map(d, L), 
	 	L: points(L),
	 	R:cons(L,R)
	 	),
	 return(R)
	

)$








   

compile(all)$



/* ===================== const ===================================================== */


half :1.2$
yMax: half$
yMin: - half$
iSide: 1000$

PixelSize: (yMax - yMin)/iSide$  
HalfPixelSize2: (PixelSize/2)*(PixelSize/2)$


/* 
   integer constant values 
 proportional to the : 
 * quality of the image ( number of the detailes, but also precision of curves )
 * size of the svg file ( but not the png file )
 * time of computation 
*/

iMax:12; /* number of the orbit points: forward and backward  */
kMax: 50; /* number of points in the line segment   */
depthMax:15$ /* depth of binary tree = number of preimages  */


/* parameter of the function : fc(z) = z^2 + c */
c:0.35;
zcr : 0; /* critical point */

zfp : GiveFixed_p(c) $ /* fixed point */
zfm : GiveFixed_m(c) $ /* fixed point */

 

/* ============================ computations =============================== */






/* precritical orbit = backward orbit of the critical point */
precritical : GiveBTree(zcr, depthMax)$ 
l_precritical : length(precritical)$


zz: GiveLineSegment(zcr, a(zcr) , 10)$
rayA : Give2PreimagesOfList(zz)$ /*GiveSortedBTree(zz, 10)$*/


rt:[]$
r2:[]$
r3:[]$
r4:[]$
r5:[]$
r6:[]$
r7:[]$
r8:[]$
r9:[]$
r10:[]$
r11:[]$
r12:[]$
r13:[]$
r14:[]$
r15:[]$
r16:[]$
r17:[]$
r18:[]$


for L in rayA do(  
	rt: Give2PreimagesOfList(L),
	r2:cons(rt[1],r2),
	r2:cons(rt[2],r2)
	)$

for L in r2 do rayA:cons(L,rayA)$


for L in r2 do(  
	rt: Give2PreimagesOfList(L),
	r3:cons(rt[1],r3),
	r3:cons(rt[2],r3)
	)$
	
for L in r3 do rayA:cons(L,rayA)$
	

for L in r3 do(  
	rt: Give2PreimagesOfList(L),
	r4:cons(rt[1],r4),
	r4:cons(rt[2],r4)
	)$
	
for L in r4 do rayA:cons(L,rayA)$


for L in r4 do(  
	rt: Give2PreimagesOfList(L),
	r5:cons(rt[1],r5),
	r5:cons(rt[2],r5)
	)$
	
for L in r5 do rayA:cons(L,rayA)$



for L in r5 do(  
	rt: Give2PreimagesOfList(L),
	r6:cons(rt[1],r6),
	r6:cons(rt[2],r6)
	)$
	
for L in r6 do rayA:cons(L,rayA)$
		
for L in r6 do(  
	rt: Give2PreimagesOfList(L),
	r7:cons(rt[1],r7),
	r7:cons(rt[2],r7)
	)$
	
for L in r7 do rayA:cons(L,rayA)$	



for L in r7 do(  
	rt: Give2PreimagesOfList(L),
	r8:cons(rt[1],r8),
	r8:cons(rt[2],r8)
	)$
	
for L in r8 do rayA:cons(L,rayA)$


for L in r8 do(  
	rt: Give2PreimagesOfList(L),
	r9:cons(rt[1],r9),
	r9:cons(rt[2],r9)
	)$
	
for L in r9 do rayA:cons(L,rayA)$

for L in r9 do(  
	rt: Give2PreimagesOfList(L),
	r10:cons(rt[1],r10),
	r10:cons(rt[2],r10)
	)$
	
for L in r10 do rayA:cons(L,rayA)$


for L in r9 do(  
	rt: Give2PreimagesOfList(L),
	r10:cons(rt[1],r10),
	r10:cons(rt[2],r10)
	)$
	
for L in r10 do rayA:cons(L,rayA)$


for L in r10 do(  
	rt: Give2PreimagesOfList(L),
	r11:cons(rt[1],r11),
	r11:cons(rt[2],r11)
	)$
	
for L in r11 do rayA:cons(L,rayA)$

for L in r11 do(  
	rt: Give2PreimagesOfList(L),
	r12:cons(rt[1],r12),
	r10:cons(rt[2],r12)
	)$
	
for L in r12 do rayA:cons(L,rayA)$


for L in r12 do(  
	rt: Give2PreimagesOfList(L),
	r13:cons(rt[1],r13),
	r13:cons(rt[2],r13)
	)$
	
for L in r13 do rayA:cons(L,rayA)$

for L in r13 do(  
	rt: Give2PreimagesOfList(L),
	r14:cons(rt[1],r14),
	r14:cons(rt[2],r14)
	)$
	
for L in r14 do rayA:cons(L,rayA)$


for L in r14 do(  
	rt: Give2PreimagesOfList(L),
	r15:cons(rt[1],r15),
	r15:cons(rt[2],r15)
	)$
	
for L in r15 do rayA:cons(L,rayA)$

/*

zz: GiveLineSegment(zcr, b(zcr) , 10)$
rayB : Give2PreimagesOfList(zz)$ /* GiveSortedBTree(zz, 10)$*/



*/

rayB:[]$
Ray:[]$


for L in rayA do( 
		/*rayB:append(map(minus,L), rayB), */
		L:map(d, L), 
	 	L: points(L),
	 	Ray:cons(L,Ray)
	 	
	 	)$

/* rayB: comjugate(rayA */
	 	
for L in rayA do( 
		L:map(conjugate,L),
		L:map(d, L), 
	 	L: points(L),
	 	Ray:cons(L,Ray)
	 	)$


/* 
ray: 
ray0 = along critical orbit 
ray1 : from a(zcr) to b(zcr)

*/

critical_orbit : [zcr, half]$ /* GiveForwardOrbit(zcr, c, iMax)$ *//* critical orbit = forward orbit of the critical point */
ray1:[a(zcr), b(zcr)]$


critical_orbit: ToPoints( critical_orbit)$
precritical: ToPoints( precritical)$
ray1:ToPoints(ray1)$




path:"~/Dokumenty/branched_ray/maxima/n0/"$ /*  pwd, if empty then file is in a home dir , path should end with "/" */
fileName: sconcat(path,  string(depthMax), "_", string(kMax))$
/* draw it using draw package by */

 load(draw); 
/* if graphic  file is empty (= 0 bytes) then run draw2d command again */

 draw2d(
  user_preamble="set key top right; unset mouse",
  terminal  = 'png,
  file_name = fileName,
  
  title= " dynamical plane : branched periodic external ray 0/1 for map f(z) = z*z + 0.35 ",
    /* only upper box */
  dimensions = [iSide, iSide],
 
  yrange = [-half, half],
  xrange = [-half, half],
 
  /* 
  full image = both 
  dimensions = [1000, 2000],
  yrange = [-0.8, 0.8],
  xrange = [-0.1, 0.75],
 */
  xlabel     = "zx ",
  ylabel     = "zy",
  
  
  
  point_type = filled_circle,
  
  
  points_joined = true,
  point_size    =  0.5,
  color         = black,
  critical_orbit,
  ray1,
  
  
  point_size    =  0.1,
  key="",
  color=black,
  Ray,
  

 
  key = "preimages of critical point",
  point_size    =  0.5,
  points_joined = false,
  color         = red,
  precritical,
  
  
  
  /*  big points */ 
  
  point_size    =  1.1,
  key= "fixed points",
  color = blue,
  points(dl(zfp)),
  key = "",
  points(dl(zfm)),
   
  key= "critical point",
  color = black,
  points(dl(zcr))
    
 
 );





/* 
print("depth max =", depthMax, " kMax = ", kMax, " number of points in the ray = ", length(ray));
*/
print("file", fileName, " saved to",path)$
print("file name: depthMax_kMax.png")$
print("Pixel size : ", PixelSize)$
print("length of precritical orbit : ", l_precritical, " for depth : ", depthMax)$

old code



/*

Batch file for Maxima CAS
save as a s.mac
run maxima : 
 maxima
and then : 
batch("s.mac");

*/




kill(all);
remvalue(all);



/* ---------- functions ---------------------------------------------------- */

/* http://en.wikipedia.org/wiki/Complex_quadratic_polynomial  */

/* Forward iteration */
f(z):=float(rectform(z*z+c))$


/* backward iteration of complex quadratic polynomial */
  
b(z):=float(rectform(sqrt(z-c)))$
a(z):=float(rectform(-sqrt(z-c)))$


/* find fixed point alfa of function f(z,c)   */
GiveFixed_p(c):= float(rectform((1+sqrt(1-4*c))/2))$
GiveFixed_m(c):= float(rectform((1-sqrt(1-4*c))/2))$

/* 
converts complex number z = x*y*%i 
to the list in a draw format:  
[x,y] 
*/
d(z):=[float(realpart(z)), float(imagpart(z))]$

/* give Draw List from one point*/
dl(z):=[d(z)]$

ToPoints(myList):= points(map(d,myList))$


/* gives an orbit of z0 under fc where iMax is the length of the orbit */
 GiveForwardOrbit(z0,c, iMax):= block
(
  [i,z, orbit],
   
   z:z0,
   orbit :[z],
   i:1,
   while ( i<iMax ) 
    do
    ( 
      z:f(z),
      orbit : endcons(z, orbit),
      i:i+1
    ),
    
   return(orbit)
)$








/* 
Line segment =  part of a line that is bounded by two end points 
input : 
- 2 endpoints : z1, z2 
- imax : number of points between endpoints
output: 
- list of complex points


*/

GiveLineSegment(z1,z2,iMax):=block
(
 [l,z, dz, t , tmin, tmax,dt,i],
 dz : z2-z1,
 dt : 1/iMax, 
 tmin: 0, 
 tmax: 1,
 z:z1,
 l:[z1],
 for t:tmin thru tmax step dt 
 
  
    do
    (
     z:z1+dz*t,
     l   :cons(z,l)
    ),
return(l)
)$


 
/*

input : 
- list a
- parameter n : every n-th element is removed from the list to make it shorter
output : list b 

https://stackoverflow.com/questions/49658018/how-to-remove-many-elements-from-the-list-by-checking-its-index-in-maxima-cas


kMax:100
depthMax 12;  length(ray) = 58548
depthMax 13;  length(ray) = 65076
depthMax 14;  length(ray) = 71604
depthMax 15;  length(ray) = 78132
depthMax 16;  length(ray) = 84660 
depthmax 17;  ray =         91188 
depthmax 18   ray =         97716 
depth max = 19  number of points in the ray =  104244 
depth max = 20  number of points in the ray =  110772 
epth max = 20  kMax =  200  number of points in the ray =  219372 




*/
ShortList(a, n):=block(
	[l, b],

	iMax:length(a),
	if ( iMax > 20) then ( 
		b:[],
		for i:1 thru iMax step 1 do 
			if (mod(i,n)=0) then b:cons(a[i],b)
		) 
		else b: a, /* do nothing */
	return (b)



)$




/*

binary complete tree 

to do : 
implemented as an array
Pre-order sequence: ABDECFG ( for depth 3)
for(i=0;i<N;i++){ process node in position i; } results in a level-by-level traversal.

*/







/* binary tree 

- read input A
- compute 2 preimages b and c
- output list : [b,c]
 

*/

Give2Preimages(z):= [a(z), b(z)]$
/* 

regular complete binary tree depth 

- read input A
- compute full tree of preimages depth d
( number = sum(2^(d-1))
- output list zz of complex points
 
lists 
 zz is output list 
 t1 input = previous level of the tree 
 t2 next level 
 temp  temporary list 

*/

GiveBTree(z, depthMax, n):=block(

	[ zz, t1, t2, tmp],
	zz :[], 
	t1 :[z], 
	t2 :[], 
	tmp  :[], 
		
	for depth : 1 thru depthMax step 1 do (
		
		
		for z in t1 do (
			tmp : Give2Preimages(z),
			zz : append(tmp, zz),
			t2 : append(tmp, t2)
			
		),
		
		tmp:[],
		t1:t2,
		t2:[],
		if depth > 2 then t1:ShortList(t1,n)
		
	),
	
	zz:flatten(zz), 	
	return (zz)
)$



/*

Gives external dynamic ray ( as a list of points in a draw format)
input:
- zcr: critical point z
- c : parameter of the function fc(z) = z^2 + c
- kMax : number of points in the line segment   
- parameter n : every n-th element is removed from the list to make it shorter, see ShortList

*/
R2(zcr, c, depthMath, kMax, n):= block(

	ray:[],
	/* level 0 = r0 = parent node is a critical orbit */
	/* level 1 : segments between zcr and a or b(zcr) */
	zz: GiveLineSegment(zcr, a(zcr) , kMax),
	ray:zz,
	for z in zz do (
		t: GiveBTree(z, depthMax, n),
		ray:append(t,ray)
		),
	
	zz : GiveLineSegment(zcr, b(zcr), kMax),
	ray:append(zz,ray),
	for z in zz do (
		t: GiveBTree(z, depthMax, n),
		ray:append(t,ray)
		),
	ray:flatten(ray),
	
	ray:map(d,ray), 
	return(ray)
	

)$








   
/*
compile(all)$
*/


/* ===================== const ===================================================== */


half :1.2$
yMax: half$
yMin: - half$
iSide: 1000$

PixelSize: (yMax - yMin)/iSide$  



/* 
   integer constant values 
 proportional to the : 
 * quality of the image ( number of the detailes, but also precision of curves )
 * size of the svg file ( but not the png file )
 * time of computation 
*/

iMax:15; /* number of the orbit points: forward and backward  */
kMax: 200; /* number of points in the line segment   */
depthMax:20$ /* depth of binary tree = number of preimages  */
n:2$ /* every n-th element is removed from the list to make it shorter , see ShortList */


/* parameter of the function : fc(z) = z^2 + c */
c:0.35;
zcr : 0; /* critical point */

zfp : GiveFixed_p(c) $ /* fixed point */
zfm : GiveFixed_m(c) $ /* fixed point */

 

/* ============================ computations =============================== */



/* critical orbit = forward orbit of the critical point */
critical_orbit : GiveForwardOrbit(zcr, c, iMax)$


/* precritical orbit = backward orbit of the critical point */
precritical : GiveBTree(zcr, depthMax, n)$ 




/* ray: GiveRay(zcr,c)$ */
ray:R2(zcr, c, depthMax, kMax, n)$




critical_orbit: ToPoints( critical_orbit)$
precritical: ToPoints( precritical)$


path:"~/Dokumenty/branched_ray/maxima/sl2/"$ /*  pwd, if empty then file is in a home dir , path should end with "/" */
fileName: sconcat(path,  string(depthMax), "_", string(kMax),"_", string(n))$
/* draw it using draw package by */

 load(draw); 
/* if graphic  file is empty (= 0 bytes) then run draw2d command again */

 draw2d(
  user_preamble="set key top right; unset mouse",
  terminal  = 'png,
  file_name = fileName,
  
  title= " dynamical plane : branched periodic external ray 0/1 for map f(z) = z*z + 0.35 ",
    /* only upper box */
  dimensions = [iSide, iSide],
 
  yrange = [-half, half],
  xrange = [-half, half],
 
  /* 
  full image = both 
  dimensions = [1000, 2000],
  yrange = [-0.8, 0.8],
  xrange = [-0.1, 0.75],
 */
  xlabel     = "zx ",
  ylabel     = "zy",
  
  
  
  point_type = filled_circle,
  points_joined = false,
  point_size    =  0.1,
  color         = black,
  
  
  key = "",
  points(ray),
  key="",
 
 
 
  point_size    =  0.1,
  points_joined = true,
  key = "",
  color         = black,
  critical_orbit,

 
  key = "preimages of critical point",
  point_size    =  0.5,
  points_joined = false,
  color         = red,
  precritical,
  
  
  
  /*  big points */ 
  
  point_size    =  1.1,
  key= "fixed points",
  color = blue,
  points(dl(zfp)),
  key = "",
  points(dl(zfm)),
   
  key= "critical point",
  color = black,
  points(dl(zcr))
    
 
 );



 draw2d(
  user_preamble="set key top right; unset mouse",
  terminal  = 'svg,
  file_name = fileName,
  
  title= " dynamical plane : branched periodic external ray 0/1 for map f(z) = z*z + 0.35 ",
    /* only upper box */
  dimensions = [iSide, iSide],
 
  yrange = [-half, half],
  xrange = [-half, half],
 
  /* 
  full image = both 
  dimensions = [1000, 2000],
  yrange = [-0.8, 0.8],
  xrange = [-0.1, 0.75],
 */
  xlabel     = "zx ",
  ylabel     = "zy",
  
  
  
  point_type = filled_circle,
  points_joined = false,
  point_size    =  0.1,
  color         = black,
  
  
  key = "",
  points(ray),
  key="",
 
 
 
  point_size    =  0.1,
  points_joined = true,
  key = "",
  color         = black,
  critical_orbit,

 
  key = "preimages of critical point",
  point_size    =  0.5,
  points_joined = false,
  color         = red,
  precritical,
  
  
  
  /*  big points */ 
  
  point_size    =  1.1,
  key= "fixed points",
  color = blue,
  points(dl(zfp)),
  key = "",
  points(dl(zfm)),
   
  key= "critical point",
  color = black,
  points(dl(zcr))
    
 
 );





print("depth max =", depthMax, " kMax = ", kMax, " number of points in the ray = ", length(ray));
print("file", fileName, " saved to",path)$
print("file name: depthMax_kMax_n.png")$


  1. Fixed points of polynomial maps. Part II. Fixed point portraits Lisa R. Goldberg; John Milnor Annales scientifiques de l'École Normale Supérieure (1993) Volume: 26, Issue: 1, page 51-98 ISSN: 0012-9593, see Fig 14 page 91
  2. Exploring the Mandelbrot set. The Orsay Notes. October 2009 Adrien DouadyJohn H. HubbardJohn H. Hubbard. PAGE 64
  3. draw package ( Maxima-Gnuplot interface) by Mario Rodríguez Riotorto

Captions

dynamical plane with branched periodic external ray 0 for map f(z) = z*z + 0.35

Items portrayed in this file

depicts

7 November 2020

image/png

File history

Click on a date/time to view the file as it appeared at that time.

Date/TimeThumbnailDimensionsUserComment
current14:02, 9 November 2020Thumbnail for version as of 14:02, 9 November 20201,000 × 1,000 (47 KB)Soul windsurferbetter quality
21:48, 7 November 2020Thumbnail for version as of 21:48, 7 November 20201,000 × 1,000 (32 KB)Soul windsurferUploaded own work with UploadWizard
The following pages on the English Wikipedia use this file (pages on other projects are not listed):

Global file usage

The following other wikis use this file:

Metadata