Module: sage.schemes.elliptic_curves.ell_generic
Module-level Functions
x) |
sage: E = EllipticCurve([1,2,3/4,7,19]) sage: is_EllipticCurve(E) True sage: is_EllipticCurve(0) False
Class: EllipticCurve_generic
sage: E = EllipticCurve([1,2,3/4,7,19]); E Elliptic Curve defined by y^2 + x*y + 3/4*y = x^3 + 2*x^2 + 7*x + 19 over Rational Field sage: loads(E.dumps()) == E True sage: E = EllipticCurve([1,3]) sage: P = E([-1,1,1]) sage: -5*P (179051/80089 : -91814227/22665187 : 1)
self, ainvs, [extra=None]) |
Functions: a1,
a2,
a3,
a4,
a6,
a_invariants,
ainvs,
b_invariants,
base_extend,
base_field,
base_ring,
c4,
c6,
c_invariants,
change_ring,
discriminant,
division_polynomial,
formal_group,
formal_inverse,
formal_log,
formal_mult,
formal_n_isogeny,
formal_sigma,
formal_w,
formal_x,
formal_y,
gens,
is_on_curve,
j_invariant,
quadratic_twist,
torsion_polynomial,
weierstrass_model
self) |
sage: E = EllipticCurve([1,2,3,4,6]) sage: E.a1() 1
self) |
sage: E = EllipticCurve([1,2,3,4,6]) sage: E.a2() 2
self) |
sage: E = EllipticCurve([1,2,3,4,6]) sage: E.a3() 3
self) |
sage: E = EllipticCurve([1,2,3,4,6]) sage: E.a4() 4
self) |
sage: E = EllipticCurve([1,2,3,4,6]) sage: E.a6() 6
self) |
The a-invariants of this elliptic curve.
sage: E = EllipticCurve([1,2,3,4,5]) sage: E.a_invariants() [1, 2, 3, 4, 5] sage: E = EllipticCurve([0,1]) sage: E Elliptic Curve defined by y^2 = x^3 +1 over Rational Field sage: E.a_invariants() [0, 0, 0, 0, 1] sage: E = EllipticCurve([GF(7)(3),5]) sage: E.a_invariants() [0, 0, 0, 3, 5]
self) |
The a-invariants of this elliptic curve.
sage: E = EllipticCurve([1,2,3,4,5]) sage: E.a_invariants() [1, 2, 3, 4, 5] sage: E = EllipticCurve([0,1]) sage: E Elliptic Curve defined by y^2 = x^3 +1 over Rational Field sage: E.a_invariants() [0, 0, 0, 0, 1] sage: E = EllipticCurve([GF(7)(3),5]) sage: E.a_invariants() [0, 0, 0, 3, 5]
self) |
The b-invariants of this elliptic curve.
sage: E = EllipticCurve([0, -1, 1, -10, -20]) sage: E.b_invariants() (-4, -20, -79, -21) sage: E = EllipticCurve([-4,0]) sage: E.b_invariants() (0, -8, 0, -16)
ALGORITHM: These are simple functions of the a invariants.
Author: William Stein, 2005-04-25
self) |
Returns the base ring of the elliptic curves.
sage: E = EllipticCurve(GF(49), [3,5]) sage: E.base_ring() Finite Field in a of size 7^2
sage: E = EllipticCurve([1,1]) sage: E.base_ring() Rational Field
self) |
Returns the base ring of the elliptic curves.
sage: E = EllipticCurve(GF(49), [3,5]) sage: E.base_ring() Finite Field in a of size 7^2
sage: E = EllipticCurve([1,1]) sage: E.base_ring() Rational Field
self) |
The c-invariants of this elliptic curve.
sage: E = EllipticCurve([0, -1, 1, -10, -20]) sage: E.c_invariants() (496, 20008) sage: E = EllipticCurve([-4,0]) sage: E.c_invariants() (192, 0)
ALGORITHM: These are simple functions of the b invariants.
Author: William Stein, 2005-04-25
self, R) |
Return the elliptic curve defined by coercing the a-invariants of this elliptic curve into the ring R.
INPUT: R -- ring OUTPUT: an elliptic curve
sage: E = EllipticCurve([0, 0, 1, -1, 0]) sage: E.change_ring(GF(3)) Elliptic Curve defined by y^2 + y = x^3 + 2*x over Finite Field of size 3
self) |
Returns the discriminant of this elliptic curve.
sage: E = EllipticCurve([0,0,1,-1,0]) sage: E.discriminant() 37 sage: E = EllipticCurve([0, -1, 1, -10, -20]) sage: E.discriminant() -161051
sage: E = EllipticCurve([GF(7)(2),1]) sage: E.discriminant() 1
self, n, [i=0]) |
Returns the n-th torsion polynomial (a.k.a., division polynomial).
INPUT: n -- non-negative integer i -- integer, either 0 (default) or 1. OUTPUT: Polynomial -- n-th torsion polynomial, which is a polynomial over the base field of the elliptic curve.
sage: E = EllipticCurve([0,0,1,-1,0]) sage: E.division_polynomial(1) 1 sage: E.division_polynomial(2) 4*x^3 - 4*x + 1 sage: E.division_polynomial(3) 3*x^4 - 6*x^2 + 3*x - 1
sage: E = EllipticCurve([0, -1, 1, -10, -20]) sage: E.torsion_polynomial(0) 0 sage: E.torsion_polynomial(1) 1 sage: E.torsion_polynomial(2) 4*x^3 - 4*x^2 - 40*x - 79 sage: E.torsion_polynomial(3) 3*x^4 - 4*x^3 - 60*x^2 - 237*x - 21 sage: E.torsion_polynomial(4) 8*x^9 - 24*x^8 - 464*x^7 - 2758*x^6 + 6636*x^5 + 34356*x^4 + 53510*x^3 + 99714*x^2 + 351024*x + 459859
sage: E = EllipticCurve([-4,0]) sage: E.torsion_polynomial(2) 4*x^3 - 16*x sage: E.torsion_polynomial(5) 5*x^12 - 248*x^10 - 1680*x^8 + 19200*x^6 - 32000*x^4 + 51200*x^2 + 4096 sage: E.torsion_polynomial(6) 12*x^19 - 1200*x^17 - 18688*x^15 + 422912*x^13 - 2283520*x^11 + 9134080*x^9 - 27066368*x^7 + 19136512*x^5 + 19660800*x^3 - 3145728*x
Author: David Kohel (kohel@maths.usyd.edu.au), 2005-04-25
self, [prec=20]) |
The formal group power series w.
INPUT: prec -- integer OUTPUT: a power series
DETAILS: Return the formal power series
to precision
We compute w using the recursive procedure (4.1) on page 18 of Bluher's ``A leisurely introduction to formal groups and elliptic curves'', which I downloaded from http://www.math.uiuc.edu/Algebraic-Number-Theory/0076/
sage: e = EllipticCurve([0, 0, 1, -1, 0]) sage: e.formal_w(10) t^3 + t^6 - t^7 + 2*t^9 + O(t^10)
self, [prec=20]) |
Return the formal power series x(t) in terms of the local parameter t = -x/y at infinity.
self, [prec=20]) |
Return the formal power series y(t) in terms of the local parameter t = -x/y at infinity.
self, x, y) |
Returns True if the (x,y) is an affine point on this curve.
self) |
Returns the j-invariant of this elliptic curve.
sage: E = EllipticCurve([0,0,1,-1,0]) sage: E.j_invariant() 110592/37 sage: E = EllipticCurve([0, -1, 1, -10, -20]) sage: E.j_invariant() -122023936/161051 sage: E = EllipticCurve([-4,0]) sage: E.j_invariant() 1728
sage: E = EllipticCurve([GF(7)(2),1]) sage: E.j_invariant() 1
self, D) |
Return the quadratic twist of this curve by D.
self, n, [i=0]) |
Returns the n-th torsion polynomial (a.k.a., division polynomial).
INPUT: n -- non-negative integer i -- integer, either 0 (default) or 1. OUTPUT: Polynomial -- n-th torsion polynomial, which is a polynomial over the base field of the elliptic curve.
sage: E = EllipticCurve([0,0,1,-1,0]) sage: E.division_polynomial(1) 1 sage: E.division_polynomial(2) 4*x^3 - 4*x + 1 sage: E.division_polynomial(3) 3*x^4 - 6*x^2 + 3*x - 1
sage: E = EllipticCurve([0, -1, 1, -10, -20]) sage: E.torsion_polynomial(0) 0 sage: E.torsion_polynomial(1) 1 sage: E.torsion_polynomial(2) 4*x^3 - 4*x^2 - 40*x - 79 sage: E.torsion_polynomial(3) 3*x^4 - 4*x^3 - 60*x^2 - 237*x - 21 sage: E.torsion_polynomial(4) 8*x^9 - 24*x^8 - 464*x^7 - 2758*x^6 + 6636*x^5 + 34356*x^4 + 53510*x^3 + 99714*x^2 + 351024*x + 459859
sage: E = EllipticCurve([-4,0]) sage: E.torsion_polynomial(2) 4*x^3 - 16*x sage: E.torsion_polynomial(5) 5*x^12 - 248*x^10 - 1680*x^8 + 19200*x^6 - 32000*x^4 + 51200*x^2 + 4096 sage: E.torsion_polynomial(6) 12*x^19 - 1200*x^17 - 18688*x^15 + 422912*x^13 - 2283520*x^11 + 9134080*x^9 - 27066368*x^7 + 19136512*x^5 + 19660800*x^3 - 3145728*x
Author: David Kohel (kohel@maths.usyd.edu.au), 2005-04-25
self) |
Return a model of the form
for this curve.
Special Functions: __call__,
__cmp__,
__contains__,
__getitem__,
_defining_params_,
_EllipticCurve_generic__is_over_RationalField,
_latex_,
_magma_init_,
_pari_init_,
_repr_
self) |
sage: E = EllipticCurve([0, 0, 1, -1, 0])
The point at infinity, which is the 0 element of the group:
sage: E(0) (0 : 1 : 0)
The origin is a point on our curve:
sage: P = E([0,0]) sage: P (0 : 0 : 1)
The curve associated to a point:
sage: P.curve() Elliptic Curve defined by y^2 + y = x^3 - x over Rational Field
Points can be specified by given a 2-tuple or 3-tuple
sage: E([0,0]) (0 : 0 : 1) sage: E([0,1,0]) (0 : 1 : 0)
Over a field, points are normalized so the right-most nonzero entry is 1:
sage: E(105, -69, 125) (21/25 : -69/125 : 1)
We create points on an elliptic curve over a prime finite field.
sage: E = EllipticCurve([GF(7)(0), 1]) sage: E([2,3]) (2 : 3 : 1) sage: E([0,0]) Traceback (most recent call last): ... TypeError: coordinates [0, 0, 1] do not define a point on Elliptic Curve defined by y^2 = x^3 +1 over Finite Field of size 7
We create a point on an elliptic curve over a number field.
sage: x = polygen(RationalField()) sage: K = NumberField(x**3 + x + 1, 'a'); a = K.gen() sage: E = EllipticCurve([a,a]) sage: E Elliptic Curve defined by y^2 = x^3 + a*x + a over Number Field in a with defining polynomial x^3 + x + 1 sage: E = EllipticCurve([K(1),1]) sage: E Elliptic Curve defined by y^2 = x^3 + x +1 over Number Field in a with defining polynomial x^3 + x + 1 sage: P = E([a,0,1]) sage: P (a : 0 : 1) sage: P+P (0 : 1 : 0)
self, P) |
Returns True if and only if P defines is a point on the elliptic curve. P just has to be something that can be coerced to a point.
sage: E = EllipticCurve([0, 0, 1, -1, 0]) sage: (0,0) in E True sage: (1,3) in E False sage: E = EllipticCurve([GF(7)(0), 1]) sage: [0,0] in E False sage: [0,8] in E True sage: P = E(0,8) sage: P (0 : 1 : 1) sage: P in E True
self, n) |
self) |
String representation of elliptic curve.
sage: EllipticCurve([1,2,3,4,5]) Elliptic Curve defined by y^2 + x*y + 3*y = x^3 + 2*x^2 + 4*x + 5 over Rational Field