Fractals/Iterations in the complex plane/atomdomains

From Wikibooks, open books for an open world
Jump to navigation Jump to search

Name[edit | edit source]

  • period domain
  • atom domain.[1][2]
  • BOF61( see book Beauty Of Fractals page 61 )[3][4]
  • orbit trap at (0,0) [5]
  • mclosetime

Examples[edit | edit source]

Images[edit | edit source]

Video[edit | edit source]

Description[edit | edit source]

Atom domains in case of the Mandelbrot set ( parameter plane) are parts of parameter plane with the same the index p.

index[edit | edit source]

  • it is positive integer
  • for p=1 domain is a whole plane because in the algorithm value of complex modulus is compared to infinity
  • it is equal to
    • the period of hyperbolic component of the Mandelbrot set which is inside domain
    • iteration at which modulus of z is minimized during iteration of critical point

Properities[edit | edit source]

Note that :

  • atom domains are overlapping
  • "Atom domains surround hyperbolic components of the same period, and are generally much larger than the components themselves"[6]
  • "These domains completely enclose the hyperbolic components of the same period"
  • "the atom domain is wholy within its own Newton basin, and also significantly larger than the corresponding component"[7]

Atom domain contain :

    • component of mandelbrot set with period n mv
    • exterior of this component
    • some other components

Importance[edit | edit source]

It can be used for :

  • fast finding ( aprioximating) of period n components of Mandelbrot set and it's centers, ( domains are greater then components which makes them useful for finding components)

Algorithm[edit | edit source]

whole parameter plane[edit | edit source]

// code from :
// http://mathr.co.uk/blog/2014-11-02_practical_interior_distance_rendering.html
// C program by Claude Heiland-Allen
complex double z = 0;
      complex double dc = 0;
      double minimum_z2 = infinity; // atom domain
      int period = 0;

      // iteration 
      for (int n = 1; n <= maxiters; ++n) {
        dc = 2 * z * dc + 1;
        z = z * z + c;
        double z2 = cabs2(z);

        if (z2 < minimum_z2) {
          minimum_z2 = z2;
          period = n;}}

Shadertoy

modifications[edit | edit source]

bof61[edit | edit source]

This is the method described in the book "The Beauty of Fractals" on page 63, but the image in on page 61.

Color of point is proportional to :

  • the time it takes z to reach its smallest value
  • iterate of the critical point makes the closest approach
  • Index (c) is the iteration when point of the orbit was closest to the origin. Since there may be more than one, index(c) is the least such.

This algorithms shows borders of domains with the same index(c)[8] .[9]

Fragment of code : fractint.cfrm from Gnofract4d [10]

bof61 {
 init:
       int current_index = -1 ; -1 to match Fractint's notion of iter count
       int index_of_closest_point = -1
       float mag_of_closest_point = 1e100
 loop:
       current_index = current_index + 1
       float zmag = |z|
       if zmag < mag_of_closest_point
               index_of_closest_point = current_index
               mag_of_closest_point = zmag
       endif
 final:
       #index = index_of_closest_point /256.0
}

Cpp function

//       function is based on function mclosetime
//       from mbrot.cpp 
//       from program mandel by Wolf Jung 
//      http:www.iram.rwth-aachen.de/~jung/indexp.html  
////8 = iterate =  bof61
// bailout2=4 
int mclosetime(std::complex<double> C , int iter_max,  int bailout2)
{ int j, cln = 0;
  double x = C.real(), y = C.imag(), u, cld = 4;
  for (j = 0; j <= iter_max; j++)
  { u = x*x + y*y; 
    if (u > bailout2) return j;
    if (u < cld) {cld = u;cln = j; }
 
    u = x*x - y*y + C.real();
    y = 2*x*y + C.imag();
    x = u;
  }
  return iter_max + cln % 15; //iterate, bof61
  
}

It can be used :

// compute escape time  
              int last_iter= mclosetime(C,iter_max,bailout2);
              //  drawing code */
              if (last_iter>=iter_max) { putpixel(ix,iy,last_iter - iter_max);} // interior
                                else putpixel(ix,iy,WHITE); // exterior
Atom domains : note that atom domains overlapp and "completely enclose the hyperbolic components of the same period"[11]

Note that this method can be applied to both exterior and interior. It is called atom domain.[12] It can also be modified [13]

Size of the atom domain[edit | edit source]

estimation of size [14]

Function for computing size estimation of atom domain from nucleus c and its period p :

// code by Claude Heiland-Allen
// from http://mathr.co.uk/blog/2013-12-10_atom_domain_size_estimation.html
real_t atom_domain_size_estimate(complex_t c, int_t p) {
  complex_t z = c;
  complex_t dc = 1;
  real_t abszq = cabs(z);
  for (int_t q = 2; q <= p; ++q) {
    dc = 2 * z * dc + 1;
    z = z * z + c;
    real_t abszp = cabs(z);
    if (abszp < abszq && q < p) {
      abszq = abszp;
    }
  }
  return abszq / cabs(dc);
}

References[edit | edit source]

  1. Atom Domain by Robert P. Munafo
  2. Practical interior distance rendering by Claude Heiland-Allen
  3. The_Beauty_of_Fractals in english wikipedia
  4. Bof61 algorithm in wikibooks
  5. An orbit trap at (0,0) by hobold
  6. misiurewicz_domains by Claude
  7. mandelbrot set newton basins by Claude Heiland-Allen
  8. Fractint doc by Noel Giffin
  9. A Series of spiral bays in the Mandelbrot set by Patrick Hahn
  10. gnofract4d
  11. Practical interior distance rendering by Claude Heiland-Allen
  12. Atom Domain From the Mandelbrot Set Glossary and Encyclopedia, by Robert Munafo
  13. Modified Atom Domains by Claude Heiland-Allen
  14. Atom domain size estimation by Claude Heiland-Allen