The problems are with working over an inexact field: complex numbers (CC) 
cannot be represented exactly.  The elliptic curve functions in Sage are 
really designed to be used over exact fields, so that comparing two field 
elements for equality is a simple yes/no with no precision issues.

This is just an excuse, of course:  E(0).division_points(3) should give 9 
points, but it only gives 1.  I guess that (and I should no since I wrote 
the division_points() function, some time ago) it is finding the 
x-coordinates as roots of the degree 4 3-division polynomial, computing the 
y-coordinates from them, and then ignoring all but one of the resulting 
points since their coordinates (which are of course approximate) do not 
satisfy the equation *exactly*.

It is hard to advise further withou knowing what you were doing this 
computation for.  You can define the curve over Q, compute its 3-division 
field and then compute the 3-torsion points there:

sage: E = EllipticCurve([-35/4,-49/4])
sage: K = E.division_field(3,'a')
sage: EK = E.change_ring(K)
sage: pts = EK(0).division_points(3)
sage: len(pts)
9

then manually embed them into CC:

sage: e = K.embeddings(CC)[0]
sage: ptsC = [[e(z) for z in P] for P in pts]

so that now, for example:

sage: ptsC[1]
[-2.29128784725876 - 1.35880032033003*I,
 3.11801517769169 - 1.12295751423565*I,
 1.00000000000000]

Note that this is just a triple of elements of CC, not a point on E.  It 
only approximately satisfies the equation for E:

sage: E.defining_polynomial()(ptsC[1])
3.30058824715707e-9 + 3.85236020861157e-9*I

John Cremona

On Thursday, August 21, 2014 9:08:14 AM UTC+1, [email protected] wrote:
>
> 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=3*x^4 - 105/2*x^2 - 147*x - 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! 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!!  
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-support" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-support.
For more options, visit https://groups.google.com/d/optout.

Reply via email to