Hyperelliptic curves over the rationals#

class sage.schemes.hyperelliptic_curves.hyperelliptic_rational_field.HyperellipticCurve_rational_field(PP, f, h=None, names=None, genus=None)[source]#

Bases: HyperellipticCurve_generic, ProjectivePlaneCurve_field

lseries(prec=53)[source]#

Return the L-series of this hyperelliptic curve of genus 2.

EXAMPLES:

sage: x = polygen(QQ, 'x')
sage: C = HyperellipticCurve(x^2+x, x^3+x^2+1)
sage: C.lseries()
PARI L-function associated to Hyperelliptic Curve
over Rational Field defined by y^2 + (x^3 + x^2 + 1)*y = x^2 + x
x = polygen(QQ, 'x')
C = HyperellipticCurve(x^2+x, x^3+x^2+1)
C.lseries()
>>> from sage.all import *
>>> x = polygen(QQ, 'x')
>>> C = HyperellipticCurve(x**Integer(2)+x, x**Integer(3)+x**Integer(2)+Integer(1))
>>> C.lseries()
PARI L-function associated to Hyperelliptic Curve
over Rational Field defined by y^2 + (x^3 + x^2 + 1)*y = x^2 + x
matrix_of_frobenius(p, prec=20)[source]#

Compute the matrix of Frobenius on Monsky-Washnitzer cohomology using the \(p\)-adic field with precision prec.

This function is essentially a wrapper function of sage.schemes.hyperelliptic_curves.monsky_washnitzer.matrix_of_frobenius_hyperelliptic().

INPUT:

  • p (prime integer or pAdic ring / field) – if p is an integer, constructs a pAdicField with p to compute the matrix of Frobenius, otherwise uses the supplied pAdic ring or field.

  • prec (optional) – if p is an prime integer, the \(p\)-adic precision of the coefficient ring constructed.

EXAMPLES:

sage: K = pAdicField(5, prec=3)
sage: R.<x> = QQ['x']
sage: H = HyperellipticCurve(x^5 - 2*x + 3)
sage: H.matrix_of_frobenius(K)
[            4*5 + O(5^3)       5 + 2*5^2 + O(5^3) 2 + 3*5 + 2*5^2 + O(5^3)     2 + 5 + 5^2 + O(5^3)]
[      3*5 + 5^2 + O(5^3)             3*5 + O(5^3)             4*5 + O(5^3)         2 + 5^2 + O(5^3)]
[    4*5 + 4*5^2 + O(5^3)     3*5 + 2*5^2 + O(5^3)       5 + 3*5^2 + O(5^3)     2*5 + 2*5^2 + O(5^3)]
[            5^2 + O(5^3)       5 + 4*5^2 + O(5^3)     4*5 + 3*5^2 + O(5^3)             2*5 + O(5^3)]
K = pAdicField(5, prec=3)
R.<x> = QQ['x']
H = HyperellipticCurve(x^5 - 2*x + 3)
H.matrix_of_frobenius(K)
>>> from sage.all import *
>>> K = pAdicField(Integer(5), prec=Integer(3))
>>> R = QQ['x']; (x,) = R._first_ngens(1)
>>> H = HyperellipticCurve(x**Integer(5) - Integer(2)*x + Integer(3))
>>> H.matrix_of_frobenius(K)
[            4*5 + O(5^3)       5 + 2*5^2 + O(5^3) 2 + 3*5 + 2*5^2 + O(5^3)     2 + 5 + 5^2 + O(5^3)]
[      3*5 + 5^2 + O(5^3)             3*5 + O(5^3)             4*5 + O(5^3)         2 + 5^2 + O(5^3)]
[    4*5 + 4*5^2 + O(5^3)     3*5 + 2*5^2 + O(5^3)       5 + 3*5^2 + O(5^3)     2*5 + 2*5^2 + O(5^3)]
[            5^2 + O(5^3)       5 + 4*5^2 + O(5^3)     4*5 + 3*5^2 + O(5^3)             2*5 + O(5^3)]

You can also pass directly a prime \(p\) with to construct a pAdic field with precision prec:

sage: H.matrix_of_frobenius(3, prec=2)
[        O(3^2)     3 + O(3^2)         O(3^2)         O(3^2)]
[    3 + O(3^2)         O(3^2)         O(3^2) 2 + 3 + O(3^2)]
[  2*3 + O(3^2)         O(3^2)         O(3^2)    3^-1 + O(3)]
[        O(3^2)         O(3^2)     3 + O(3^2)         O(3^2)]
H.matrix_of_frobenius(3, prec=2)
>>> from sage.all import *
>>> H.matrix_of_frobenius(Integer(3), prec=Integer(2))
[        O(3^2)     3 + O(3^2)         O(3^2)         O(3^2)]
[    3 + O(3^2)         O(3^2)         O(3^2) 2 + 3 + O(3^2)]
[  2*3 + O(3^2)         O(3^2)         O(3^2)    3^-1 + O(3)]
[        O(3^2)         O(3^2)     3 + O(3^2)         O(3^2)]