See below

On 24 Sep, 13:13, John Cremona <[email protected]> wrote:
> Here's a way, using QQbar.  To get this to work I had to (1) add a
> trivial function is_square() for elements of QQbar (it did not exist
> but was required i nthe code for constructing points), and also
> correct a typo in the code of qqbar.py (line 2942).
>
> sage: e = EllipticCurve("27a3")
> sage: ebar = e.change_ring(QQbar)
> sage: E4 = ebar(0).division_points(4)
> sage: E4
>
> [(-1.721084160919158? : -0.50000000000000000? - 2.201834737520806?*I :
> 1),
>  (-1.721084160919158? : -0.50000000000000000? + 2.201834737520806?*I :
> 1),
>  (-0.6299605249474365? : -1/2 : 1),
>  (-0.2305815555121425? - 0.3993789694352942?*I : -1.089979839785493? +
> 0.?e-19*I : 1),
>  (-0.2305815555121425? - 0.3993789694352942?*I : 0.08997983978549296?
> + 0.?e-38*I : 1),
>  (-0.2305815555121425? + 0.3993789694352942?*I : -1.089979839785493? +
> 0.?e-19*I : 1),
>  (-0.2305815555121425? + 0.3993789694352942?*I : 0.08997983978549296?
> + 0.?e-38*I : 1),
>  (0 : 1 : 0),
>  (0.3149802624737183? - 0.5455618179858607?*I : -1/2 : 1),
>  (0.3149802624737183? + 0.5455618179858607?*I : -1/2 : 1),
>  (0.4611631110242849? : -1.089979839785493? : 1),
>  (0.4611631110242849? : 0.08997983978549296? : 1),
>  (0.8605420804595790? - 1.490502605407016?*I : -0.50000000000000000? -
> 2.201834737520806?*I : 1),
>  (0.8605420804595790? - 1.490502605407016?*I : -0.50000000000000000? +
> 2.201834737520806?*I : 1),
>  (0.8605420804595790? + 1.490502605407016?*I : -0.50000000000000000? -
> 2.201834737520806?*I : 1),
>  (0.8605420804595790? + 1.490502605407016?*I : -0.50000000000000000? +
> 2.201834737520806?*I : 1)]
>
> Now we find the appropriate fields
>
> sage: Set([P[0].minpoly() for P in E4])
> {x^3 + 1/4, x^6 + 5*x^3 - 1/2, x}
> sage: Set([P[1].minpoly() for P in E4])
> {x^4 + 2*x^3 + 6*x^2 + 5*x - 1/2, x + 1/2, x - 1}
>
> so the x-coords are defined over Q(a,b) where a,b  are roots  of  x^3
> + 1/4, x^6 + 5*x^3 - 1/2 and the y-coords are in Q(c) where c is a
> root of x^4 + 2*x^3 + 6*x^2 + 5*x - 1/2.
>
> sage: f4 = E4[0][1].minpoly(); f4
> x^4 + 2*x^3 + 6*x^2 + 5*x - 1/2
> sage: f3 = E4[2][0].minpoly(); f3
> x^3 + 1/4
> sage: f6 = E4[0][0].minpoly(); f6
> x^6 + 5*x^3 - 1/2
>
> sage: x6 = E4[0][0]
> sage: x4 = E4[0][1]
> sage: x3 = E4[2][0]
>
> Now what we need is a way of constructing a number field from a finite
> list of elements of QQbar, which is not implemented.  But the above is
> a start.

I discovered that it *is* implemented.  So we can continue the above
example -- here I am using 4.1.2.rc0 in which the patch mentioned has
been merged:

sage: vals = Set(sum([list(P) for P in E4],[]))
sage: vals = [x for x in vals]
sage: K, Kvals, phi = number_field_elements_from_algebraics(vals)
sage: K
Number Field in a with defining polynomial y^24 - 12*y^23 + 72*y^22 -
286*y^21 + 849*y^20 - 2022*y^19 + 4034*y^18 - 6894*y^17 + 10182*y^16 -
13048*y^15 + 14532*y^14 - 13974*y^13 + 11365*y^12 - 7578*y^11 +
4038*y^10 - 1766*y^9 + 762*y^8- 408*y^7 + 236*y^6 - 126*y^5 + 69*y^4 -
38*y^3 + 18*y^2 - 6*y + 1

That polynomial of degree 24 generates the 4-division field of the
curve.

Now I find a problem (but I may have done something stupid):

sage: EK = e.change_ring(K)
sage: EK.division_polynomial(4).roots(K)
[]

-- I was expecting  full set of roots here.  Can anyone see what's
wrong?

John Cremona


>
> I will make a patch to correct the two things mentioned at the top
> (without which this code will not work).
>
> John Cremona
>
> On Sep 18, 3:12 pm, Hendrik <[email protected]> wrote:
>
> > Hi,
>
> > First of all, I'm very happy with the things I can do withelliptic
> >curvesover number fields in Sage.
>
> > My problem:
> > I want to add the complete 4-torsion of E27a3 to the rationals, i.e. I
> > want K=Q(E[4]).
> > My situation is more or less similar 
> > to:http://groups.google.com/group/sage-nt/browse_thread/thread/b17b3f26a...
> > ,
> > though for now I just want to know information about K.
> > Just adjoining the x-coordinates of the division polynomial does not
> > give me the complete 4-torsion.
> > Adding the y-coordinates and get the splitting_field is beyond the
> > capabilities of Sage, I guess.
> > Is there a way to obtain this field K?
> > Am I missing something, is there some functionality in Sage to do
> > this?
>
> > Best,
>
> > Hendrik
--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/sage-support
URL: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to