37.4 Elliptic curve constructor

Module: sage.schemes.elliptic_curves.constructor

Elliptic curve constructor

Author Log:

Module-level Functions

EllipticCurve( x, [y=None])

There are several ways to construct an elliptic curve:

$\displaystyle y^2 + a_1 xy + a_3 y = x^3 + a_2 x^2 + a_4 x + a_6.
$

- EllipticCurve([a1,a2,a3,a4,a6]): Elliptic curve with given a-invariants. The invariants are coerced into the parent of the first element. If all are integers, they are coerced into the rational numbers.

- EllipticCurve([a4,a6]): Same as above, but a1=a2=a3=0.

- EllipticCurve(label): Returns the elliptic curve over Q from the Cremona database with the given label. The label is a string, such as "11a" or "37b2". The letters in the label must be lower case (Cremona's new labeling).

- EllipticCurve(R, [a1,a2,a3,a4,a6]): Create the elliptic curve over R with given a-invariants. Here R can be an arbitrary ring. Note that addition need not be defined.

- EllipticCurve(j): Return an elliptic curve with j-invariant $ j$ .

We illustrate creating elliptic curves.

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

We create a curve from a Cremona label:

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

We create curves over a finite field as follows:

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(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 following is a curve over the complex numbers:

sage: E = EllipticCurve(CC, [0,0,1,-1,0])
sage: E
Elliptic Curve defined by y^2 + 1.00000000000000*y = x^3 +
(-1.00000000000000)*x over Complex Field with 53 bits of precision
sage: E.j_invariant()
2988.97297297297

TESTS:

sage: R = ZZ['u', 'v']
sage: EllipticCurve(R, [1,1])
Elliptic Curve defined by y^2  = x^3 + x +1 over Multivariate Polynomial
Ring in u, v
over Integer Ring

We create a curve and a point over QQbar:

sage: E = EllipticCurve(QQbar,[0,1])
sage: E(0)
(0 : 1 : 0)

EllipticCurve_from_c4c6( c4, c6)

Return an elliptic curve with given $ c_4$ and $ c_6$ invariants.

sage: E = EllipticCurve_from_c4c6(17, -2005)
sage: E
Elliptic Curve defined by y^2  = x^3 - 17/48*x + 2005/864 over Rational
Field
sage: E.c_invariants()
(17, -2005)

EllipticCurve_from_cubic( F, P)

Given a nonsingular homogenous cubic polynomial F over $ \mathbf{Q}$ in three variables x, y, z and a projective solution P=[a,b,c] to F(P)=0, find the minimal Weierstrass equation of the elliptic curve over $ \mathbf{Q}$ that is isomorphic to the curve defined by $ F=0$ .

Note: USES MAGMA - This function will not work on computers that do not have magma installed. (HELP WANTED - somebody implement this independent of MAGMA.)

First we find that the Fermat cubic is isomorphic to the curve with Cremona label 27a1:

sage: E = EllipticCurve_from_cubic('x^3 + y^3 + z^3', [1,-1,0])  # optional -- requires magma
sage: E         # optional
Elliptic Curve defined by y^2 + y = x^3 - 7 over Rational Field
sage: E.cremona_label()     # optional
'27a1'

Next we find the minimal model and conductor of the Jacobian of the Selmer curve.

sage: E = EllipticCurve_from_cubic('x^3 + y^3 + 60*z^3', [1,-1,0])   # optional
sage: E            # optional
Elliptic Curve defined by y^2  = x^3 - 24300 over Rational Field
sage: E.conductor()    # optional
24300

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