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 -~----------~----~----~----~------~----~------~--~---
