The Fibonacci word as a fixed point of morphism

{{{id=1| phi = WordMorphism('0->01,1->0'); phi /// Morphism from Words over Ordered Alphabet ['0', '1'] to Words over Ordered Alphabet ['0', '1'] }}} {{{id=25| f = words.FixedPointOfMorphism(phi, '0'); f /// word: 0100101001001010010100100101001001010010... }}} {{{id=26| f[2000:2010] /// word: 0100100101 }}} {{{id=27| print f[:20] f[:20].palindromes() /// word: 01001010010010100101 set([word: 0101001001010, word: , word: 00, word: 010, word: 1001, word: 010010010, word: 0, word: 100101001, word: 010010, word: 10010100100101001, word: 10100101, word: 1001001, word: 101, word: 00100, word: 01001010010, word: 10100100101, word: 0100101001001010010, word: 001010010010100, word: 0010100, word: 01010, word: 1]) }}} {{{id=2| /// }}}

 

Drawing the discrete path

{{{id=9| Paths = WordPaths('01'); Paths /// Word Paths in North and East steps }}} {{{id=13| Paths(f[:20]).plot() /// }}} {{{id=10| Paths = WordPaths('01', steps=[(1,0),(1,1)]); Paths /// Word Paths over 2 steps }}} {{{id=28| Paths(f[:20]).plot() /// }}} {{{id=11| /// }}}

 

Constructing the Fibonacci path from the Fibonacci word

{{{id=14| phi = WordMorphism({2:[2,0], 0:[2]}) /// }}} {{{id=15| f = words.FixedPointOfMorphism(phi, 2); f /// word: 2022020220220202202022022020220220202202... }}} {{{id=16| g = f.partial_sums(3, mod=4); g /// word: 3113113313313311311331331331131131133133... }}} {{{id=24| h = g.partial_sums(3, mod=4); h /// word: 3230301030323212323032321210121232303232... }}} {{{id=20| Freeman = WordPaths([0,1,2,3]) /// }}} {{{id=21| Freeman(h[:1000]).plot() /// }}} {{{id=22| print h print h.finite_differences() print h.finite_differences().finite_differences() print words.FibonacciWord((2,0)) /// word: 3230301030323212323032321210121232303232... word: 3113113313313311311331331331131131133133... word: 2022020220220202202022022020220220202202... word: 2022020220220202202022022020220220202202... }}} {{{id=23| /// }}}