|
D.13.4.5 tropicalCurve
Procedure from library tropical.lib (see tropical_lib).
- Usage:
- tropicalCurve(tp[,#]); tp list, # optional list
- Assume:
- tp is list of linear polynomials of the form ax+by+c
with integers a, b and a rational number c representing
a tropical Laurent polynomial defining a tropical plane curve;
alternatively tp can be a polynomial in Q(t)[x,y] defining a
tropical plane curve via the valuation map;
the basering must have a global monomial ordering,
two variables and up to one parameter!
- Return:
- list, each entry i=1,...,size(l)-1 corresponds to a vertex
in the tropical plane curve defined by tp
l[i][1] = x-coordinate of the ith vertex
l[i][2] = y-coordinate of the ith vertex
l[i][3] = intmat, if j is an entry in the first row
of intmat then the ith vertex of
the tropical curve is connected to the
jth vertex with multiplicity given
by the corresponding entry in the second row
l[i][4] = list of lists, the first entry of a list is
a primitive integer vector defining the direction
of an unbounded edge emerging from the ith vertex
of the graph, the corresponding second entry in
the list is the multiplicity of the unbounded edge
l[i][5] = a polynomial whose monomials mark the vertices
in the Newton polygon corresponding to the entries
in tp which take the common minimum at the ith
vertex -- if some coefficient a or b of the
linear polynomials in the input was negative,
then each monomial has to be shifted by
the values in l[size(l)][3]
l[size(l)][1] = list, the entries describe the boundary
points of the Newton subdivision
l[size(l)][2] = list, the entries are pairs of integer
vectors defining an interior
edge of the Newton subdivision
l[size(l)][3] = intvec, the monomials occuring in l[i][5]
have to be shifted by this vector
in order to represent marked
vertices in the Newton polygon
- Note:
- here the tropical polynomial is supposed to be the MINIMUM
of the linear forms in tp, unless the optional input #[1]
is the string 'max'
Example:
| LIB "tropical.lib";
==> Welcome to polymake version
==> Copyright (c) 1997-2015
==> Ewgenij Gawrilow, Michael Joswig (TU Darmstadt)
==> http://www.polymake.org
ring r=(0,t),(x,y),dp;
poly f=t*(x7+y7+1)+1/t*(x4+y4+x2+y2+x3y+xy3)+1/t7*x2y2;
list graph=tropicalCurve(f);
// the tropical curve has size(graph)-1 vertices
size(graph)-1;
==> 7
// the coordinates of the first vertex are graph[1][1],graph[1][2];
graph[1][1],graph[1][2];
==> -8/3 -8/3
// the first vertex is connected to the vertices
// graph[1][3][1,1..ncols(graph[1][3])]
intmat M=graph[1][3];
M[1,1..ncols(graph[1][3])];
==> 2 3
// the weights of the edges to these vertices are
// graph[1][3][2,1..ncols(graph[1][3])]
M[2,1..ncols(graph[1][3])];
==> 1 1
// from the first vertex emerge size(graph[1][4]) unbounded edges
size(graph[1][4]);
==> 1
// the primitive integral direction vector of the first unbounded edge
// of the first vertex
graph[1][4][1][1];
==> -1,-1
// the weight of the first unbounded edge of the first vertex
graph[1][4][1][2];
==> 7
// the monomials which are part of the Newton subdivision of the first vertex
graph[1][5];
==> x7+y7+x2y2
// connecting the points in graph[size(graph)][1] we get
// the boundary of the Newton polytope
graph[size(graph)][1];
==> [1]:
==> 0,7
==> [2]:
==> 7,0
==> [3]:
==> 0,0
// an entry in graph[size(graph)][2] is a pair of points
// in the Newton polytope bounding an inner edge
graph[size(graph)][2][1];
==> [1]:
==> 7,0
==> [2]:
==> 2,2
|
|