Newton Polygons#

The Newton polygon of a differential operator \(L\) and its Newton polynomials can be used to factorize \(L\). A classical example of the Newton polygon uses the derivation \(z\cdot d/dz\), where \(z\) is a generator of the basefield of \(L\). This Newton polygon is known as the Newton polygon of \(L\). Its definition, as used in Magma, is given in \(\S 3\) of [van Hoeij, 1997] and is applicable to operators over a Laurent series ring with generator \(z\), as well as to operators over fields for which a set of places exist. For fields in the latter category it is however not necessary to restrict to the derivation \(z\cdot d/dz\) based at \(z=0\) (in other words: at the place \((z)\)). More generally, the Newton polygon of \(L\) at the place \((p)\) is the Newton polygon at \(t=0\) after rewriting \(L\) as a differential operator \(\tilde{L}\) in a local parameter \(t\) of \((p)\), such that derivation of \(\tilde{L}\) is of the form \(t\cdot d/dt\).

NewtonPolygon(L): RngDiffOpElt -> NwtnPgon, RingDiffOpElt#

Returns the Newton Polygon of the differential operator \(L\) over a differential Laurent series ring. This means that for the computation of the Newton polygon \(L\) may have had to be rewritten as a differential operator \(\tilde{L}\) over a differential Laurent series ring \(C((t))\), say, such that \(\tilde{L}\) has derivation \(t\cdot d/dt\). The second argument returned is the operator \(\tilde{L}\).

NewtonPolygon(L, p): RngDiffOpElt, PlcFunElt -> NwtnPgon, RingDiffOpElt#

Returns the Newton polygon of the differential operator \(L\) at the place \(p\). The derivation of \(L\) must be defined with respect to a differential and the base ring of \(L\) should have one generator. For the computation of the Newton polygon another differential operator \(\tilde{L}\), say, may have had to be calculated. The differential of the derivation of \(\tilde{L}\) has valuation \(-1\) at the place \(p\). The differential operator \(\tilde{L}\) is also returned.

NewtonPolynomial(F): NwtnPgonFace -> RngUPolElt#

Returns the Newton polynomial of the face \(F\) of a Newton polygon. The Newton polygon must have been created with respect to a differential operator. The Newton polynomial depends on a uniformizing element, therefore, its variable is well–defined up to scalar multiplication by a non–zero element. The definition of the Newton polynomial of a face that is used by Magma, is given in Section \(3\) of [van Hoeij, 1997].

NewtonPolynomials(L): RngDiffOpElt -> SeqEnum, SeqEnum#

Returns all Newton polynomials of \(L\) with respect to the faces of its Newton polygon. The second argument returned is the corresponding slopes.

Example Newton Pgns 1 (ex-893538)#
> K := RationalDifferentialField(Rationals());
> F<z> := ChangeDerivation(K, K.1);
> Differential(F);
(1/z) d(z)
> R<D> := DifferentialOperatorRing(F);
> L := 10*z*D^2+3*D-1;
> npgon, op := NewtonPolygon(L, Zeros(z)[1]);
> npgon;
Newton Polygon of 10*z*$.1^2 + 3*$.1 - 1 over Algebraic function field
defined over Rational Field by
$.2 - 4711 at (z)
> op;
10*z*D^2 + 3*D + -1
> faces:= Faces(npgon);
> faces;
[ <0, 1, 0>, <-1, 1, -1> ]
> _<T> := PolynomialRing(Rationals());
> NewtonPolynomial(faces[1]);
3*T - 1
> NewtonPolynomial(faces[2]);
10*T + 3

Run in calculator

Example Newton Pgns 2 (ex-692056)#
> F<z> := RationalDifferentialField(Rationals());
> R<D> := DifferentialOperatorRing(F);
> L := D^2+z*D-3*z^2;
> npgon, op := NewtonPolygon(L, Zeros(1/z)[1]);
> op;
1/z^2*$.1^2 + (-z^2 + 1)/z^2*$.1 + -3*z^2
> Differential(Parent(op));
(-1/z) d(z)
> Valuation($1,Zeros(1/z)[1]);
-1
> faces:= Faces(npgon);
> faces;
[ <-2, 1, -2> ]
> _<T> := PolynomialRing(Rationals());
> NewtonPolynomial(faces[1]);
T^2 - T - 3

Run in calculator

Example Newton Pgns 3 (ex-312e21)#

This example corresponds to Examples \(3.46\) and \(3.49.2\) from [van der Put and Singer, 2003].

> S<t> := DifferentialLaurentSeriesRing(Rationals());
> R<D> := DifferentialOperatorRing(S);
> L := t*D^2+D-1;
> npgon, op := NewtonPolygon(L);
> L eq op;
true
> Faces(npgon);
[ <0, 1, 0>, <-1, 1, -1> ]
> _<T> := PolynomialRing(Rationals());
> NewtonPolynomials(L);
[
    T - 1,
    T + 1
]
[ 0, 1 ]
> L := D^2+(1/t^2+1/t)*D+(1/t^3-2/t^2);
> npgon, op := NewtonPolygon(L);
> L eq op;
true
> NewtonPolynomials(L);
[
    T + 1,
    T + 1
]
[ 1, 2 ]

Run in calculator