Elliptic curve functionality includes most of the elliptic curve
functionality of PARI, access to the data in Cremona's online tables
(requires optional database package), the functionality of mwrank,
i.e.,
-descents with computation of the full Mordell-Weil group,
the SEA algorithm, computation of all isogenies, much new code
for curves over
, 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(5)
Elliptic Curve defined by y^2 = x^3 + 25845*x - 29687290 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
-invariant. Sage computes
-invariants 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
by
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
-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.