Fractals/Iterations in the complex plane/p misiurewicz

< Fractals < Iterations in the complex plane

How to compute external angles of principal Misiurewicz points[1] of wakes

names

introduction

How to work with the shift map ?

If length of string s is q then

  


shifting q digits in blocks of b digits

Note that

  


 
 
 
 
 
 



 
 
 


 
 



 
 

Algorithm

Algorithm is based on the Theorem 5.3 in: Geometry of the Antennas in the Mandelbrot Set by R L Devaney and M Moreno-Rocha, April 11, 2000[4]


External Angles of Hub ( see section 3.9 of the Book by Claude) or spoke [5]

The bulb ( = hyperbolic component) has 2 external angles landing on it's root point (bond) :

 

such that :

  

These angles have :

Other names of these angles are angles of the wake.

The junction point of its hub ( principal Misiurewicz point) has external angles in increasing order

  
  
 
 
 
 
  


where



input and output

steps

Examples

1/3


The bulb ( = period 3 hyperbolic component) has 2 external angles landing on it's root point (bond) :


 
 

such that :

 

Principal Misiurewicz point of wake is a landing point for external angles. It is denoted by

   

where :

Two of them one can easly compute from angles the wake :


 
 


such that :

 


So the problem is to compute only 1 ray.


First find Farey parents[6] of

Farey diagram


 


such that :

  


Take denominator of lower parent :

 

and compute last fraction.

First find periodic part :

 


then last angle is :

  

So here are 5 angles (q+2) in increasing order :

  

1/4


The bulb ( = period 4 hyperbolic component) has 2 external angles landing on it's root point (bond) :


 
 


Principal Misiurewicz point of wake is a landing point for external angles.

Two of them one can easly compute from angles the wake :


 
 


So the problem is to compute only rays.


First find Farey parents of

Farey diagram
 


Take denominator of lower parent :

 

and compute last fractions.

First find periodic parts for n :



then 2 last angles are :

  
  

So here are angles in increasing order :

  

Code

Haskell code

-- Haskell code by Claude Heiland-Allen
-- http://mathr.co.uk/blog/

import Control.Monad (forM_)
import Data.List (genericTake, genericDrop, intercalate)
import Data.Fixed (mod')
import Data.Ratio ((%), numerator, denominator)
import Numeric (readInt)
import System.Environment (getArgs)

type InternalAngle = Rational

type ExternalAngle = ([Bool], [Bool])

pretty :: ExternalAngle -> String
pretty (pre, per) = bits pre ++ "p" ++ bits per

bits :: [Bool] -> String
bits = map bit

bit :: Bool -> Char
bit False = '0'
bit True = '1'

binary :: [Bool] -> Integer
binary [] = 0
binary s = case readInt 2 (`elem`"01") (\c -> case c of '0' -> 0 ; '1' -> 1) (bits s) of
  [(b, "")] -> b

rational :: ExternalAngle -> Rational
rational (pre, per) = (binary pre % 2^p) + (binary per % (2^p * (2^q - 1)))
  where
    p = length pre
    q = length per

bulb :: InternalAngle -> (ExternalAngle, ExternalAngle)
bulb pq = (([], bs ++ [False, True]), ([], bs ++ [True, False]))
  where
    q = denominator pq
    bs
      = genericTake (q - 2)
      . map (\x -> 1 - pq < x && x < 1)
      . iterate (\x -> (x + pq) `mod'` 1)
      $ pq

hub :: InternalAngle -> [ExternalAngle]
hub pq =
  [ (sm, shift k sp) | k <- [0, b .. (q - p - 1) * b] ] ++
  [ (sp, shift k sp) | k <- [(q - p) * b, (q - p + 1) * b .. (q - 1) * b] ]
  where
    p = numerator pq
    q = denominator pq
    (([], sm), ([], sp)) = bulb pq
    (ab, cd) = parents pq
    b = denominator ab
    shift k = genericTake q . genericDrop k . cycle

parents :: InternalAngle -> (InternalAngle, InternalAngle)
parents pq = go q 1 0 p 0 1
  where
    p = numerator pq
    q = denominator pq
    go r1 s1 t1 r0 s0 t0
      | r0 == 0 =
          let ab = - s1 % t1
              a = numerator ab
              b = denominator ab
              c = p - a
              d = q - b
              cd = c % d
          in  (min ab cd, max ab cd)
      | otherwise =
          let (o, r) = divMod r1 r0
              s = s1 - o * s0
              t = t1 - o * t0
          in  go r0 s0 t0 r s t

main :: IO ()
main = do
  [sp, sq] <- getArgs
  p <- readIO sp
  q <- readIO sq
  let pq = p % q
      (lo, hi) = bulb pq
      hs = hub pq
  putStrLn $ "bulb:"
  putStrLn $ pretty lo ++ " = " ++ show (rational lo)
  putStrLn $ pretty hi ++ " = " ++ show (rational hi)
  putStrLn $ ""
  putStrLn $ "hub:"
  forM_ hs $ \h -> putStrLn $ pretty h ++ " = " ++ show (rational h)

Save it as a bh.hs and use it from console in an interactive way :

ghci
GHCi, version 7.10.3: http://www.haskell.org/ghc/  :? for help
Prelude> :l bh.hs
[1 of 1] Compiling Main             ( bh.hs, interpreted )
Ok, modules loaded: Main.

*Main> :main 1 2
bulb:
p01 = 1 % 3
p10 = 2 % 3

hub:
01p10 = 5 % 12
10p01 = 7 % 12
 

*Main> :main 1 3
bulb:
p001 = 1 % 7
p010 = 2 % 7

hub:
001p010 = 9 % 56
001p100 = 11 % 56
010p001 = 15 % 56

*Main> :main 1 4
bulb:
p0001 = 1 % 15
p0010 = 2 % 15

hub:
0001p0010 = 17 % 240
0001p0100 = 19 % 240
0001p1000 = 23 % 240
0010p0001 = 31 % 240

:main 1 5
bulb:
p00001 = 1 % 31
p00010 = 2 % 31

hub:
00001p00010 = 33 % 992
00001p00100 = 35 % 992
00001p01000 = 39 % 992
00001p10000 = 47 % 992
00010p00001 = 63 % 992



*Main> :main 1 6
bulb:
p000001 = 1 % 63
p000010 = 2 % 63

hub:
000001p000010 = 65 % 4032
000001p000100 = 67 % 4032
000001p001000 = 71 % 4032
000001p010000 = 79 % 4032
000001p100000 = 95 % 4032
000010p000001 = 127 % 4032

*Main> :main 1 7
bulb:
p0000001 = 1 % 127
p0000010 = 2 % 127

hub:
0000001p0000010 = 129 % 16256
0000001p0000100 = 131 % 16256
0000001p0001000 = 135 % 16256
0000001p0010000 = 143 % 16256
0000001p0100000 = 159 % 16256
0000001p1000000 = 191 % 16256
0000010p0000001 = 255 % 16256



*Main> :main 1 8
bulb:
p00000001 = 1 % 255
p00000010 = 2 % 255

hub:
00000001p00000010 = 257 % 65280
00000001p00000100 = 259 % 65280
00000001p00001000 = 263 % 65280
00000001p00010000 = 271 % 65280
00000001p00100000 = 287 % 65280
00000001p01000000 = 319 % 65280
00000001p10000000 = 383 % 65280
00000010p00000001 = 511 % 65280


*Main> :main 1 9
bulb:
p000000001 = 1 % 511
p000000010 = 2 % 511

hub:
000000001p000000010 = 513 % 261632
000000001p000000100 = 515 % 261632
000000001p000001000 = 519 % 261632
000000001p000010000 = 527 % 261632
000000001p000100000 = 543 % 261632
000000001p001000000 = 575 % 261632
000000001p010000000 = 639 % 261632
000000001p100000000 = 767 % 261632
000000010p000000001 = 1023 % 261632


*Main> :main 1 10
bulb:
p0000000001 = 1 % 1023
p0000000010 = 2 % 1023

hub:
0000000001p0000000010 = 1025 % 1047552
0000000001p0000000100 = 1027 % 1047552
0000000001p0000001000 = 1031 % 1047552
0000000001p0000010000 = 1039 % 1047552
0000000001p0000100000 = 1055 % 1047552
0000000001p0001000000 = 1087 % 1047552
0000000001p0010000000 = 1151 % 1047552
0000000001p0100000000 = 1279 % 1047552
0000000001p1000000000 = 1535 % 1047552
0000000010p0000000001 = 2047 % 1047552

*Main> :main 1 5
bulb:
p00001 = 1 % 31
p00010 = 2 % 31

hub:
00001p00010 = 33 % 992
00001p00100 = 35 % 992
00001p01000 = 39 % 992
00001p10000 = 47 % 992
00010p00001 = 63 % 992
*Main> :main 2 5
bulb:
p01001 = 9 % 31
p01010 = 10 % 31

hub:
01001p01010 = 289 % 992
01001p10010 = 297 % 992
01001p10100 = 299 % 992
01010p00101 = 315 % 992
01010p01001 = 319 % 992
*Main> :main 3 5
bulb:
p10101 = 21 % 31
p10110 = 22 % 31

hub:
10101p10110 = 673 % 992
10101p11010 = 677 % 992
10110p01011 = 693 % 992
10110p01101 = 695 % 992
10110p10101 = 703 % 992
*Main>  :main 4 5
bulb:
p11101 = 29 % 31
p11110 = 30 % 31

hub:
11101p11110 = 929 % 992
11110p01111 = 945 % 992
11110p10111 = 953 % 992
11110p11011 = 957 % 992
11110p11101 = 959 % 992
*Main> 


*Main> :main 1  7
bulb:
p0000001 = 1 % 127
p0000010 = 2 % 127

hub:
0000001p0000010 = 129 % 16256
0000001p0000100 = 131 % 16256
0000001p0001000 = 135 % 16256
0000001p0010000 = 143 % 16256
0000001p0100000 = 159 % 16256
0000001p1000000 = 191 % 16256
0000010p0000001 = 255 % 16256


*Main> :main 2  7
bulb:
p0010001 = 17 % 127
p0010010 = 18 % 127

hub:
0010001p0010010 = 2177 % 16256
0010001p0100010 = 2193 % 16256
0010001p0100100 = 2195 % 16256
0010001p1000100 = 2227 % 16256
0010001p1001000 = 2231 % 16256
0010010p0001001 = 2295 % 16256
0010010p0010001 = 2303 % 16256



*Main> :main 3 7
bulb:
p0101001 = 41 % 127
p0101010 = 42 % 127

hub:
0101001p0101010 = 5249 % 16256
0101001p1001010 = 5281 % 16256
0101001p1010010 = 5289 % 16256
0101001p1010100 = 5291 % 16256
0101010p0010101 = 5355 % 16256
0101010p0100101 = 5371 % 16256
0101010p0101001 = 5375 % 16256



*Main> :main 4  7
bulb:
p1010101 = 85 % 127
p1010110 = 86 % 127

hub:
1010101p1010110 = 10881 % 16256
1010101p1011010 = 10885 % 16256
1010101p1101010 = 10901 % 16256
1010110p0101011 = 10965 % 16256
1010110p0101101 = 10967 % 16256
1010110p0110101 = 10975 % 16256
1010110p1010101 = 11007 % 16256





*Main> :main 5  7
bulb:
p1101101 = 109 % 127
p1101110 = 110 % 127

hub:
1101101p1101110 = 13953 % 16256
1101101p1110110 = 13961 % 16256
1101110p0110111 = 14025 % 16256
1101110p0111011 = 14029 % 16256
1101110p1011011 = 14061 % 16256
1101110p1011101 = 14063 % 16256
1101110p1101101 = 14079 % 16256


*Main> :main 6  7
bulb:
p1111101 = 125 % 127
p1111110 = 126 % 127

hub:
1111101p1111110 = 16001 % 16256
1111110p0111111 = 16065 % 16256
1111110p1011111 = 16097 % 16256
1111110p1101111 = 16113 % 16256
1111110p1110111 = 16121 % 16256
1111110p1111011 = 16125 % 16256
1111110p1111101 = 16127 % 16256
*Main> 



 :main 1 65
bulb:
p00000000000000000000000000000000000000000000000000000000000000001 = 1 % 36893488147419103231
p00000000000000000000000000000000000000000000000000000000000000010 = 2 % 36893488147419103231

hub:
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000000000000000000000000000000000000000010 = 36893488147419103233 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000000000000000000000000000000000000000100 = 36893488147419103235 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000000000000000000000000000000000000001000 = 36893488147419103239 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000000000000000000000000000000000000010000 = 36893488147419103247 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000000000000000000000000000000000000100000 = 36893488147419103263 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000000000000000000000000000000000001000000 = 36893488147419103295 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000000000000000000000000000000000010000000 = 36893488147419103359 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000000000000000000000000000000000100000000 = 36893488147419103487 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000000000000000000000000000000001000000000 = 36893488147419103743 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000000000000000000000000000000010000000000 = 36893488147419104255 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000000000000000000000000000000100000000000 = 36893488147419105279 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000000000000000000000000000001000000000000 = 36893488147419107327 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000000000000000000000000000010000000000000 = 36893488147419111423 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000000000000000000000000000100000000000000 = 36893488147419119615 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000000000000000000000000001000000000000000 = 36893488147419135999 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000000000000000000000000010000000000000000 = 36893488147419168767 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000000000000000000000000100000000000000000 = 36893488147419234303 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000000000000000000000001000000000000000000 = 36893488147419365375 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000000000000000000000010000000000000000000 = 36893488147419627519 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000000000000000000000100000000000000000000 = 36893488147420151807 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000000000000000000001000000000000000000000 = 36893488147421200383 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000000000000000000010000000000000000000000 = 36893488147423297535 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000000000000000000100000000000000000000000 = 36893488147427491839 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000000000000000001000000000000000000000000 = 36893488147435880447 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000000000000000010000000000000000000000000 = 36893488147452657663 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000000000000000100000000000000000000000000 = 36893488147486212095 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000000000000001000000000000000000000000000 = 36893488147553320959 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000000000000010000000000000000000000000000 = 36893488147687538687 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000000000000100000000000000000000000000000 = 36893488147955974143 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000000000001000000000000000000000000000000 = 36893488148492845055 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000000000010000000000000000000000000000000 = 36893488149566586879 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000000000100000000000000000000000000000000 = 36893488151714070527 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000000001000000000000000000000000000000000 = 36893488156009037823 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000000010000000000000000000000000000000000 = 36893488164598972415 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000000100000000000000000000000000000000000 = 36893488181778841599 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000001000000000000000000000000000000000000 = 36893488216138579967 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000010000000000000000000000000000000000000 = 36893488284858056703 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000000100000000000000000000000000000000000000 = 36893488422297010175 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000001000000000000000000000000000000000000000 = 36893488697174917119 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000010000000000000000000000000000000000000000 = 36893489246930731007 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000000100000000000000000000000000000000000000000 = 36893490346442358783 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000001000000000000000000000000000000000000000000 = 36893492545465614335 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000010000000000000000000000000000000000000000000 = 36893496943512125439 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000000100000000000000000000000000000000000000000000 = 36893505739605147647 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000001000000000000000000000000000000000000000000000 = 36893523331791192063 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000010000000000000000000000000000000000000000000000 = 36893558516163280895 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000000100000000000000000000000000000000000000000000000 = 36893628884907458559 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000001000000000000000000000000000000000000000000000000 = 36893769622395813887 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000010000000000000000000000000000000000000000000000000 = 36894051097372524543 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000000100000000000000000000000000000000000000000000000000 = 36894614047325945855 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000001000000000000000000000000000000000000000000000000000 = 36895739947232788479 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000010000000000000000000000000000000000000000000000000000 = 36897991747046473727 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000000100000000000000000000000000000000000000000000000000000 = 36902495346673844223 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000001000000000000000000000000000000000000000000000000000000 = 36911502545928585215 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000010000000000000000000000000000000000000000000000000000000 = 36929516944438067199 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000000100000000000000000000000000000000000000000000000000000000 = 36965545741457031167 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000001000000000000000000000000000000000000000000000000000000000 = 37037603335494959103 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000010000000000000000000000000000000000000000000000000000000000 = 37181718523570814975 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00000100000000000000000000000000000000000000000000000000000000000 = 37469948899722526719 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00001000000000000000000000000000000000000000000000000000000000000 = 38046409652025950207 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00010000000000000000000000000000000000000000000000000000000000000 = 39199331156632797183 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p00100000000000000000000000000000000000000000000000000000000000000 = 41505174165846491135 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p01000000000000000000000000000000000000000000000000000000000000000 = 46116860184273879039 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000001p10000000000000000000000000000000000000000000000000000000000000000 = 55340232221128654847 % 1361129467683753853816604941579653742592
00000000000000000000000000000000000000000000000000000000000000010p00000000000000000000000000000000000000000000000000000000000000001 = 73786976294838206463 % 1361129467683753853816604941579653742592
*Main>

References

  1. wikipedia : Misiurewicz point
  2. wikipedia : Misiurewicz point
  3. Operating with External Arguments of Douady and Hubbard by G. Pastor, M. Romera, G. Alvarez, J. Nunez, D. Arroyo, and F. Montoya
  4. Geometry of the Antennas in the Mandelbrot Set (2000) by R. L. Devaney , M. Moreno-rocha
  5. Navigating by spokes in the Mandelbrot set by Claude Heiland-Allen
  6. finding_parents_in_the_farey_tree by Claude Heiland-Allen

See also

This article is issued from Wikibooks. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.