Jacobians of curves¶
This module defines the base class of Jacobians as an abstract scheme.
AUTHORS:
- William Stein (2005) 
- sage.schemes.jacobians.abstract_jacobian.Jacobian(C)[source]¶
- EXAMPLES: - sage: from sage.schemes.jacobians.abstract_jacobian import Jacobian sage: P2.<x, y, z> = ProjectiveSpace(QQ, 2) sage: C = Curve(x^3 + y^3 + z^3) sage: Jacobian(C) Jacobian of Projective Plane Curve over Rational Field defined by x^3 + y^3 + z^3 - >>> from sage.all import * >>> from sage.schemes.jacobians.abstract_jacobian import Jacobian >>> P2 = ProjectiveSpace(QQ, Integer(2), names=('x', 'y', 'z',)); (x, y, z,) = P2._first_ngens(3) >>> C = Curve(x**Integer(3) + y**Integer(3) + z**Integer(3)) >>> Jacobian(C) Jacobian of Projective Plane Curve over Rational Field defined by x^3 + y^3 + z^3 
- class sage.schemes.jacobians.abstract_jacobian.Jacobian_generic(C, category=None)[source]¶
- Bases: - Scheme- Base class for Jacobians of projective curves. - The input must be a projective curve over a field. - EXAMPLES: - sage: from sage.schemes.jacobians.abstract_jacobian import Jacobian sage: P2.<x, y, z> = ProjectiveSpace(QQ, 2) sage: C = Curve(x^3 + y^3 + z^3) sage: J = Jacobian(C); J Jacobian of Projective Plane Curve over Rational Field defined by x^3 + y^3 + z^3 - >>> from sage.all import * >>> from sage.schemes.jacobians.abstract_jacobian import Jacobian >>> P2 = ProjectiveSpace(QQ, Integer(2), names=('x', 'y', 'z',)); (x, y, z,) = P2._first_ngens(3) >>> C = Curve(x**Integer(3) + y**Integer(3) + z**Integer(3)) >>> J = Jacobian(C); J Jacobian of Projective Plane Curve over Rational Field defined by x^3 + y^3 + z^3 - base_curve()[source]¶
- Return the curve of which - selfis the Jacobian.- EXAMPLES: - sage: from sage.schemes.jacobians.abstract_jacobian import Jacobian sage: P2.<x, y, z> = ProjectiveSpace(QQ, 2) sage: J = Jacobian(Curve(x^3 + y^3 + z^3)) sage: J.curve() Projective Plane Curve over Rational Field defined by x^3 + y^3 + z^3 - >>> from sage.all import * >>> from sage.schemes.jacobians.abstract_jacobian import Jacobian >>> P2 = ProjectiveSpace(QQ, Integer(2), names=('x', 'y', 'z',)); (x, y, z,) = P2._first_ngens(3) >>> J = Jacobian(Curve(x**Integer(3) + y**Integer(3) + z**Integer(3))) >>> J.curve() Projective Plane Curve over Rational Field defined by x^3 + y^3 + z^3 
 - base_extend(R)[source]¶
- Return the natural extension of - selfover \(R\).- INPUT: - R– a field; the new base field
 - OUTPUT: the Jacobian over the ring \(R\) - EXAMPLES: - sage: R.<x> = QQ['x'] sage: H = HyperellipticCurve(x^3 - 10*x + 9) sage: Jac = H.jacobian(); Jac Jacobian of Hyperelliptic Curve over Rational Field defined by y^2 = x^3 - 10*x + 9 sage: # needs sage.rings.number_field sage: F.<a> = QQ.extension(x^2 + 1) sage: Jac.base_extend(F) Jacobian of Hyperelliptic Curve over Number Field in a with defining polynomial x^2 + 1 defined by y^2 = x^3 - 10*x + 9 - >>> from sage.all import * >>> R = QQ['x']; (x,) = R._first_ngens(1) >>> H = HyperellipticCurve(x**Integer(3) - Integer(10)*x + Integer(9)) >>> Jac = H.jacobian(); Jac Jacobian of Hyperelliptic Curve over Rational Field defined by y^2 = x^3 - 10*x + 9 >>> # needs sage.rings.number_field >>> F = QQ.extension(x**Integer(2) + Integer(1), names=('a',)); (a,) = F._first_ngens(1) >>> Jac.base_extend(F) Jacobian of Hyperelliptic Curve over Number Field in a with defining polynomial x^2 + 1 defined by y^2 = x^3 - 10*x + 9 
 - change_ring(R)[source]¶
- Return the Jacobian over the ring \(R\). - INPUT: - R– a field; the new base ring
 - OUTPUT: the Jacobian over the ring \(R\) - EXAMPLES: - sage: R.<x> = QQ['x'] sage: H = HyperellipticCurve(x^3 - 10*x + 9) sage: Jac = H.jacobian(); Jac Jacobian of Hyperelliptic Curve over Rational Field defined by y^2 = x^3 - 10*x + 9 sage: Jac.change_ring(RDF) Jacobian of Hyperelliptic Curve over Real Double Field defined by y^2 = x^3 - 10.0*x + 9.0 - >>> from sage.all import * >>> R = QQ['x']; (x,) = R._first_ngens(1) >>> H = HyperellipticCurve(x**Integer(3) - Integer(10)*x + Integer(9)) >>> Jac = H.jacobian(); Jac Jacobian of Hyperelliptic Curve over Rational Field defined by y^2 = x^3 - 10*x + 9 >>> Jac.change_ring(RDF) Jacobian of Hyperelliptic Curve over Real Double Field defined by y^2 = x^3 - 10.0*x + 9.0 
 - curve()[source]¶
- Return the curve of which - selfis the Jacobian.- EXAMPLES: - sage: from sage.schemes.jacobians.abstract_jacobian import Jacobian sage: P2.<x, y, z> = ProjectiveSpace(QQ, 2) sage: J = Jacobian(Curve(x^3 + y^3 + z^3)) sage: J.curve() Projective Plane Curve over Rational Field defined by x^3 + y^3 + z^3 - >>> from sage.all import * >>> from sage.schemes.jacobians.abstract_jacobian import Jacobian >>> P2 = ProjectiveSpace(QQ, Integer(2), names=('x', 'y', 'z',)); (x, y, z,) = P2._first_ngens(3) >>> J = Jacobian(Curve(x**Integer(3) + y**Integer(3) + z**Integer(3))) >>> J.curve() Projective Plane Curve over Rational Field defined by x^3 + y^3 + z^3 
 
- sage.schemes.jacobians.abstract_jacobian.is_Jacobian(J)[source]¶
- Return - Trueif \(J\) is of type- Jacobian_generic.- EXAMPLES: - sage: from sage.schemes.jacobians.abstract_jacobian import Jacobian, is_Jacobian sage: P2.<x, y, z> = ProjectiveSpace(QQ, 2) sage: C = Curve(x^3 + y^3 + z^3) sage: J = Jacobian(C) sage: is_Jacobian(J) ... DeprecationWarning: Use Jacobian_generic directly See https://github.com/sagemath/sage/issues/35467 for details. True - >>> from sage.all import * >>> from sage.schemes.jacobians.abstract_jacobian import Jacobian, is_Jacobian >>> P2 = ProjectiveSpace(QQ, Integer(2), names=('x', 'y', 'z',)); (x, y, z,) = P2._first_ngens(3) >>> C = Curve(x**Integer(3) + y**Integer(3) + z**Integer(3)) >>> J = Jacobian(C) >>> is_Jacobian(J) ... DeprecationWarning: Use Jacobian_generic directly See https://github.com/sagemath/sage/issues/35467 for details. True - sage: E = EllipticCurve('37a1') sage: is_Jacobian(E) False - >>> from sage.all import * >>> E = EllipticCurve('37a1') >>> is_Jacobian(E) False