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
Y = SineGordonYsystem('A',(6,4,3)); Y 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
Y = SineGordonYsystem('D',(6,4,3)); Y 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 withna[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
Y = SineGordonYsystem('A',(6,4,3)); Y Y.intervals() Y.triangulation() 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
Y = SineGordonYsystem('A',(6,4,3)) Y.F()
- 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)
wherep
andq
are the two extremal vertices of the interval andX
is 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')))
Y = SineGordonYsystem('A',(6,4,3)) Y.intervals()
- 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)
Y = SineGordonYsystem('A',(6,4,3)) Y.na()
- 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)
Y = SineGordonYsystem('A',(6,4,3)) Y.pa()
- 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 verticespoints_color
– the color of the vertices; default ‘black’points_size
– the size of the vertices; default 7triangulation_color
– the color of the arcs; default ‘black’triangulation_thickness
– the thickness of the arcs; default 0.5shading_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
Y = SineGordonYsystem('A',(6,4,3)) Y.plot() # long time (2s) # needs sage.plot
- 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)
Y = SineGordonYsystem('A',(6,4,3)) Y.qa()
- 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
Y = SineGordonYsystem('A',(6,4,3)) Y.r()
- rk()[source]¶
Return the sequence of integers
r^{(k)}
, i.e. the width of an interval of type ‘L’ or ‘R’ in thek
-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)
Y = SineGordonYsystem('A',(6,4,3)) Y.rk()
- triangulation()[source]¶
Return the initial triangulation of the polygon realizing
self
as 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))
Y = SineGordonYsystem('A',(6,4,3)) Y.triangulation()
- 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'
Y = SineGordonYsystem('A',(6,4,3)) Y.type()
- vertices()[source]¶
Return the vertices of the polygon realizing
self
as the ring of integers moduloself.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
Y = SineGordonYsystem('A',(6,4,3)) Y.vertices()