# elliptic curve complex numbers

Hi, I want to look at the curve E=EllipticCurve(CC,[-35/4,-49/4]) over the complex numbers. I want to find the 3-Torsion Points on the curve, so I tried to use the function E.division_polynomial(3, two_torsion_multiplicity=0) which gave me the 3-Division-Polynomial g=3x^4 - 105/2x^2 - 147x - 1225/16 which is an univariate Polynomial. The zeros of this Polynomial should be the x-coordinates of the 3-Torsion-Points. One of the zeros is a=5.26556730825188 Then I tried to compute the y-coordinates via the curve-equation y^2 = x^3 + (-8.75000000000000)x + (-12.2500000000000) The point I got was P=(5.26556730825188 , 9.36325015678742) which is clearly lying on the curve, because it fulfills the equation of the curve E, what I have tested.

So I wanted to use the function P = E(5.26556730825188 , 9.36325015678742)

Here I got an error, telling me "TypeError: Coordinates [5.26556730825188, 9.36325015678742, 1.00000000000000] do not define a point on Elliptic Curve defined by y^2 = x^3 + (-8.75000000000000)*x + (-12.2500000000000) over Complex Field with 53 bits of precision" Why does that happen?

Next problem is the following: If I use the function Q = E(0); Q.division_points(3)

this should give me the 3-torsion-points, but the x-coordinates of the points I get by this metod are different from the method with the 3-divison-polynomial! actually the function does not find any 3-torsion points! How can that happen? Sorry, I'm a sage-beginner from germany and my english is terrible! But this is really really important for me, so I would be very very thankful for any help!!!

greetings pittersen!!

edit retag close merge delete

could you please accept my answer if you think it is good ?

( 2014-08-23 01:24:47 -0500 )edit

Hi Frederic, I'm really happy with your answer. It helped me a lot! Thank you. I just klicked the green button on the left; is that what you mean by "accept" ?

( 2014-08-25 10:47:15 -0500 )edit

yes. Thanks

( 2014-08-25 11:52:13 -0500 )edit

Sort by » oldest newest most voted

Maybe something like that:

sage: E = EllipticCurve(QQ,[-35/4,-49/4])
sage: E2 = E.change_ring(CC)
sage: p = E.torsion_polynomial(3)
sage: p.complex_roots()
[-0.682991613296036,
5.26556730825188,
-2.29128784747792 - 1.35880032042306*I,
-2.29128784747792 + 1.35880032042306*I]
sage: x = p.complex_roots()[1]
sage: E2.lift_x(x)
(5.26556730825188 : 9.36325015678740 : 1.00000000000000)


Sometimes it is better (but maybe slower) to work over QQbar for exact results.

sage: E3 = E.change_ring(QQbar)
sage: p = E3.torsion_polynomial(3)
sage: p.roots()
[(-0.6829916132960358?, 1),
(5.265567308251876?, 1),
(-2.291287847477920? - 1.358800320423061?*I, 1),
(-2.291287847477920? + 1.358800320423061?*I, 1)]
sage: x = p.roots()[1][0]
sage: g = E3.lift_x(x); g
(5.265567308251876? : 9.363250156787399? : 1)
sage: g+g
(5.265567308251876? : -9.363250156787399? : 1)
sage: g+g+g
(0 : 1 : 0)


You could also work over the splitting field of the division polynomial.

more