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:
where the
"11a"
or "37b2"
. The letter
must be lower case (to distinguish it from the old labeling).
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
is a point on the elliptic curve
defined by
. 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
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
of the
L-series or modular form
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
for
:
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
.
There is also a large optional version, which contains extensive data
about all curves of conductor up to
(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.