|
D.13.6.3 puiseuxExpansion
Procedure from library tropical.lib (see tropical_lib).
- Usage:
- puiseuxExpansion(f,n,#); f poly, n int, # list
- Assume:
- f is a non-constant polynomial in two variables which is not
divisible by the first variable and which is squarefree
as a power series over the complex numbers;
the base field is either the field of rational numbers or a finite extension thereof;
monomial ordering is assumed to be local;
the optional parameter # can be the string 'subst'
- Return:
- list, where each entry of the list l describes the Newton-Puiseux
parametrisations of one branch of the plane curve singularity
at the origin defined by f; only the terms up to order n of each
parametetrisation are computed
l[i][1] = is a ring
l[i][2] = int
l[i][3] = string
WE NOW DESCRIBE THE LIST ENTRIES l[i] IN MORE DETAIL:
- the ring l[i][1] contains an ideal LIFT and the Newton-Puiseux
parametrisation of the branch is given by x=t^N and y=LIFT[1],
where N=l[i][2]
- if the base field had a parameter and a minimal polynomial, then
the new base field will have a parameter and a new minimal polynomial,
and LIFT[2] describes how the old parameter can be computed from the new one
- if a field extension with minimal polynomial of degree k was necessary,
then to the one extension produced actually k extensions correspond by replacing
the parameter a successively by all zeros of the minimal polynomial
- if the option subst was set l[i][3] contains the polynomial where
y has been substituted by y(t^{1/N}) as a string
- Remark:
- - it is best to use the procedure displayPuiseuxExpansion to
display the result
- the procedure requires the Singular procedure absPrimdecGTZ to be
present in the package primdec.lib
- if f is not squarefree it will be replaced by its squarefree part
Example:
| LIB "tropical.lib";
==> Welcome to polymake version
==> Copyright (c) 1997-2015
==> Ewgenij Gawrilow, Michael Joswig (TU Darmstadt)
==> http://www.polymake.org
printlevel=1;
ring r=0,(x,y),ds;
poly f=x2-y4+x5y7;
puiseuxExpansion(f,3,"subst");
==> // ** name conflict var(1) and var(3): `x(1)`, rename to `@x(1)`in >> \
ring EXTENSIONRING = ring(RL);<<
==> in tropical.lib::findzerosAndBasictransform:6320
==> // ** redefining ggteiler ( int ggteiler=gcd(wneu[1],wneu[2]\
);) tropical.lib::tropicalparametrise:5766
==> // ** redefining ggteiler ( int ggteiler=gcd(wneu[1],wneu[2]\
);) tropical.lib::tropicalparametrise:5766
==> The procedure has created a list of lists. The jth entry of this list
==> contains a ring, an integer and an intvec.
==> In this ring lives an ideal representing the wanted lifting,
==> if the integer is N then in the parametrisation t has to be replaced by t\
^1/N,
==> and if the ith component of the intvec is w[i] then the ith component in \
LIFT
==> should be multiplied by t^-w[i]/N in order to get the parametrisation.
==>
==> Suppose your list has the name L, then you can access the 1st ring via:
==>
==> def LIFTRing=L[1][1]; setring LIFTRing; LIFT;
==>
==> !!!! WARNING: The number of terms computed in the Puiseux expansion were
==> !!!! not enough to find all branches of the curve singularity!
==> [1]:
==> [1]:
==> // coefficients: QQ
==> // number of vars : 1
==> // block 1 : ordering ls
==> // : names t
==> // block 2 : ordering C
==> [2]:
==> 2
==> [3]:
==> (11/8)*t^(30/2) + (5/4)*t^(43/2) + (139/256)*t^(56/2) + (35/256)*t^\
(69/2) + (21/1024)*t^(82/2) + (7/4096)*t^(95/2) + (1/16384)*t^(108/2)
==> [2]:
==> [1]:
==> // coefficients: QQ
==> // number of vars : 1
==> // block 1 : ordering ls
==> // : names t
==> // block 2 : ordering C
==> [2]:
==> 2
==> [3]:
==> (11/8)*t^(30/2) + (-5/4)*t^(43/2) + (139/256)*t^(56/2) + (-35/256)*\
t^(69/2) + (21/1024)*t^(82/2) + (-7/4096)*t^(95/2) + (1/16384)*t^(108/2)
==> [3]:
==> [1]:
==> // coefficients: QQ(a)
==> // number of vars : 1
==> // block 1 : ordering ls
==> // : names t
==> // block 2 : ordering C
==> [2]:
==> 2
==> [3]:
==> (-a4+1)*t^(4/2) + (a7-a3)*t^(17/2) + (14a6-3a2)/8*t^(30/2) + (21a5-\
a)/16*t^(43/2) + (140a4-1)/256*t^(56/2) + (35a3)/256*t^(69/2) + (21a2)/10\
24*t^(82/2) + (7a)/4096*t^(95/2) + (1/16384)*t^(108/2)
displayPuiseuxExpansion(puiseuxExpansion(f,3));
==> // ** name conflict var(1) and var(3): `x(1)`, rename to `@x(1)`in >> \
ring EXTENSIONRING = ring(RL);<<
==> in tropical.lib::findzerosAndBasictransform:6320
==> // ** redefining ggteiler ( int ggteiler=gcd(wneu[1],wneu[2]\
);) tropical.lib::tropicalparametrise:5766
==> // ** redefining ggteiler ( int ggteiler=gcd(wneu[1],wneu[2]\
);) tropical.lib::tropicalparametrise:5766
==> The procedure has created a list of lists. The jth entry of this list
==> contains a ring, an integer and an intvec.
==> In this ring lives an ideal representing the wanted lifting,
==> if the integer is N then in the parametrisation t has to be replaced by t\
^1/N,
==> and if the ith component of the intvec is w[i] then the ith component in \
LIFT
==> should be multiplied by t^-w[i]/N in order to get the parametrisation.
==>
==> Suppose your list has the name L, then you can access the 1st ring via:
==>
==> def LIFTRing=L[1][1]; setring LIFTRing; LIFT;
==>
==> !!!! WARNING: The number of terms computed in the Puiseux expansion were
==> !!!! not enough to find all branches of the curve singularity!
==> =============================
==> 1. Expansion:
==>
==> The Puiseux expansion lives in the ring
==> Q[[t^(1/2)]]
==>
==> The expansion has the form:
==> y=(1)*t^(1/2) + (1/4)*t^(14/2)
==>
==> =============================
==> 2. Expansion:
==>
==> The Puiseux expansion lives in the ring
==> Q[[t^(1/2)]]
==>
==> The expansion has the form:
==> y=(-1)*t^(1/2) + (1/4)*t^(14/2)
==>
==> =============================
==> 3. Expansion:
==>
==> The Puiseux expansion lives in the ring
==> Q[a]/0[[t^(1/2)]]
==>
==> The expansion has the form:
==> y=(a)*t^(1/2) + (1/4)*t^(14/2)
==>
|
|