1846
Comment:
|
← Revision 7 as of 2010-11-07 21:07:37 ⇥
3073
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
= Flat surfaces examples = | <<TableOfContents>> |
Line 3: | Line 3: |
=== Using interval exchange transformations === | = Flat surfaces = |
Line 5: | Line 5: |
Permutations of interval exchange transformations are created | == Interval exchange transformations / Linear involutions == |
Line 7: | Line 7: |
Build a permutation and its Rauzy diagram | Permutations of interval exchange transformations and generalized permutations of linear involutions are created using {{{ sage: iet.Permutation('a b c d','d c b a') a b c d d c b a sage: iet.GeneralizedPermutation('a a b','b c c') a a b b c c }}} We can build Rauzy diagrams from permutations |
Line 15: | Line 25: |
sage: r.path | |
Line 18: | Line 27: |
Build a path in the Rauzy diagram | Other Rauzy diagrams (with induction on the left, inversion, ...) are accessible via options |
Line 20: | Line 29: |
sage: path=r.path(p,'t','t','b','t','b','b','t','b') sage: path.is_full() # all intervals are seen during Rauzy induction |
sage: p.rauzy_diagram(left_induction=True) Rauzy diagram with 84 permutations }}} Build a path in the Rauzy diagram (the letter 't' means top induction and the letter 'b' means bottom induction) {{{ sage: path = r.path(p,'t','t','b','t','b','b','t','b') sage: path.is_full() # all intervals are seen as winner during Rauzy induction |
Line 23: | Line 38: |
sage: path.is_loop() | sage: path.is_loop() # startpoint and endpoint are identic |
Line 29: | Line 44: |
sage: l,v,m=path.matrix().eigenvectors_right()[3] # l is the eigenvalue, v the vector and m the multiplicity sage m == 1 sage: t= iet.IntervalExchangeTransformation(p,v[0]) |
sage: m = path.matrix() sage: l,v,n = m.eigenvectors_right()[3] # l is the eigenvalue, v the vector and m the multiplicity sage: n == 1 True sage: t = iet.IntervalExchangeTransformation(p,v[0]) |
Line 38: | Line 55: |
And we now check that the interval exchange map is self-similar | And we now check that the interval exchange map is self-similar under as many iterations as the length of the path |
Line 40: | Line 57: |
sage: tt = sage: t.rauzy_move(iterations=8) | sage: tt = t.rauzy_move(iterations=8) |
Line 49: | Line 66: |
=== Square-tiled surfaces === | == Square-tiled surfaces == |
Line 60: | Line 77: |
And now, we build its Teichmueller curve and compute some of its invariants (rk: it is not clear yet which properties should be attached to the Teichmueller curve and which should be attached to the Veech group) | We now access to its Veech group and look at the associated invariants |
Line 63: | Line 80: |
sage: t = o.teichmueller_curve() sage: G = t.veech_group() sage: G.index() |
sage: G = o.veech_group() sage: G.index() # index in SL(2,Z) |
Line 67: | Line 83: |
sage: G.nu2() # elliptic points of order 2 | sage: G.nu2() # elliptic points of order 2 |
Line 69: | Line 85: |
sage: G.nu3() # elliptic points of order3 | sage: G.nu3() # elliptic points of order 3 |
Line 73: | Line 89: |
}}} The Veech group of an origami is in fact attached to its Teichmüller curve. In the following we build the Teichmüller curve of o and compute other invariants {{{ sage: t = o.teichmueller_curve() |
|
Line 76: | Line 97: |
One can access to detailed data of a cusp using the cylinder diagram decomposition of an origami {{{ sage: o = Origami('(1,2)(3,4)','(1,3)') sage: o.stratum() H(1, 1) sage: t = o.teichmueller_curve() sage: for c,width in t.cusp_representative(): ... print c ... print "width: %d" %width ... print c.cylinder_diagram().dual_graph(), "\n" (1,2)(3,4) (1)(2,3)(4) width: 2 Looped multi-graph on 1 vertex (1,2)(3)(4) (1,3)(2,4) width: 2 Looped multi-graph on 2 vertices (1,2,3,4) (1)(2,4)(3) width: 2 Looped multi-graph on 1 vertex }}} |
Flat surfaces
Interval exchange transformations / Linear involutions
Permutations of interval exchange transformations and generalized permutations of linear involutions are created using
sage: iet.Permutation('a b c d','d c b a') a b c d d c b a sage: iet.GeneralizedPermutation('a a b','b c c') a a b b c c
We can build Rauzy diagrams from permutations
sage: p = iet.Permutation('a b c d','d c b a') sage: p.connected_component() H_hyp(2) sage: r = p.rauzy_diagram() sage: print r Rauzy diagram with 7 permutations
Other Rauzy diagrams (with induction on the left, inversion, ...) are accessible via options
sage: p.rauzy_diagram(left_induction=True) Rauzy diagram with 84 permutations
Build a path in the Rauzy diagram (the letter 't' means top induction and the letter 'b' means bottom induction)
sage: path = r.path(p,'t','t','b','t','b','b','t','b') sage: path.is_full() # all intervals are seen as winner during Rauzy induction True sage: path.is_loop() # startpoint and endpoint are identic True
Build an interval exchange map associated to this path
sage: m = path.matrix() sage: l,v,n = m.eigenvectors_right()[3] # l is the eigenvalue, v the vector and m the multiplicity sage: n == 1 True sage: t = iet.IntervalExchangeTransformation(p,v[0]) sage: print t Interval exchange transformation of [0, 4.390256884515514?[ with permutation a b c d d c b a
And we now check that the interval exchange map is self-similar under as many iterations as the length of the path
sage: tt = t.rauzy_move(iterations=8) sage: print tt Interval exchange transformation of [0, 1[ with permutation a b c d d c b a sage: tt.normalize(l) == t True
Square-tiled surfaces
Let us build the genus 2 origami with three squares
sage: o = Origami('(1,2)', '(1,3)') sage: print o (1, 2) (1, 3)
We now access to its Veech group and look at the associated invariants
sage: G = o.veech_group() sage: G.index() # index in SL(2,Z) 3 sage: G.nu2() # elliptic points of order 2 1 sage: G.nu3() # elliptic points of order 3 1 sage: G.ncusps() # number of cusps 2
The Veech group of an origami is in fact attached to its Teichmüller curve. In the following we build the Teichmüller curve of o and compute other invariants
sage: t = o.teichmueller_curve() sage: t.sum_of_lyapunov_exponents() 4/3
One can access to detailed data of a cusp using the cylinder diagram decomposition of an origami
sage: o = Origami('(1,2)(3,4)','(1,3)') sage: o.stratum() H(1, 1) sage: t = o.teichmueller_curve() sage: for c,width in t.cusp_representative(): ... print c ... print "width: %d" %width ... print c.cylinder_diagram().dual_graph(), "\n" (1,2)(3,4) (1)(2,3)(4) width: 2 Looped multi-graph on 1 vertex (1,2)(3)(4) (1,3)(2,4) width: 2 Looped multi-graph on 2 vertices (1,2,3,4) (1)(2,4)(3) width: 2 Looped multi-graph on 1 vertex