[GAP Forum] Square root of cyclotomic real number
Marek Mitros
marek at mitros.org
Thu May 19 06:48:05 BST 2016
Thank you for advice. Let me explain my plan, then we can judge whether
this advice work for me or it doesn't.
I have group of size 5120 of complex matrices of size 16x16. In this group
I listed two conjugacy classes of involutions of size 10 and 80. Next I
wanted to change the basis in a way that mentioned 10 matrices are
diagonal. Therefore I obtained 16 vectors as intersections of eigenspaces.
Unfortunately these vectors are not unit length, so I tried to normalize
them. This doesn't work in GAP, because complex numbers are cyclotomics
there. Then my question appeared on GAP forum. If I could normalize those
vectors, then obtained matrix A built with orthonormal hermitian vectors is
unitary and I can apply x-> A^-1 x A to group elements.
Can this plan be done in GAP or Sage ?
Mentioned group is index 2 in involution stabilizer of Tits group ^2F4(2)'.
Regards,
Marek
19-05-2016 04:30 użytkownik "Samuel Lelièvre" <samuel.lelievre at gmail.com>
napisał:
> Dear forum,
>
> To complement Dima's answer, if you are using Sage,
> you should be aware that Sage provides two useful
> exact fields:
> - QQbar, the algebraic closure of QQ,
> - AA, the "algebraic real field", which is the intersection
> of QQbar with the reals.
>
> I would advise you to work in AA for your problem.
>
> Defining, as Dima suggested,
>
> sage: a = libgap.eval('E(20)-E(20)^9').sage()
>
> you get an element in a cyclotomic field:
>
> sage: a
> -zeta20^7 + zeta20^5 - zeta20^3 + 2*zeta20
> sage: a.parent()
> Cyclotomic Field of order 20 and degree 8
>
> Now if you take its square root naively, you end up
> in Sage's "Symbolic Ring" which is something to avoid
> in general.
>
> sage: b = a.sqrt()
> sage: b
> sqrt(-(1/4*I*sqrt(5) + 1/4*sqrt(2*sqrt(5) + 10) - 1/4*I)^7
> + (1/4*I*sqrt(5) + 1/4*sqrt(2*sqrt(5) + 10) - 1/4*I)^5
> - (1/4*I*sqrt(5) + 1/4*sqrt(2*sqrt(5) + 10) - 1/4*I)^3
> + 1/2*I*sqrt(5) + 1/2*sqrt(2*sqrt(5) + 10) - 1/2*I)
> sage: b.parent()
> Symbolic Ring
>
> The best is to work with AA
>
> sage: AA
> Algebraic Real Field
>
> by moving there explicitly
>
> sage: aa = AA(a)
> sage: aa
> 1.902113032590308?
> sage: aa.parent()
> Algebraic Real Field
>
> Elements of AA are exact, and well-defined:
>
> sage: aa.minpoly()
> x^4 - 5*x^2 + 5
>
> Taking square roots stays in AA
>
> sage: bb = aa.sqrt()
> sage: bb
> 1.379171139703231?
> sage: bb.parent()
> Algebraic Real Field
> sage: bb.minpoly()
> x^8 - 5*x^4 + 5
>
> I hope this helps.
> Samuel
>
More information about the Forum
mailing list