2.Galois 群

現在のオリジナルプログラムでは,Galois 群の元と分解体の絶対定義式の根との対応の把握に若干の検索を行っています.

これに対して,下記の nGG では,1.で得た RA における A が絶対定義式 DA の任意の根であるという点に着目して,それらの根と「入力 p の根の置換」との対応を直接求めています.すなわち,1.で得た DA の数値根 B_k\ (k=1,\ldots,m) (絶対誤差は p の根差の半分より小とする)を RA=[s_1(A),\ldots,s_n(A)] の A に代入したものは [s_1(B_1),\ldots,s_n(B_1)] の順列  [s_{{\sigma_k}(1)}(B_1) ,\ldots, s_{{\sigma_k}(n)}(B_1)] であり,この \sigma_k が絶対定義式の根 A_k に対応する Galois 群の元,そして,A_k 自体も1.で得た KK により,A_k=\sum_{i=1}^{|KK|} KK[i] s_{{\sigma_k}(i)}(A) と表せます.

nGG の引数は DA のみですが,mp が生成した RA,KK も上記のように内部で参照し,出力は Galois 群 GG2,また,その元と DA の根との対応のリスト GGRS も生成します.

nGG(DA):=block([h],
n:50,fpprintprec:n,ratepsilon:fpprec:2*n,er:0.1^n,
nRS:map('rhs,bfallroots(DA)),
nRAS:expand(map(lambda([s],subst(A=s,RA)),nRS)),
nRAS1:nRAS[1],
GG2:fullmapl(lambda([s],sublist_indices(nRAS1,lambda([t],abs(s-t)<er))[1]),nRAS),
RS:rat(map(lambda([s],KK.s),fullmapl(lambda([s],RA[s]),map(lambda([s],makelist(s[i],i,length(KK))),GG2)))),
GGRS:map("[",GG2,RS),
GG2)$

実行例.

(%i5) nGG(mp(x^5-2));
Evaluation took 0.2930 seconds (0.3980 elapsed) using 148.313 MB.
(%o5) [[1,2,3,4,5],[4,2,5,1,3],[2,4,1,5,3],[2,1,4,3,5],[3,5,1,4,2],
        [5,3,4,1,2],[5,4,3,2,1],[3,1,5,2,4],[1,3,2,5,4],[4,5,2,3,1],
        [2,5,3,1,4],[2,3,5,4,1],[1,4,5,3,2],[4,1,3,5,2],[3,4,2,1,5],
        [5,1,2,4,3],[1,5,4,2,3],[4,3,1,2,5],[3,2,4,5,1],[5,2,1,3,4]]
(%i6) GGRS;
Evaluation took 0.0000 seconds (0.0000 elapsed) using 0 bytes.
(%o6) [[[1,2,3,4,5],A],[[4,2,5,1,3],(A^16-5*A^11+2350*A^6-3500*A)/11000],
        [[2,4,1,5,3],-(A^16-5*A^11+2350*A^6-3500*A)/11000],[[2,1,4,3,5],-A],
        [[3,5,1,4,2],-(A^16-10*A^11+2900*A^6-18000*A)/22000],
        [[5,3,4,1,2],(A^16-10*A^11+2900*A^6-18000*A)/22000],
        [[5,4,3,2,1],(A^16+10*A^11+2900*A^6+18000*A)/22000],
        [[3,1,5,2,4],(A^16+5*A^11+2350*A^6+3500*A)/11000],
        [[1,3,2,5,4],-(A^16+5*A^11+2350*A^6+3500*A)/11000],
        [[4,5,2,3,1],-(A^16+10*A^11+2900*A^6+18000*A)/22000],
        [[2,5,3,1,4],-(3*A^16+7600*A^6+11000*A)/22000],
        [[2,3,5,4,1],-(A^16+5*A^11+2350*A^6+14500*A)/11000],
        [[1,4,5,3,2],-(A^16-5*A^11+2350*A^6-14500*A)/11000],
        [[4,1,3,5,2],(A^16-5*A^11+2350*A^6-14500*A)/11000],
        [[3,4,2,1,5],(A^11+1800*A)/1100],
        [[5,1,2,4,3],(3*A^16+7600*A^6-11000*A)/22000],
        [[1,5,4,2,3],-(3*A^16+7600*A^6-11000*A)/22000],
        [[4,3,1,2,5],-(A^11+1800*A)/1100],
        [[3,2,4,5,1],(A^16+5*A^11+2350*A^6+14500*A)/11000],
        [[5,2,1,3,4],(3*A^16+7600*A^6+11000*A)/22000]]