Fractals/mandel

Mandel: software for real and complex dynamics by Wolf Jung. Here one can find unofficial docs about it. =install=

from sources

 * download
 * extract
 * qmake
 * make
 * ./mandel

=Features=
 * multiplatform ( the platform-independent )
 * written in C++ with source code on GNU GPL licence
 * libraries :
 * GUI-toolkit Qt
 * many algorithms
 * many maps
 * numerical precision
 * floating point limited to double
 * integer :

angle
Program mandel uses own notation for binary fractions:

Enter the angle $$\theta$$ with $$0 \le \theta < 1$$ Notation: decimal 1/7 or binary p001 for $$\frac{1}{7} = 0.\overline{001} = 0. (001)$$ (binary periodic angles) decimal 9/56 or binary 001p010 for $$9/56 = 0.001\overline{010}$$ (binary preperiodic angles) decimal 1/4 or binary 01 for 1/4 = 0.01 (binary dyadic angles with both finite and equal infinite preperiodic binary expansion)

maps or functions
Families of functions (= maps ):
 * Mandelbrot set z^2+c ( key Ctrl+0 ). It is default map. Here map degree q = 2
 * Multibrot sets z^q+c ( key Ctrl+1 ). Use key q to change map degree $$ 3 \le q \le 64$$
 * Branner-Fagella cz(1+z/q)^q ( key Ctrl+2 )
 * cubic polynomials
 * quartic polynomials
 * rational mappings
 * Newton mappings
 * transcendental
 * Non-analytic mappings

These famnilies are defined by classes

complex quadratic polynomial
The monic and centered form of complex quadratic polynomial :

$$f_c(z) = z^2 +c\,$$

" The Mandelbrot set is based on the one-parameter family of quadratic polynomials fc(z) = z2 + c. " ( from help )

It can be used for :
 * forward iteration $$f^1(z)$$, key f = mode 0
 * 2 inverse ( or backward ) iterations ( multivalued with argument adjusted ) :
 * 1-st inverse function = key a = $$-f^{-1}(z) $$
 * 2-nd inverse function = key b = $$+f^{-1}(z) $$

"Use the keys a and b for the inverse mapping. (The two branches are approximately mapping to the parts A and B of the itinerary.)

See also example c code

$$f^{-1}_c(z) = \sqrt{\frac{-c}{|c|^2} } *  \sqrt{ |c|^2 - \bar{c}*z } $$

It is called by :

internal address
Internal addres
 * the numbers (period) must be increasing by definition

Algorithms

 * drawing
 * plane ( drawmode or algoActs)
 * LSM Escape time ( algorithm 2)
 * DEM (algorithm 5)


 * curves
 * points
 * orbits ( iteration)
 * critical orbit
 * forward and inverse orbit
 * computing :
 * angles of the wake

Example programs which use code from Mandel
 * Mandelbrot set in C++
 * Mandelbrot set in C++ and SDL
 * ArgPhi
 * symbolic dynamics

Level sets of escape time
Is it possibly, for algorithm 2 = ( level sets of ) escape time, to set parameters ( ? escape radius) such that boundaries of level sets go thru critical point ( and it's preimages ) ?

You can change the escape radius only by recompiling. But you can choose the parameter such that it is on an escape line and on the desired parameter ray, then the critical value will be on an escape line as well.

potential
Complex potential of Julia set

The green procedure is named after the British mathematician George Green

Simplified function

The equipotential line through the current point, or for a given potential, is drawn with the key g.

Equipotential lines can be defined everywhere, but they will be a figure-eight, when they go through the critcal point z = 0 or through one of its preimages.

External rays through 0 or its preimages branch as well.

Potential :
 * $$ log|\Phi(c)| > 0$$

See also:
 * Potential of Mandelbrot set

periodic and preperiodic points
"Each hyperbolic component has a unique center, and when the current point is within a hyperbolic component, you can move it to the center with the keys x and Return."

Feigenbaum tuning
Steps:
 * Start with a center of period n
 * find an approximation for the center of period 2n  and use Newton method to find it precisely  The approximation can be done with Feigenbaum rescaling,  but this did work only in the 1/2-limb,  so I used a composition of the multiplier maps of periods 1 and 2 in the other sublimbs.

Keys: Ctrl+Alt+C

C++ code

See also:
 * video: Feigenbaum_scaling
 * Mandel demo ( renormalization) page 10

C code

find
To find periodic or preperiodic point z use: then enter:
 * Menu/Points/Find point
 * key x
 * period
 * preperiod,period

It is numerical procedure so:
 * it finds one and the nearest solution.
 * it finds nothing ( on parameter plane it goes to origin c=0) if current point is:
 * inside set ( Mandel of filled-in Julia)
 * not near good solution

For example on the parameter plane there are 3 period 3 centers. If:
 * current point is c=0 then result is c=0 ( nothing found)
 * current point is outside Mandelbrot set :
 * c = 0.350000000000000 +0.725000000000000 i    then result is c = -0.122561166876654  +0.744861766619744 i    period = 3 ( good result)
 * c = 0.580000000000000 +0.240000000000000 i    period = 0 then result is c = 0.000000000000000  +0.000000000000000 i    period = 1 ( bad result !!!)
 * c = -1.590000000000000 +0.170000000000000 i    period = 0 then result is c = -1.754877666246693  +0.000000000000000 i    period = 3 ( good result)

Use mode Del-Newton to show basins of attraction of Newton method, adjust period with q

It calls function find with
 * input:
 * sg ( "positive is parameter plane, negative is dynamic plane.")
 * preper = preperiod. ( "the usual convention is to use the preperiod of the critical value. This has the advantage, that the angles of the critical value have the same preperiod under doubling as the point, and the same angles are found in the parameter plane." Wolf Jung )
 * per = period
 * output:
 * x = creal(z)
 * y = cimag(z)
 * returning value ( type int)

Returning value:
 * 0 ( good result)
 * 2 when (px*px + py*py > 1e100)
 * 1 when (px*px + py*py > 1e100) = escaping in preperiodic loop
 * -1 when (w < 1e-100)

Example of use:

Output: Preperiod = 0 Period = 3 parameter c = -0.965 ; 0.085: point z = -0.602943702541717 ; 0.0385332450804691:

algorithm 9 : zeros of qn(c)
Description:
 * "It is meant to show the location of precritical points, i.e., the preimages of 0. So it shows in four different colors, in which quadrant f^{n-1}(z) is.  This means that the real axis is pulled back n times, so it gives an approximation to the checkerboard when the parameter is real." ( Wolf Jung )
 * It "allows locating zeroes of the iterated polynomial at a certain period where 4 colours meet."

It can be used for:
 * on the dynamic plane
 * making parabolic checkerboard ( chessboard) when c is a parbolic parameter
 * showing center of components of Filled Julia sets, when c is a center of hyperbolic component and z=0 is a one of attracting periodic orbit

This is radial 4th-decomposition of plane ( 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 ) See function quadrantqn from class mndlbrot in mndlbrot.cpp file

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 )

Compare : Here is fragment of c code for computing 8-bit color for point c = cx + cy * i  :
 * code in Sage

Newton for qn(c)
It can be used with:
 * Menu/Draw/Algorithm/Newton for Qn(c)
 * key n

Key q lets you change n ( period)

Let:
 * q_n(c) be the n-th iterate of  z^2 + c  with  z = 0
 * N_n(c) the corresponding Newton method.

Then:
 * The zeros of q_n  are the centers of period dividing  n  and at the same time  the superattracting fixed points of  N_n . There is another fixed point at  infinity, which is repelling.
 * The critical points of q_n  are poles of  N_n . In many cases  these are located in hyperbolic components of period less than  n.
 * Each immediate attracting basin of N_n  is connected to  infinity  with at least one channel.  Therefore I do not see a relation to the atom domains.
 * It seems that each hyperbolic component of period n  is contained completely in one attracting basin.   I do not have a proof for this.

Misiurewicz point
"... the usual convention is to use the preperiod of the critical value. This has the advantage, that the angles of the critical value have the same preperiod under doubling as the point, and the same angles are found in the parameter plane." ( Wolf Jung )

Finding principal Misiurewicz points of the wake k/r of main cardioid
 * go to the parameter plane
 * mark the wake by drawing 2 external rays landing on the root point :
 * use Menu/Rays/Angles_of_the_wake
 * input fraction k/r in lowest turns ( k/r = rotation number = int_angle  in turns )
 * click outside of the Mandelbrot set but inside a wake
 * find point
 * Menu/Points/Find point or key x
 * enter preperiod,period
 * if the wake is to small ( = you don't see a free space between rays ) then zoom in

int_angle	prep,period	 c	                                               e_angles_of_the_wake 		           e_engles_of_Misiurewicz

1/2		   2,1		     c = -1.543689012692076  +0.000000000000000 i    	( 1/3  or  p01  and  2/3  or  p10 )

1/3		   3,1		     c = -0.101096363845622  +0.956286510809142 i    	( 1/7  or  p001  and 2/7  or  p010 )	9/56, 11/56 and 15/56

1/4		   4,1		     c = 0.366362983422764  +0.591533773261445 i

1/5        5,1		    c = 0.437924241359463  +0.341892084338116 i

1/6		   6,1		    c = 0.424512719050040  +0.207530228166745 i

1/7		   7,1		    c = 0.397391822296541  +0.133511204871878 i

1/8		   8,1		c = 0.372137705449577  +0.090398233158173 i 1/9		    9,1		c = 0.351423759052522  +0.063866559813293 i    		(1/511= p000000001 ; 2/511  = p000000010  )

1/10		10,1		c = 0.334957506651529 +0.046732666062027 i    		(1/1023  or  p0000000001  and 2/1023  or  p0000000010 )

1/11		11,1		c = 0.321911396847221 +0.035204463294452 i    		(1/2047  or  p00000000001  and 2/2047  or  p00000000010 )

1/12		12,1		c = 0.311507660281508 +0.027173719501342 i    		(1/4095  or  p000000000001  and 2/4095  or  p000000000010 )

1/13		13,1		c = 0.303127979909719 +0.021411628038965 i    		(1/8191  or  p0000000000001  and 2/8191  or  p0000000000010 )

1/14		14,1		c = 0.296304475349759 +0.017171379707062 i    		(1/16383  or  p00000000000001  and 2/16383  or  p00000000000010 )

1/15		15,1		c = 0.290687752431041 +0.013982147106557 i    		(1/32767  or  p000000000000001  and 2/32767  or  p000000000000010 )

1/16		16,1		c = 0.286016666695566 +0.011537401448441 i    		(1/65535  or  p0000000000000001  and 2/65535  or  p0000000000000010 )

1/17		17,1		c = 0.282094678248954 +0.009631861589570 i    		(1/131071  or  p00000000000000001  and 2/131071  or  p00000000000000010 )

1/18		18,1		c = 0.278772459129383 +0.008124579648410 i    		( 1/262143  or  p000000000000000001  and 2/262143  or  p000000000000000010 )

1/19		19,1		c = 0.275935362441682 +0.006916613801737 i    		(1/524287  or  p0000000000000000001  and 2/524287  or  p0000000000000000010 )

1/20		20,1		c = 0.273494431676492 +0.005937124623590 i    		( 1/1048575  or  p00000000000000000001  and 2/1048575  or  p00000000000000000010 ) -

1/21		21,1		c = 0.271379927384804 +0.005134487480794 i   		( 1/2097151  or  p000000000000000000001  and 2/2097151  or  p000000000000000000010 )

1/22		22,1		c = 0.269536632623270 +0.004470475898698 i    		( 1/4194303  or  p0000000000000000000001  and 2/4194303  or  p0000000000000000000010 )

1/23		23,1		c = 0.267920417711850 +0.003916372840385 i    		( 1/8388607  or  p00000000000000000000001  and 2/8388607  or  p00000000000000000000010 )

1/24		24,1		c = 0.266495701963622 +0.003450320181976 i    		( 1/16777215  or  p000000000000000000000001  and 2/16777215  or  p000000000000000000000010 )

1/25		25,1		c = 0.265233559524147 +0.003055480072447 i    		( 1/33554431  or  p0000000000000000000000001  and 2/33554431  or  p0000000000000000000000010 )

1/26		26,1		c = 0.264110291981537 +0.002718738820085 i    		( 1/67108863  or  p00000000000000000000000001  and 2/67108863  or  p00000000000000000000000010 )

1/27 		27,1		c = 0.263106342463072  +0.002429779655182 i    		( 1/134217727  or  p000000000000000000000000001  and 2/134217727  or  p000000000000000000000000010 )

1/28		28,1		c = 0.262205461953178 +0.002180410330127 i  		( 1/268435455  or  p0000000000000000000000000001  and 2/268435455  or  p0000000000000000000000000010 )

1/29		29,1		c = 0.261394063652992 +0.001964069379345 i  		( 1/536870911  or  p00000000000000000000000000001  and 2/536870911  or  p00000000000000000000000000010 )

1/30		30,1		c = 0.260660718810682 +0.001775459345952 i    		( 1/1073741823  or  p000000000000000000000000000001  and 2/1073741823  or  p000000000000000000000000000010 )

1/35		35,1		c = 0.257872123091544 +0.001121742345611 i    		( 1/34359738367  or  p00000000000000000000000000000000001  and 2/34359738367  or  p00000000000000000000000000000000010 )

-- 1/62 		62,1		c = 0.252537923584907 +0.000203841219482 i    		( 1/4611686018427387903 = p00000000000000000000000000000000000000000000000000000000000001 ;                                                                                          2/4611686018427387903 = p00000000000000000000000000000000000000000000000000000000000010 )

1/63		63,1		c = 0.252458520819920 +0.000194332543868 i     	( 1/9223372036854775807 = p000000000000000000000000000000000000000000000000000000000000001  ;                                                                                          2/9223372036854775807 = p000000000000000000000000000000000000000000000000000000000000010 )

1/64 		64,1		c = 0.252382784694904 +0.000185406363701 i    		( 1/18446744073709551615 = p0000000000000000000000000000000000000000000000000000000000000001 ;                                                                                           2/18446744073709551615 = p0000000000000000000000000000000000000000000000000000000000000010 )

Compare with:
 * How to compute external angles of principal Misiurewicz point of wake p/q using Devaney's algorithm ?

critical orbit
If you want to draw critial orbit for more iterations then Mandel has as a standard
 * on parameter plane choose internal angle ( key c or Manu/Poins/bifurcate)
 * go to dynamic plane
 * redraw image to remove critical orbit
 * press and keep on pressing keys Ctrl-F. Each key hit shall give 4000 iterations;

Functions :
 * in  qmnshell.cpp   in the function  QmnShell::dFinished    see  : dplane->drawOrbit(f, x, y, 0, 4000);
 * in QmnShell::map(QAction *act) = Ctrl-F

Tiling of parabolic Julia set interior
It works for interior of parabolic Julia sets, only for cases when :
 * rotation number is 0 or 1/2 ( key C or MainMenu/Point/Bifurcation ), then c is the root of a satellite component.
 * Period of parent component is 1
 * map is complex quadratic polynomial ( MainMenu/ Map or key= Ctrl+0 )

It makes parabolic checkerboard

equipotential

 * key G
 * Main Menu/ Rays/Equipotewntial

"... to draw equipotential lines. ... Boundary scanning is slow and the Newton method has three problems: finding a starting point, drawing several lines around a disconnected Julia set, and choosing the number of points depending on the chosen subset of the plane. Therefore I am using boundary tracing with starting points on several lines through the image. See QmnPlane::green. Still, sometimes not the whole line is drawn, or not all components are found."

" Hit the key g to draw the equipotential line through the current point z (outside of Kc) or c (outside of M), or to specify the potential level."

green(f, signtype, y, 10);

Argument of Phi or External angle
It can be applied with:
 * Menu/Draw/Algorithm/Argument of Phi
 * key 6

Here is the turn function for class mndlbrot

External rays
Methods :
 * Backwards iteration
 * Newton method
 * Argument tracing

Algorithms

 * ray to point
 * external ray

Lamination
Hit o to draw an orbit portrait, which is shown as a lamination when you give the command from the parameter plane, and Ctrl+o for the precritical lamination.

If you are:
 * on the parameter plane then choosing lamination and angle 1/7 draws lamination of the unit disk in the right window
 * on the dynamic plane and choose lamination and angle 1/7 draws lamination of the dynamic plane in the right window

Lamination of:
 * the unit circle
 * the dynamic plane
 * parameter plane ( QML)

Orbit portrait
Steps
 * Main menu/Rays/Orbit portrait
 * qmnshell.cpp
 * portraitAct

Spider algorithm
"The Thurston Algorithm is iterating the critical orbit backwards to compute the parameter c corresponding to a given external angle. To choose the correct preimages, a connecting path between point configurations is used by Chéritat for slow mating. The Spider Algorithm employs rays to infinity. Use s or Ctrl+s to illustrate these algorithms. With d you may move the critical value along some path to define a Dehn twist or a recapture. Special examples are available with Ctrl+d. Hit Return repeatedly to observe the iteration. Use Home or enter 0 to quit." ( from help )

Wake
In program mandel:
 * from Main Menu / Rays / Angles of the wake
 * keys: Ctrl+k

Original code from mandel 5.19



Examples :
 * angles of the wake
 * subwake

Argument tracing
=Colors=
 * purple = RGB( 255,0,255)= HTML(ff00ff) = points which do not escape and do not fall into fixed attractor ( udecidable). For tiling of parabolic Julia set it can show repelling petals in case of low max number of iteration ( for example 100 )

In most drawmodes, Mandel uses a palette of colors 0 to 15.

In mode 3, a value from 0 to 255 is interpreted as a hue. See line 160 in qmnplane.cpp:

To get grayscale, you may replace it with:

4 colours:
 * Cyan / Aqua = (0,255,255), green = ( 0,255,0), red = ( 255,0,0), blue = (0,0,255)

Change colors
This function can be started
 * by main menu File/Change colors
 * key F5

Replace a VGA-color by entering the numbers, separated with a comma: 1  2   3   4   5   6   7   8 9 10 11 12 13 14 15 16

User may put 2 numbers separated by a comma
 * first number is the color which should change
 * second number is the color which should be

=Code=

classes
Classes types :
 * base
 * derived from base classes

Base classes :
 * mndynamics = abstract base class (escape to infinity)
 * mndScale :  scaling of the parameter plane at Misiurewicz points
 * mndAngle :  external angles
 * mndCombi :  kneading sequences or internal addresses
 * mndPath  :  spider with legs or with path

mndynamics
mndynamics is an abstract base class (escape to infinity)

Classes derived from mndynamics
 * with critical relations and escape to infinity :
 * mndlbrot  :  z^2 + c, Mandelbrot set
 * mndmulti  :  z^q + c, Multibrot set
 * mndbfpoly :  cz(1 + z/q)^q  (Branner-Fagella)
 * mndcubic  :  various cubic polynomial families
 * mndquartic : various quartic polynomial families
 * mndmating :  various quadratic rational families (mating),  some of these check only for periodicity,  there is no escape.
 * mndmenage :  c(z + 0.5/z^2), rotationally symmetric (Henriksen)
 * mndsingpert: z^2 + c/z^2, singular perturbation of z^2
 * mndexpo   :  various exponential families
 * mndtrigo  :  various trigonometric families
 * mndsurge  :  piecewise polynomial,  modeling quasi-conformal surgery
 * mndtricorn : (z*)^q + c, anti-analytic,  Tricorn or Multicorn
 * mndrealcubic: cubic poly., real-analytic para.,  2 indep. cr.pt.
 * mndifs    :  iterated function system for Liouville roots
 * mndsiegel = abstract derived class (persistent Siegel, two orbits, one may escape)
 * mndcubicsiegel : cubic polynomials (Zakeri-Buff-Henriksen & 2-per), derived from mndsiegel
 * mndquartsiegel : quartic polynomials (additional critical relation)
 * mndexposiegel :  exponential
 * mndtrigosiegel : trigonometric
 * mndmatesiegel :  quadratic rational
 * mndnewtonsiegel: quartic Newton mappings with Siegel cycle
 * mndnewtonpara :  cubic Newton maps with 2 roots and 1 parabolic basin
 * mndnewtonqara :  cubic Newton maps with 1 root and 2 parabolic basins
 * mndnewtonrara :  cubic Newton maps with 0 roots and 3 parabolic basins
 * mndnewton = Abstract derived class (cubic or quartic Newton mappings, with critical relations)
 * mndcubicnewton  :  Newton for cubic polynomials, derived from mndnewton
 * mndquarticnewton : Newton for quartic polynomials, derived from mndnewton
 * mndherman = cubic rational with Herman ring. Derived from mndynamics (special case with escape to 0 or infinity)
 * mndhenon :  Henon mappingDerived from mndynamics (special case, escape to -infinity, no cr.pt.)
 * mndlambda :  Henon mapping. Derived from mndynamics (special case, escape to squares, no cr.pt.)

Most classes describe a one-parameter family of complex functions :

$$ f_c(z) $$

where : $$c = a + bi $$

$$ z = x + yi $$

mndAngle
The class mndAngle represents an angle (in turns) by a fraction of unsigned long long integers, which are <= 2^64 - 1. They are normalized to the denominator 2^K * (2^P - 1)  when possible,  i.e.,  K + P <= 64. Otherwise P = 0. Many applications only need the static functions.
 * normalize  returns the period.
 * twice      doubles the angle modulo 1.
 * conjugate  computes the conjugate angle,  returns period of the char.pt.
 * wake       computes the angles of a limb.
 * radians    gives the angle in radians.
 * lambda     computes  e^{core entropy h}  for dyadic angles.
 * realSpider checks if the root is real and computes the center  c.
 * truncatedTuning  truncates  (u1, u2)*w  to the next  n-periodic angle.

mndCombi
The class mndCombi  represents a *-periodic kneading sequence with period P <= 64  and the corresponding internal address. They are stored each in the bits of an unsigned long long integer. QString conversion is done by  QmnCombiDialog. In the address, the first bit (2^63) is period 64 and the last bit (2^0) is period 1. Example: AABBAA* is  0...01100111 since the upper kneading sequence is AABBAAA 1-3-4-7 is  0...01001101 The kneading sequence is always the upper one: setKneading ignores the last entry,  and the last entry from  getKneading  shall be printed as a  '*'. The set-functions compute the internal address from the kneading sequence or vice versa.
 * fromAngle computes the combinatorics of a periodic angle.
 * renorm gives the lowest period of simple renormalization.
 * count returns the number of realizations,  assuming admissibility.
 * failsBS returns the first failure of the Bruin-Schleicher admissibility condition,  see  http://arXiv.org/abs/0801.4662 . 0 means that there is no evil orbit and the combinatorial data corresponds to a planar Hubbard tree with an orientation-preserving mapping,  thus to a quadratic polynomial realizing these combinatorics.  The corresponding angles are computed in  toAngles  by backwards iteration for each period, always choosing the  1/q-limb when  q > 2 . The simple algorithm fails for the first time at  1-2-6-7-13-14, so the wake is subdivided by calling backAngles  recursively.  See the explanation in  mndcombi.cpp.

Global variables
and the same angles are found in the parameter plane.
 * drawmode 	uint. Defined in mndynamo.h
 * maxiter		uint. Defined in mndynamo.h
 * a
 * b
 * A 		double. Defined in mndynamo.h
 * B		double. Defined in mndynamo
 * sign 		int. Defined in mndynamo.h . 	"positive is parameter plane, negative is dynamic plane."
 * subtype	int. Defined in mndynamo.h { subtype = subtype0; A = 0; B = 0; bailout = 16.0; temp = new double[5]; }
 * signtype 	= +- subtype : its modulus remembers the chosen subtype, and its sign denotes the current plane; pass its value for sign.
 * Period		uint. Defined in mndynamo.h
 * *temp		double. Defined in mndynamo.h
 * bailout 	double. Defined in mndynamo.h
 * k 		preperiod ( of critical value not critical point). It means that c= -2 has k=1 and p=1 so it is M_1,1 in this notation not M_2,1  This has the advantage, that the angles of the critical value have the same preperiod under doubling as the point,
 * p period
 * plane parameters
 * mdouble hmid = horizontal mid = plane center x
 * vmid = vertical mid = plane center y
 * pw = plane width
 * ph = plane height
 * uint drawmode;
 * int imid ( horizontal pixel coordinate of center
 * int kmid ( vertical coorinate of the center
 * imax = horizontal maximal pixel coordinate
 * kmax = vertical maximal pixel coordinate
 * mode
 * alpha;

viewport
Wolf Jung uses center and width for describing rectangle viewport of complex plane:
 * center of the rectangle : xmid + i ymid
 * the midpoint of the right side are given by : rewidth + i imwidth

So initial values of corners are :
 * parameter plane
 * dynamic plane : -2 <= Re(z) <=2, -2 <= Im(z) <=2

normalize
compile

g++ n.cpp -Wall -Wextra -lm

run:

./a.out

result:

The input angle = n/d = 1/5 after normalisation angle = n/d = 3/15 preperiod = k = 0 period = p = 4

=Images= There is a category on commons : Category:Fractals created with Mandel =opening images= One can open png image in Mandel and check it.

Image must be :
 * png type
 * square ( width = height )
 * size must be typical ( 2000 not 2001 pixels)
 * world coordinate should be :
 * parameter plane ( to do )
 * dynamic plane : -2 <= Re(z) <=2, -2 <= Im(z) <=2

Steps :
 * open Mandel
 * adjust image size ( Menu/File/Resize )
 * if you open image of dynamic plane change coordinate on parameter plane ( Menu/Points/Coordinates )
 * open image ( Menu/File/Load.png )

Then you can :
 * draw : orbit, ...
 * save

You can't:
 * zoom
 * redraw

=Demos= See :
 * Main Menu/Help/
 * src code : qmndemos.cpp

page 7
Finding c parameters (on the boundary of main cardioid) with Siegel Disk :
 * start with internal angle t = Golden ratio conjugate
 * compute c from t
 * go to the next t ( here y  is increased by 0.01) with Go key

Here is the original code :

page 10
elephants demo: there is just a rotation and rescaling on a small region instead of the non-linear transformation, like in unrolling

The method of parabolic renormalization was used to show that the boundary of the Mandelbrot set has Hausdorff dimension 2, and recently to construct a Julia set of  positive area. For another application of parabolic implosion, recall that the 1/r-limb is attached to the main cardioid at a parameter c, such that the fixed point $$\alpha_c$$ is parabolic with combinatorial rotation number 1/r. These limbs converge to the root c = 0.25 of the main cardioid. Pierre Lavaurs has studied these limbs using the Fatou coordinates and the related horn map of Ecalle cylinders. It is conjectured that the limbs converge to a limiting "elephant" under a suitable rescaling. The left image shows the 1/2-limb rotated by 90o. All limbs will be shown with increasing magnification and appropriate rotation, such that they point upwards from the boundary of the main cardioid. (Which is rotated such that it is horizontal at the root of the satellite component.) The right image shows the filled Julia set for the corresponding center of period r. Hit Return or push the Go-button to increase the period r of the limbs. This kind of scaling is not available in the main program. See page 9 of Chapter 5 for another scaling phenomenon at parabolic parameters.))

Here:
 * rotation number 1/r is t = 1/n
 * n is increasing by 1 at every go button click
 * setPlane(mdouble xmid, mdouble ymid, mdouble rewidth, mdouble imwidth, bool nowayBack)

page 1
Parametr plane : Mandelbrot set with external rays for angles $$\frac{j}{16}$$ where $$ j \in [0, 16)$$

Demo 5: renormalization
=Videos= videos by Wolf Jung produced with FFmpeg, combining images made with Mandel

Mandelbrot

 * Bifurcation of Julia sets
 * Similarity and self-similarity of the Mandelbrot set
 * Visualization of the Thurston algorithm

Approaching the airplane root with Fatou-Lavaurs translation (1/σ ~ time)
The variable sigma  is related to the multiplier of the approximately parabolic point,  and  1/sigma  is going to infinity when approaching the root. 1/sigma is also approximately the number of iterations from inside the approximate basin to the outside. In one video the time is proportional to 1/sigma, which means that the spiral is turning at constant speed. In the other video, the parameter c is moving at constant speed, which makes  1/sigma go faster and faster,  such that it reaches infinity in a finite time.

Bifurcation of preperiodic points and rays at c = γM(5/12)
Video
 * Bifurcation of Julia sets : Bifurcation of preperiodic points and rays at $$c = \gamma_M(5/12) $$ ( c is parameterized by the angle θ of the external ray landing at the critical value)

The parameter c  is moving to the left on the real axis. As it crosses the Misiurewicz parameter with angles 5/12  and  7/12, the critical value has the same angles and the critical point has the angles  5/24 , 7/24 , 17/24 , 19/24 ; these rays are landing in two pairs in a different pattern for parameters right or left of this one.

Note that bifurcations happen all the time: parts of the Julia sets move down and up toward 0 and then to the left and right.

The angle 5/12  or  01p10 has  preperiod = 2  and  period = 2. The corresponding parameter ray lands at a Misiurewicz point of preperiod 2 and period dividing 2. the landing point is c = -1.543689012692076 +0.000000000000000 i

Feigenbaum scaling
Video: Mandelbrot set and quadratic polynomials\ Slideshow of Feigenbaum scaling

Feigenbaum rescaling in the 1/2-limb

Description from the Madel demo 5 page 10:

The sequence of repeated period doubling leads to the infinitely renormalizable Feigenbaum parameter cF ≈ -1.401155189, the nested small Mandelbrot sets are scaled asymptotically by the first Feigenbaum constant  $$\delta \approx 4.669201609$$, and the small Julia sets around z = 0 (not z = c) by the second Feigenbaum constant $$\alpha \approx 2.502907875$$. The decorations in the parameter plane are becoming more hairy, and converging to a dense subset of the plane. This conjecture by John Milnor was proved by Mikhail Lyubich, and Curt McMullen has shown convergence of blow-ups of the Feigenbaum Julia set.

Hit the Return key or push the Go-button a few times to rescale the parameter plane by δF around c = cF and the dynamic plane by αF around z = 0. In the main program, Feigenbaum scaling is available in the parameter plane with the key Ctrl+Alt+f. You will have to increase the number of iterations with n. The corresponding tuning of center parameters is obtained with the key Ctrl+Alt+c. Renormalization with the key r works best in the primitve case.

See also:
 * Feigenbaum_tuning

Symmetric
=Wishlist=
 * showing window (viewport) parameters : center and radius
 * Main Menu/Rays. What about changing it to Main Menu/Curves ? It is uded to draw rays and equipotential curves
 * saving description of the image, maybe inside png image or in different txt file
 * making one image from various algorithms ( like adding boundary made by DEM or IIM to other images), layers of the image
 * scripting language form making complex images/operations
 * OpenMP, GPU
 * more description in the code and about algorithms
 * change the silent error checking to explicit information
 * options to do long operations without keeping the key preseed. For example try to draw critical orbit for bifurcation from period 1 using t = 34/89. It draws only some points.
 * dictionary
 * A Qt Linguist phrase book = qph file extension. These are human-readable XML files containing standard phrases and their translations. These files are created and updated by Qt Linguist and may be used by any number of projects and applications.
 * Qt Linguist Manual
 * not use of finite binary expansion but infinite version, because it describes better the dynamics. For example, now is: "The angle 1/4  or  01 has  preperiod = 2  and  period = 1.". Better version is :"The angle  1/4  or 00p1 has  preperiod = 2  and  period = 1."
 * description how to add a new fractal algorithm or coloring method
 * internal rays for parameter and dynamic plane

Bugs

 * "after loading certain png-images from another source, things like changing colors and drawing do not work any longer ..."

=Translation= Example A Qt Linguist phrase book (qph file). It is a human-readable XML file containing standard phrases and their translations. This file is created and updated by Qt Linguist and may be used by any number of projects and applications.

Odwzorowanie kota Arnolda In mathematics, Arnold&apos;s cat map is a chaotic map from the torus into itself, named after Vladimir Arnold, who demonstrated its effects in the 1960s using an image of a cat, hence the name. laminacja Optional definition odwzorowanie Optional definition Przekształcenie Boettchera obszar przyciągania kilwater podzbiór płaszczyny parametrów ograniczona przez 2 promienie zewnętrzne. Porównaj limb, subwake płaszczyzna dynamiczna ?parowanie? 

=Papers with images made with Mandel =
 * Finite Subdivision Rules from Matings of Quadratic Functions: Existence and Constructions by Mary E. Wilkerson
 * THE DYNAMICAL ANDRE-OORT CONJECTURE: UNICRITICAL POLYNOMIALS by D. GHIOCA, H. KRIEGER, K. NGUYEN, AND H. YE

University

 * Montana State University, Department of Mathematical Sciences :class  2016-fall-m597/index.html

=References=