sine-Gordon Y-system plotter¶
This class builds the triangulations associated to sine-Gordon and reduced sine-Gordon Y-systems as constructed in [NS].
AUTHORS:
- Salvatore Stella (2014-07-18): initial version 
EXAMPLES:
A reduced sine-Gordon example with 3 generations:
sage: Y = SineGordonYsystem('A',(6,4,3)); Y
A sine-Gordon Y-system of type A with defining integer tuple (6, 4, 3)
sage: Y.plot()     #not tested
>>> from sage.all import *
>>> Y = SineGordonYsystem('A',(Integer(6),Integer(4),Integer(3))); Y
A sine-Gordon Y-system of type A with defining integer tuple (6, 4, 3)
>>> Y.plot()     #not tested
The same integer tuple but for the non-reduced case:
sage: Y = SineGordonYsystem('D',(6,4,3)); Y
A sine-Gordon Y-system of type D with defining integer tuple (6, 4, 3)
sage: Y.plot()     #not tested
>>> from sage.all import *
>>> Y = SineGordonYsystem('D',(Integer(6),Integer(4),Integer(3))); Y
A sine-Gordon Y-system of type D with defining integer tuple (6, 4, 3)
>>> Y.plot()     #not tested
Todo
The code for plotting is extremely slow.
REFERENCES:
- class sage.combinat.sine_gordon.SineGordonYsystem(X, na)[source]¶
- Bases: - SageObject- A class to model a (reduced) sine-Gordon Y-system. - Note that the generations, together with all integer tuples, in this implementation are numbered from 0 while in [NS] they are numbered from 1 - INPUT: - X– the type of the Y-system to construct (either ‘A’ or ‘D’)
- na– the tuple of positive integers defining the Y-system with- na[0] > 2
 - See [NS] - EXAMPLES: - sage: Y = SineGordonYsystem('A',(6,4,3)); Y A sine-Gordon Y-system of type A with defining integer tuple (6, 4, 3) sage: Y.intervals() (((0, 0, 'R'),), ((0, 17, 'L'), (17, 34, 'L'), ... (104, 105, 'R'), (105, 0, 'R'))) sage: Y.triangulation() ((17, 89), (17, 72), (34, 72), ... (102, 105), (103, 105)) sage: Y.plot() #not tested - >>> from sage.all import * >>> Y = SineGordonYsystem('A',(Integer(6),Integer(4),Integer(3))); Y A sine-Gordon Y-system of type A with defining integer tuple (6, 4, 3) >>> Y.intervals() (((0, 0, 'R'),), ((0, 17, 'L'), (17, 34, 'L'), ... (104, 105, 'R'), (105, 0, 'R'))) >>> Y.triangulation() ((17, 89), (17, 72), (34, 72), ... (102, 105), (103, 105)) >>> Y.plot() #not tested - F()[source]¶
- Return the number of generations in - self.- EXAMPLES: - sage: Y = SineGordonYsystem('A',(6,4,3)) sage: Y.F() 3 - >>> from sage.all import * >>> Y = SineGordonYsystem('A',(Integer(6),Integer(4),Integer(3))) >>> Y.F() 3 
 - intervals()[source]¶
- Return, divided by generation, the list of intervals used to construct the initial triangulation. - Each such interval is a triple - (p, q, X)where- pand- qare the two extremal vertices of the interval and- Xis the type of the interval (one of ‘L’, ‘R’, ‘NL’, ‘NR’).- ALGORITHM: - The algorithm used here is the one described in section 5.1 of [NS]. The only difference is that we get rid of the special case of the first generation by treating the whole disk as a type ‘R’ interval. - EXAMPLES: - sage: Y = SineGordonYsystem('A',(6,4,3)) sage: Y.intervals() (((0, 0, 'R'),), ((0, 17, 'L'), (17, 34, 'L'), ... (104, 105, 'R'), (105, 0, 'R'))) - >>> from sage.all import * >>> Y = SineGordonYsystem('A',(Integer(6),Integer(4),Integer(3))) >>> Y.intervals() (((0, 0, 'R'),), ((0, 17, 'L'), (17, 34, 'L'), ... (104, 105, 'R'), (105, 0, 'R'))) 
 - na()[source]¶
- Return the sequence of the integers \(n_a\) defining - self.- EXAMPLES: - sage: Y = SineGordonYsystem('A',(6,4,3)) sage: Y.na() (6, 4, 3) - >>> from sage.all import * >>> Y = SineGordonYsystem('A',(Integer(6),Integer(4),Integer(3))) >>> Y.na() (6, 4, 3) 
 - pa()[source]¶
- Return the sequence of integers - p_a, i.e. the total number of intervals of types ‘NL’ and ‘NR’ in the- (a+1)-th generation.- EXAMPLES: - sage: Y = SineGordonYsystem('A',(6,4,3)) sage: Y.pa() (1, 6, 25) - >>> from sage.all import * >>> Y = SineGordonYsystem('A',(Integer(6),Integer(4),Integer(3))) >>> Y.pa() (1, 6, 25) 
 - plot(**kwds)[source]¶
- Plot the initial triangulation associated to - self.- INPUT: - radius– the radius of the disk; by default the length of the circle is the number of vertices
- points_color– the color of the vertices; default ‘black’
- points_size– the size of the vertices; default 7
- triangulation_color– the color of the arcs; default ‘black’
- triangulation_thickness– the thickness of the arcs; default 0.5
- shading_color– the color of the shading used on neuter intervals; default ‘lightgray’
- reflections_color– the color of the reflection axes; default ‘blue’
- reflections_thickness– the thickness of the reflection axes; default 1
 - EXAMPLES: - sage: Y = SineGordonYsystem('A',(6,4,3)) sage: Y.plot() # long time (2s) # needs sage.plot Graphics object consisting of 219 graphics primitives - >>> from sage.all import * >>> Y = SineGordonYsystem('A',(Integer(6),Integer(4),Integer(3))) >>> Y.plot() # long time (2s) # needs sage.plot Graphics object consisting of 219 graphics primitives 
 - qa()[source]¶
- Return the sequence of integers - q_a, i.e. the total number of intervals of types ‘L’ and ‘R’ in the- (a+1)-th generation.- EXAMPLES: - sage: Y = SineGordonYsystem('A',(6,4,3)) sage: Y.qa() (6, 25, 81) - >>> from sage.all import * >>> Y = SineGordonYsystem('A',(Integer(6),Integer(4),Integer(3))) >>> Y.qa() (6, 25, 81) 
 - r()[source]¶
- Return the number of vertices in the polygon realizing - self.- EXAMPLES: - sage: Y = SineGordonYsystem('A',(6,4,3)) sage: Y.r() 106 - >>> from sage.all import * >>> Y = SineGordonYsystem('A',(Integer(6),Integer(4),Integer(3))) >>> Y.r() 106 
 - rk()[source]¶
- Return the sequence of integers - r^{(k)}, i.e. the width of an interval of type ‘L’ or ‘R’ in the- k-th generation.- EXAMPLES: - sage: Y = SineGordonYsystem('A',(6,4,3)) sage: Y.rk() (106, 17, 4) - >>> from sage.all import * >>> Y = SineGordonYsystem('A',(Integer(6),Integer(4),Integer(3))) >>> Y.rk() (106, 17, 4) 
 - triangulation()[source]¶
- Return the initial triangulation of the polygon realizing - selfas a tuple of pairs of vertices.- Warning - In type ‘D’ the returned triangulation does NOT contain the two radii. - ALGORITHM: - We implement the four cases described by Figure 14 in [NS]. - EXAMPLES: - sage: Y = SineGordonYsystem('A',(6,4,3)) sage: Y.triangulation() ((17, 89), (17, 72), ... (102, 105), (103, 105)) - >>> from sage.all import * >>> Y = SineGordonYsystem('A',(Integer(6),Integer(4),Integer(3))) >>> Y.triangulation() ((17, 89), (17, 72), ... (102, 105), (103, 105)) 
 - type()[source]¶
- Return the type of - self.- EXAMPLES: - sage: Y = SineGordonYsystem('A',(6,4,3)) sage: Y.type() 'A' - >>> from sage.all import * >>> Y = SineGordonYsystem('A',(Integer(6),Integer(4),Integer(3))) >>> Y.type() 'A' 
 - vertices()[source]¶
- Return the vertices of the polygon realizing - selfas the ring of integers modulo- self.r().- EXAMPLES: - sage: Y = SineGordonYsystem('A',(6,4,3)) sage: Y.vertices() Ring of integers modulo 106 - >>> from sage.all import * >>> Y = SineGordonYsystem('A',(Integer(6),Integer(4),Integer(3))) >>> Y.vertices() Ring of integers modulo 106