|
D.13.4.10 ellipticNF
Procedure from library polymake.lib (see polymake_lib).
- Usage:
- ellipticNF(polygon); polygon list
- Assume:
- polygon is a list of integer vectors in the plane such that their
convex hull C has precisely one interior lattice point; i.e. C is the
Newton polygon of an elliptic curve
- Purpose:
- compute the normal form of the polygon with respect to the unimodular
affine transformations T=A*x+v; there are sixteen different normal forms
(see e.g. Bjorn Poonen, Fernando Rodriguez-Villegas: Lattice Polygons
and the number 12. Amer. Math. Monthly 107 (2000), no. 3,
238--250.)
- Return:
- list, L such that
L[1] : list whose entries are the vertices of the normal form of
the polygon
L[2] : the matrix A of the unimodular transformation
L[3] : the translation vector v of the unimodular transformation
L[4] : list such that the ith entry is the image of polygon[i]
under the unimodular transformation T
Example:
| LIB "polymake.lib";
==> Welcome to polymake version
==> Copyright (c) 1997-2015
==> Ewgenij Gawrilow, Michael Joswig (TU Darmstadt)
==> http://www.polymake.org
ring r=0,(x,y),dp;
// the Newton polygon of the following polynomial
// has precisely one interior point
poly f=x22y11+x19y10+x17y9+x16y9+x12y7+x9y6+x7y5+x2y3;
list polygon=list(intvec(22,11),intvec(19,10),intvec(17,9),
intvec(16,9), intvec(12,7),intvec(9,6),
intvec(7,5),intvec(2,3));
// its lattice points are
polygon;
==> [1]:
==> 22,11
==> [2]:
==> 19,10
==> [3]:
==> 17,9
==> [4]:
==> 16,9
==> [5]:
==> 12,7
==> [6]:
==> 9,6
==> [7]:
==> 7,5
==> [8]:
==> 2,3
// find its normal form
list nf=ellipticNF(polygon);
// the vertices of the normal form are
nf[1];
==> [1]:
==> 4,0
==> [2]:
==> 0,0
==> [3]:
==> 0,2
// it has been transformed by the unimodular affine transformation A*x+v
// with matrix A
nf[2];
==> 3,-7,
==> -2,5
// and translation vector v
nf[3];
==> 15,-11
// the 3rd lattice point ...
polygon[3];
==> 17,9
// ... has been transformed to
nf[4][3];
==> 3,0
|
|