Ahmad Mostafa Ismail El-Guindy on Tue, 10 Dec 2024 12:47:22 +0100


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Question about mfatkineigenvalues


Hello,

I am confused by the behavior of mfatkinvalues, where sometimes it seems to  output eigenvalues that are not  a power of I (for odd characters). For example I get the following:

(04:07) gp > sc(p,k,n)=mfinit([p,k,kronecker(-1,p)*p],n);
(04:08) gp > mfatkineigenvalues(sc(11,5,1),11)
%18 = [[-I], [-0.99585919546393838810358142327418569810 - 0.090909090909090909090909090909090909091*I, 0.99585919546393838810358142327418569810 - 0.090909090909090909090909090909090909091*I]]

On the other hand, 

(04:17) gp > [mfb,M,C]=mfatkininit(sc(11,5,1),11);
(04:18) gp > polroots(charpoly(M))
%20 = [-1.0000000000000000000000000000000000000 + 0.E-38*I, -1.0000000000000000000000000000000000000 + 0.E-38*I, 1.0000000000000000000000000000000000000 + 0.E-38*I]~
(04:19) gp > C
%21 = -1.0000000000000000000000000000000000000*I
(04:19) gp > polroots(charpoly(M/C))
%22 = [-3.8332335417084352035971249315516686802 E-20 - 1.0000000000000000000000000000000000000*I, 0.E-38 + 0.99999999999999999999999999999999999999*I, 3.8332335417084352035971249315516686802 E-20 - 1.0000000000000000000000000000000000000*I]~

I thought that the direct call of mfatkineigenvalues should give the same answer as computing the roots of charpoly(M/C) according to the documentation below; or is there something more subtle going on?

"  To  obtain  the  eigenvalues  on  a  larger space than the new space,  e.g.,  the full space,  you can directly call
[mfB,M,C]  = mfatkininit and compute the eigenvalues as the roots of the characteristic polynomial of M/C,  by dividing
the roots of charpoly(M) by C.  Note that the characteristic polynomial is computed exactly since M has coefficients in
Q(chi),  whereas C may be given by a complex number.   If the coefficients of the characteristic polynomial are polmods
modulo T they must be embedded to C first using subst(lift(), t, exp(2*I*Pi/n)), when T is poliscyclo(n); note that T =
mf.mod.

   The library syntax is GEN mfatkineigenvalues(GEN mf, long Q, long prec)." 

Thanks,

Ahmad