|
D.6.9.2 develop
Procedure from library hnoether.lib (see hnoether_lib).
- Usage:
- develop(f [,n]); f poly, n int
- Assume:
- f is a bivariate polynomial (in the first 2 ring variables) and
irreducible as power series (for reducible f use
hnexpansion ).
- Return:
- list
L with:
L[1] ; matrix:
- Each row contains the coefficients of the corresponding line of the
Hamburger-Noether expansion (HNE). The end of the line is marked in
the matrix by the first ring variable (usually x).
L[2] ; intvec:
- indicating the length of lines of the HNE
L[3] ; int:
- 0 if the 1st ring variable was transversal (with respect to f),
1 if the variables were changed at the beginning of the
computation,
-1 if an error has occurred.
L[4] ; poly:
- the transformed polynomial of f to make it possible to extend the
Hamburger-Noether development a posteriori without having to do
all the previous calculation once again (0 if not needed)
L[5] ; int:
- 1 if the curve has exactly one branch (i.e., is irreducible),
0 else (i.e., the curve has more than one HNE, or f is not valid).
- Display:
- The (non zero) elements of the HNE (if not called by another proc).
- Note:
- The optional parameter
n affects only the computation of
the LAST line of the HNE. If it is given, the HN-matrix L[1]
will have at least n columns.
Otherwise, the number of columns will be chosen minimal such that the
matrix contains all necessary information (i.e., all lines of the HNE
but the last (which is in general infinite) have place).
If n is negative, the algorithm is stopped as soon as the
computed information is sufficient for invariants(L) , but the
HN-matrix L[1] may still contain undetermined elements, which
are marked with the 2nd variable (of the basering).
For time critical computations it is recommended to use
ring ...,(x,y),ls as basering - it increases the algorithm's
speed.
If printlevel>=0 comments are displayed (default is
printlevel=0 ).
Example:
| LIB "hnoether.lib";
ring exring = 7,(x,y),ds;
list Hne=develop(4x98+2x49y7+x11y14+2y14);
print(Hne[1]);
==> 0,0, 0,0,0,0,3,x,
==> 0,x, 0,0,0,0,0,0,
==> 0,0, 0,x,0,0,0,0,
==> 0,x, 0,0,0,0,0,0,
==> 0,-1,0,0,0,0,0,0
// therefore the HNE is:
// z(-1)= 3*z(0)^7 + z(0)^7*z(1),
// z(0) = z(1)*z(2), (there is 1 zero in the 2nd row before x)
// z(1) = z(2)^3*z(3), (there are 3 zeroes in the 3rd row)
// z(2) = z(3)*z(4),
// z(3) = -z(4)^2 + 0*z(4)^3 +...+ 0*z(4)^8 + ?*z(4)^9 + ...
// (the missing x in the last line indicates that it is not complete.)
Hne[2];
==> 7,1,3,1,-1
param(Hne);
==> // ** Warning: result is exact up to order 20 in x and 104 in y !
==> _[1]=-x14
==> _[2]=-3x98-x109
// parametrization: x(t)= -t^14+O(t^21), y(t)= -3t^98+O(t^105)
// (the term -t^109 in y may have a wrong coefficient)
displayHNE(Hne);
==> y = 3*x^7+z(1)*x^7
==> x = z(1)*z(2)
==> z(1) = z(2)^3*z(3)
==> z(2) = z(3)*z(4)
==> z(3) = -z(4)^2 + ..... (terms of degree >=9)
| See also:
displayHNE;
extdevelop;
hnexpansion.
|