2.11.2 Elliptic Curves

Elliptic curve functionality includes most of the elliptic curve functionality of PARI, access to the data in Cremona's online tables (this requires an optional database package), the functionality of mwrank, i.e., 2-descents with computation of the full Mordell-Weil group, the SEA algorithm, computation of all isogenies, much new code for curves over Q, and some of Denis Simon's algebraic descent software.

The command EllipticCurve for creating an elliptic curve has many forms:

We illustrate each of these constructors:

sage: EllipticCurve([0,0,1,-1,0])
Elliptic Curve defined by y^2 + y = x^3 - x over Rational Field

sage: EllipticCurve([GF(5)(0),0,1,-1,0])
Elliptic Curve defined by y^2 + y = x^3 + 4*x over Finite Field of size 5

sage: EllipticCurve([1,2])
Elliptic Curve defined by y^2  = x^3 + x + 2 over Rational Field

sage: EllipticCurve('37a')
Elliptic Curve defined by y^2 + y = x^3 - x over Rational Field

sage: EllipticCurve(1)
Elliptic Curve defined by y^2  = x^3 + 5181*x - 5965058 over Rational Field

sage: EllipticCurve(GF(5), [0,0,1,-1,0])
Elliptic Curve defined by y^2 + y = x^3 + 4*x over Finite Field of size 5

The pair $ (0,0)$ is a point on the elliptic curve $ E$ defined by $ y^2 +
y = x^3 - x$ . To create this point in Sage type E([0,0]). Sage can add points on such an elliptic curve (recall elliptic curves support an additive group structure where the point at infinity is the zero element and three co-linear points on the curve add to zero):

sage: E = EllipticCurve([0,0,1,-1,0])
sage: E
Elliptic Curve defined by y^2 + y = x^3 - x over Rational Field
sage: P = E([0,0])
sage: P + P
(1 : 0 : 1)
sage: 10*P
(161/16 : -2065/64 : 1)
sage: 20*P
(683916417/264517696 : -18784454671297/4302115807744 : 1)
sage: E.conductor()
37

The elliptic curves over the complex numbers are parameterized by the j-invariant. Sage computes j-invariant as follows:

sage: E = EllipticCurve([0,0,1,-1,0]); E
Elliptic Curve defined by y^2 + y = x^3 - x over Rational Field
sage: E.j_invariant()
110592/37
If we make a curve with the same j-invariant as that of E, it need not be isomorphic to E. In the following example, the curves are not isomorphic because their conductors are different.
sage: F = EllipticCurve(110592/37)
sage: factor(F.conductor())
 2^6 * 3^2 * 37^2

However, the twist of F by 2 gives an isomorphic curve.

sage: G = F.quadratic_twist(-6*37); G
Elliptic Curve defined by y^2 + y = x^3 - x over Rational Field
sage: G.conductor()
37
sage: G.j_invariant()
110592/37

We can compute the coefficients $ a_n$ of the L-series or modular form $ \sum_{n=0}^\infty
a_nq^n$ attached to the elliptic curve. This computation uses the PARI C-library:

sage: E = EllipticCurve([0,0,1,-1,0])
sage: print E.anlist(30)  
[0, 1, -2, -3, 2, -2, 6, -1, 0, 6, 4, -5, -6, -2, 2, 6, -4, 0, -12, 0, -4, 
 3, 10, 2, 0, -1, 4, -9, -2, 6, -12]
sage: v = E.anlist(10000)

It only takes a second to compute all $ a_n$ for $ n\leq 10^5$ :

sage: time v = E.anlist(100000)
CPU times: user 0.98 s, sys: 0.06 s, total: 1.04 s
Wall time: 1.06

Elliptic curves can be constructed using their Cremona labels. This pre-loads the elliptic curve with information about its rank, Tamagawa numbers, regulator, etc.

sage: E = EllipticCurve("37b2")
sage: E
Elliptic Curve defined by y^2 + y = x^3 + x^2 - 1873*x - 31833 over Rational 
Field
sage: E = EllipticCurve("389a")
sage: E
Elliptic Curve defined by y^2 + y = x^3 + x^2 - 2*x  over Rational Field
sage: E.rank()
2
sage: E = EllipticCurve("5077a")
sage: E.rank()
3

We can also access the Cremona database directly.

sage: db = sage.databases.cremona.CremonaDatabase()
sage: db.curves(37)
{'a1': [[0, 0, 1, -1, 0], 1, 1], 'b1': [[0, 1, 1, -23, -50], 0, 3]}
sage: db.allcurves(37)
{'a1': [[0, 0, 1, -1, 0], 1, 1],
 'b1': [[0, 1, 1, -23, -50], 0, 3],
 'b2': [[0, 1, 1, -1873, -31833], 0, 1],
 'b3': [[0, 1, 1, -3, 1], 0, 3]}

The objects returned from the database are not of type EllipticCurve. They are elements of a database and have a couple of fields, and that's it. There is a small version of Cremona's database, which is distributed by default with Sage, and contains limited information about elliptic curves of conductor $ \leq 10000$ . There is also a large optional version, which contains extensive data about all curves of conductor up to $ 120000$ (as of October 2005). There is also a huge (2GB) optional database package for Sage that contains the hundreds of millions of elliptic curves in the Stein-Watkins database.

See About this document... for information on suggesting changes.