Elliptic curves¶
Conductor¶
How do you compute the conductor of an elliptic curve (over
Once you define an elliptic curve EllipticCurve
command, the conductor is one of several “methods”
associated to
sage: E = EllipticCurve([1,2,3,4,5])
sage: E
Elliptic Curve defined by y^2 + x*y + 3*y = x^3 + 2*x^2 + 4*x + 5 over
Rational Field
sage: E.conductor()
10351
>>> from sage.all import *
>>> E = EllipticCurve([Integer(1),Integer(2),Integer(3),Integer(4),Integer(5)])
>>> E
Elliptic Curve defined by y^2 + x*y + 3*y = x^3 + 2*x^2 + 4*x + 5 over
Rational Field
>>> E.conductor()
10351
E = EllipticCurve([1,2,3,4,5]) E E.conductor()
-invariant¶
How do you compute the
Other methods associated to the EllipticCurve
class are
j_invariant
, discriminant
, and weierstrass_model
. Here is
an example of their syntax.
sage: E = EllipticCurve([0, -1, 1, -10, -20])
sage: E
Elliptic Curve defined by y^2 + y = x^3 - x^2 - 10*x - 20 over Rational Field
sage: E.j_invariant()
-122023936/161051
sage: E.short_weierstrass_model()
Elliptic Curve defined by y^2 = x^3 - 13392*x - 1080432 over Rational Field
sage: E.discriminant()
-161051
sage: E = EllipticCurve(GF(5),[0, -1, 1, -10, -20])
sage: E.short_weierstrass_model()
Elliptic Curve defined by y^2 = x^3 + 3*x + 3 over Finite Field of size 5
sage: E.j_invariant()
4
>>> from sage.all import *
>>> E = EllipticCurve([Integer(0), -Integer(1), Integer(1), -Integer(10), -Integer(20)])
>>> E
Elliptic Curve defined by y^2 + y = x^3 - x^2 - 10*x - 20 over Rational Field
>>> E.j_invariant()
-122023936/161051
>>> E.short_weierstrass_model()
Elliptic Curve defined by y^2 = x^3 - 13392*x - 1080432 over Rational Field
>>> E.discriminant()
-161051
>>> E = EllipticCurve(GF(Integer(5)),[Integer(0), -Integer(1), Integer(1), -Integer(10), -Integer(20)])
>>> E.short_weierstrass_model()
Elliptic Curve defined by y^2 = x^3 + 3*x + 3 over Finite Field of size 5
>>> E.j_invariant()
4
E = EllipticCurve([0, -1, 1, -10, -20]) E E.j_invariant() E.short_weierstrass_model() E.discriminant() E = EllipticCurve(GF(5),[0, -1, 1, -10, -20]) E.short_weierstrass_model() E.j_invariant()
The -rational points on E¶
How do you compute the number of points of an elliptic curve over a finite field?
Given an elliptic curve defined over
sage: E = EllipticCurve(GF(5),[0, -1, 1, -10, -20])
sage: E
Elliptic Curve defined by y^2 + y = x^3 + 4*x^2 over Finite Field of size 5
sage: E.points()
[(0 : 1 : 0), (0 : 0 : 1), (0 : 4 : 1), (1 : 0 : 1), (1 : 4 : 1)]
sage: E.cardinality()
5
sage: G = E.abelian_group()
sage: G
Additive abelian group isomorphic to Z/5 embedded in Abelian group of points on Elliptic Curve defined by y^2 + y = x^3 + 4*x^2 over Finite Field of size 5
sage: G.permutation_group()
Permutation Group with generators [(1,2,3,4,5)]
>>> from sage.all import *
>>> E = EllipticCurve(GF(Integer(5)),[Integer(0), -Integer(1), Integer(1), -Integer(10), -Integer(20)])
>>> E
Elliptic Curve defined by y^2 + y = x^3 + 4*x^2 over Finite Field of size 5
>>> E.points()
[(0 : 1 : 0), (0 : 0 : 1), (0 : 4 : 1), (1 : 0 : 1), (1 : 4 : 1)]
>>> E.cardinality()
5
>>> G = E.abelian_group()
>>> G
Additive abelian group isomorphic to Z/5 embedded in Abelian group of points on Elliptic Curve defined by y^2 + y = x^3 + 4*x^2 over Finite Field of size 5
>>> G.permutation_group()
Permutation Group with generators [(1,2,3,4,5)]
E = EllipticCurve(GF(5),[0, -1, 1, -10, -20]) E E.points() E.cardinality() G = E.abelian_group() G G.permutation_group()
Modular form associated to an elliptic curve over ¶
Let
sage: E = EllipticCurve([0, -1, 1, -10, -20])
sage: E
Elliptic Curve defined by y^2 + y = x^3 - x^2 - 10*x - 20 over Rational Field
sage: E.conductor()
11
sage: E.anlist(20)
[0, 1, -2, -1, 2, 1, 2, -2, 0, -2, -2, 1, -2, 4, 4, -1, -4, -2, 4, 0, 2]
sage: E.analytic_rank()
0
>>> from sage.all import *
>>> E = EllipticCurve([Integer(0), -Integer(1), Integer(1), -Integer(10), -Integer(20)])
>>> E
Elliptic Curve defined by y^2 + y = x^3 - x^2 - 10*x - 20 over Rational Field
>>> E.conductor()
11
>>> E.anlist(Integer(20))
[0, 1, -2, -1, 2, 1, 2, -2, 0, -2, -2, 1, -2, 4, 4, -1, -4, -2, 4, 0, 2]
>>> E.analytic_rank()
0
E = EllipticCurve([0, -1, 1, -10, -20]) E E.conductor() E.anlist(20) E.analytic_rank()