| #### D.13.6.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";
    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

User manual for Singular version 4.4.0, 2024, generated by texi2html.