Test2011_04_06

414 days ago by valibouze

def Ltrasv(L,H,n): Sn=SymmetricGroup(n) from sage.groups.perm_gps.permgroup import from_gap_list RCR=gap.RightCosets(L,H) RCR=gap.List(RCR,'i->Representative(i)') LTrans = [s for s in RCR] l = [i for i in from_gap_list(Sn,"%s" % LTrans)] return l 
       
def Eval(P,l,f,n): old_prec=gp.set_real_precision(52) rr=gp.polroots(f) rr_ss=[] lp=[] for si in l: rr_ss=rr_ss+[[rr[i] for i in si(range(1,n+1))]] for nuplet_rac in rr_ss: lrac=[rac for rac in nuplet_rac] rac_resol=P([rac for rac in lrac]) if rac_resol not in lp : lp=lp+[rac_resol] return lp 
       
def Ltrasv2(L,H,n): Sn=SymmetricGroup(n) from sage.groups.perm_gps.permgroup import from_gap_list RCR=gap.RightCosets(L,H) RCR=gap.List(RCR,'i->Representative(i)') return [i for i in from_gap_list(Sn,"%s" % RCR)] 
       
def PolyMin(L,H,P,f,n): R1=1 R2=1 resol=0 K=[] lpp=[] lpp1=[] lpp2=[] l=Ltrasv(L,H,n) lp=Eval(P,l,f,n) for m in lp: C = ComplexField() m=C(m) if m not in lpp: lpp=lpp+[m] for m in lpp: if m.conjugate() in lpp: if m.conjugate() not in lpp1: lpp1=lpp1+[m] else: lpp1=lpp1 for m in lpp: if m.conjugate() not in lpp: lpp2=lpp2+[m] for m in lpp1: a=m.real() b=m.imag() R1=R1*(x^2-2*a*x+a^2+b^2) for m in lpp2: R2=R2*(x-m) R=expand(R1*R2) return R 
       
n=6;d=20 L=SymmetricGroup(6) H=PermutationGroup(['(1,2,3)','(1,5,2,4)(3,6)']) R.<x1,x2,x3,x4,x5,x6>=QQ[] f1=x6+x5+x4+x3+x2+x1 f2=x5^2+x4*x5+x3*x5+x2*x5+x1*x5+x4^2+x3*x4+x2*x4+x1*x4+x3^2+x2*x3+x1*x3+x2^2+x1*x2+x1^2 f3=x4^3+x3*x4^2+x2*x4^2+x1*x4^2+x3^2*x4+x2*x3*x4+x1*x3*x4+x2^2*x4+x1*x2*x4+x1^2*x4+x3^3+x2*x3^2+x1*x3^2+x2^2*x3+x1*x2*x3+x1^2*x3+x2^3+x1*x2^2+x1^2*x2+x1^3 f4=x3^4+x2*x3^3+x1*x3^3+x2^2*x3^2+x1*x2*x3^2+x1^2*x3^2+x2^3*x3+x1*x2^2*x3+x1^2*x2*x3+x1^3*x3+x2^4+x1*x2^3+x1^2*x2^2+x1^3*x2+x1^4 f5=x2^5+x1*x2^4+x1^2*x2^3+x1^3*x2^2+x1^4*x2+x1^5-2 f6=x1^6-2*x1+1 f=x^6-2*x+1 I=R.ideal([f1,f2,f3,f4,f5,x6]) P=x1^3*x2*x4^2*x5 + x2^3*x3*x4^2*x5 + x1*x3^3*x4^2*x5 + x1*x2^2*x4^3*x5 +x1^2*x3*x4^3*x5 + x2*x3^2*x4^3*x5 + x1*x2^3*x4*x5^2 + x1^3*x3*x4*x5^2 +x2*x3^3*x4*x5^2 + x1^2*x2*x4*x5^3 + x2^2*x3*x4*x5^3 + x1*x3^2*x4*x5^3 + x1*x2^3*x4^2*x6 + x1^3*x3*x4^2*x6 + x2*x3^3*x4^2*x6 + x1^2*x2*x4^3*x6 +x2^2*x3*x4^3*x6 + x1*x3^2*x4^3*x6 + x1^3*x2*x5^2*x6 + x2^3*x3*x5^2*x6 +x1*x3^3*x5^2*x6 + x1*x2^2*x5^3*x6 + x1^2*x3*x5^3*x6 + x2*x3^2*x5^3*x6 +x1^3*x2*x4*x6^2 + x2^3*x3*x4*x6^2 + x1*x3^3*x4*x6^2 + x1*x2^3*x5*x6^2 +x1^3*x3*x5*x6^2 + x2*x3^3*x5*x6^2 + x1*x2^2*x4*x6^3 + x1^2*x3*x4*x6^3 +x2*x3^2*x4*x6^3 + x1^2*x2*x5*x6^3 + x2^2*x3*x5*x6^3 + x1*x3^2*x5*x6^3 +x1*x4 + x2*x4 + x3*x4 + x1*x5 + x2*x5 + x3*x5 + x1*x6 + x2*x6 + x3*x6 
       
time Ltrasv(L,H,n) 
       
[(), (5,6), (3,4), (3,4)(5,6), (3,5,4), (3,5,6,4), (3,6,5,4), (3,6,4),
(2,3,4), (2,3,4)(5,6), (2,3,5,4), (2,3,5,6,4), (2,3,6,5,4), (2,3,6,4),
(2,4)(3,5), (2,4)(3,5,6), (2,4)(3,6,5), (2,4)(3,6), (2,5,3,6,4),
(2,5,4)(3,6)]
Time: CPU 0.36 s, Wall: 2.01 s
[(), (5,6), (3,4), (3,4)(5,6), (3,5,4), (3,5,6,4), (3,6,5,4), (3,6,4), (2,3,4), (2,3,4)(5,6), (2,3,5,4), (2,3,5,6,4), (2,3,6,5,4), (2,3,6,4), (2,4)(3,5), (2,4)(3,5,6), (2,4)(3,6,5), (2,4)(3,6), (2,5,3,6,4), (2,5,4)(3,6)]
Time: CPU 0.36 s, Wall: 2.01 s
time PolyMin(L,H,P,f,n) 
       
x^20 - (3.55271367880050e-15 - 3.18618382226490e-58*I)*x^19 -
(2.84217094304040e-13 - 1.02083291969772e-55*I)*x^18 - (12700.0000000000
- 1.87710296539332e-54*I)*x^17 - (290256.000000000 -
5.18159711009296e-53*I)*x^16 - (3.92506400000001e6 -
1.40377849316238e-52*I)*x^15 - (4.33853620000002e7 +
1.59338664070853e-50*I)*x^14 + (1.58784152000000e9 -
5.65014172780173e-49*I)*x^13 + (3.96892323839999e10 -
1.88407179548247e-47*I)*x^12 + (1.18729549304400e12 -
2.77508191449305e-46*I)*x^11 + (1.57924726913680e13 -
5.94651084546806e-45*I)*x^10 + (2.49649683163192e14 -
4.77111332950542e-44*I)*x^9 + (2.26975391973849e15 -
9.01165898443641e-43*I)*x^8 + (1.73972498930015e16 -
1.79796701555399e-42*I)*x^7 + (1.19411832613770e17 -
6.59023379209094e-41*I)*x^6 - (1.28266772250316e17 -
2.86904260679797e-40*I)*x^5 + (4.95640697130586e18 -
3.27640891745761e-39*I)*x^4 - (5.07109996760335e19 -
2.43536040626188e-38*I)*x^3 + (2.40745441912360e20 -
1.08414278554823e-37*I)*x^2 - (1.18239331344666e21 -
4.51898288362897e-37*I)*x + 2.61787656205473e21 - 9.00705229635278e-37*I
Time: CPU 7.78 s, Wall: 23.15 s
x^20 - (3.55271367880050e-15 - 3.18618382226490e-58*I)*x^19 - (2.84217094304040e-13 - 1.02083291969772e-55*I)*x^18 - (12700.0000000000 - 1.87710296539332e-54*I)*x^17 - (290256.000000000 - 5.18159711009296e-53*I)*x^16 - (3.92506400000001e6 - 1.40377849316238e-52*I)*x^15 - (4.33853620000002e7 + 1.59338664070853e-50*I)*x^14 + (1.58784152000000e9 - 5.65014172780173e-49*I)*x^13 + (3.96892323839999e10 - 1.88407179548247e-47*I)*x^12 + (1.18729549304400e12 - 2.77508191449305e-46*I)*x^11 + (1.57924726913680e13 - 5.94651084546806e-45*I)*x^10 + (2.49649683163192e14 - 4.77111332950542e-44*I)*x^9 + (2.26975391973849e15 - 9.01165898443641e-43*I)*x^8 + (1.73972498930015e16 - 1.79796701555399e-42*I)*x^7 + (1.19411832613770e17 - 6.59023379209094e-41*I)*x^6 - (1.28266772250316e17 - 2.86904260679797e-40*I)*x^5 + (4.95640697130586e18 - 3.27640891745761e-39*I)*x^4 - (5.07109996760335e19 - 2.43536040626188e-38*I)*x^3 + (2.40745441912360e20 - 1.08414278554823e-37*I)*x^2 - (1.18239331344666e21 - 4.51898288362897e-37*I)*x + 2.61787656205473e21 - 9.00705229635278e-37*I
Time: CPU 7.78 s, Wall: 23.15 s
time rr=gp.polroots(f) # Attention : on ne peut pas faire P(rr) il faut que rr soit une liste sage rr=[rr[i] for i in range(1,n+1)] rr 
       
Time: CPU 0.01 s, Wall: 0.01 s
[0.5086603916420041364638429658984139953244064359010286 + 0.E-57*I,
1.000000000000000000000000000000000000000000000000000 + 0.E-57*I,
0.2575066316165687230701112267287344261573339846063277 -
1.118790314198965615959728197569806871767229241406274*I,
0.2575066316165687230701112267287344261573339846063277 +
1.118790314198965615959728197569806871767229241406274*I,
-1.011836827437570791302032709677941423819537202556842 -
0.6839585956421031439972875445718317765444107774986200*I,
-1.011836827437570791302032709677941423819537202556842 +
0.6839585956421031439972875445718317765444107774986200*I]
Time: CPU 0.01 s, Wall: 0.01 s
[0.5086603916420041364638429658984139953244064359010286 + 0.E-57*I, 1.000000000000000000000000000000000000000000000000000 + 0.E-57*I, 0.2575066316165687230701112267287344261573339846063277 - 1.118790314198965615959728197569806871767229241406274*I, 0.2575066316165687230701112267287344261573339846063277 + 1.118790314198965615959728197569806871767229241406274*I, -1.011836827437570791302032709677941423819537202556842 - 0.6839585956421031439972875445718317765444107774986200*I, -1.011836827437570791302032709677941423819537202556842 + 0.6839585956421031439972875445718317765444107774986200*I]
time P(rr) 
       
0.03505395226587259064211419104291885402122194213828744 -
7.963468235521169043211989651326490527870034442533943*I
Time: CPU 0.39 s, Wall: 0.88 s
0.03505395226587259064211419104291885402122194213828744 - 7.963468235521169043211989651326490527870034442533943*I
Time: CPU 0.39 s, Wall: 0.88 s
def Test(L,H,P,f,n): lpp=[] lpp1=[] lpp2=[] l=Ltrasv(L,H,n) lp=Eval(P,l,f,n) for m in lp: C = ComplexField() m=C(m) if m not in lpp: lpp=lpp+[m] for m in lpp: if m.conjugate() in lpp: if m.conjugate() not in lpp1: lpp1=lpp1+[m] else: lpp1=lpp1 else: lpp2=lpp2+[m] return [lpp1,lpp2] 
       
Test(L,H,P,f,n) 
       
[[0.0350539522658726 - 7.96346823552117*I, 1.10968305382056 +
4.79187218052994*I, 3.49309743999306 + 0.741067629775253*I,
-10.7430420034028 - 12.5575096706096*I, 4.98001623621214 -
15.8588356723959*I, -6.41804235116538 + 18.0077908958798*I,
-4.50254699025941 - 10.4533869379506*I, 1.90056175913875 +
15.2464423394628*I], [-11.8222581097453 + 3.18618382226490e-57*I,
25.3796436036262 + 6.37236764452981e-58*I, 26.6071340080770 -
3.50480220449140e-57*I, -19.8740816951635 - 6.37236764452981e-58*I]]
[[0.0350539522658726 - 7.96346823552117*I, 1.10968305382056 + 4.79187218052994*I, 3.49309743999306 + 0.741067629775253*I, -10.7430420034028 - 12.5575096706096*I, 4.98001623621214 - 15.8588356723959*I, -6.41804235116538 + 18.0077908958798*I, -4.50254699025941 - 10.4533869379506*I, 1.90056175913875 + 15.2464423394628*I], [-11.8222581097453 + 3.18618382226490e-57*I, 25.3796436036262 + 6.37236764452981e-58*I, 26.6071340080770 - 3.50480220449140e-57*I, -19.8740816951635 - 6.37236764452981e-58*I]]
 
       

No object 'if' currently defined.

No object 'if' currently defined.
l=Ltrasv(L,H,n) time Eval(P,l,f,n) 
       
[0.03505395226587259064211419104291885402122194213828744 -
7.963468235521169043211989651326490527870034442533943*I,
1.109683053820557326661650367974078047002864515915976 +
4.791872180529938049180438905957178741037863864192149*I,
1.109683053820557326661650367974078047002864515915976 -
4.791872180529938049180438905957178741037863864192149*I,
0.03505395226587259064211419104291885402122194213828744 +
7.963468235521169043211989651326490527870034442533943*I,
3.493097439993062636619940088681556589620749648372154 +
0.7410676297752525425763462254733000408971470277883590*I,
-10.74304200340282266132256897166898964422222922219902 -
12.55750967060962695106761781262952749483355357454905*I,
-10.74304200340282266132256897166898964422222922219902 +
12.55750967060962695106761781262952749483355357454905*I,
3.493097439993062636619940088681556589620749648372154 -
0.7410676297752525425763462254733000408971470277883590*I,
-11.82225810974527766541912080446463473681454290569425 +
3.186183822264904554 E-57*I,
25.37964360362621203740604379748572356857142244105178 +
6.372367644529809109 E-58*I,
4.980016236212142635105796512553358912928516151796327 -
15.85883567239586306539234123864620507955017627024441*I,
-6.418042351165382427207189098312970936709873802174222 +
18.00779089587984561352537461182252843552973682208793*I,
-4.502546990259415070422555945260538452724369711803747 -
10.45338693795061817198564933208474961565548471537095*I,
1.900561759138750145577448704349076509932065107005472 +
15.24644233946275864909070779393890605775923376265680*I,
-4.502546990259415070422555945260538452724369711803747 +
10.45338693795061817198564933208474961565548471537095*I,
1.900561759138750145577448704349076509932065107005472 -
15.24644233946275864909070779393890605775923376265680*I,
4.980016236212142635105796512553358912928516151796327 +
15.85883567239586306539234123864620507955017627024441*I,
-6.418042351165382427207189098312970936709873802174222 -
18.00779089587984561352537461182252843552973682208793*I,
26.60713400807700220615450233216270262839908675262930 -
3.504802204491395010 E-57*I,
-19.87408169516346692945069702390077121985385554608930 -
6.372367644529809109 E-58*I]
Time: CPU 20.83 s, Wall: 75.89 s
[0.03505395226587259064211419104291885402122194213828744 - 7.963468235521169043211989651326490527870034442533943*I, 1.109683053820557326661650367974078047002864515915976 + 4.791872180529938049180438905957178741037863864192149*I, 1.109683053820557326661650367974078047002864515915976 - 4.791872180529938049180438905957178741037863864192149*I, 0.03505395226587259064211419104291885402122194213828744 + 7.963468235521169043211989651326490527870034442533943*I, 3.493097439993062636619940088681556589620749648372154 + 0.7410676297752525425763462254733000408971470277883590*I, -10.74304200340282266132256897166898964422222922219902 - 12.55750967060962695106761781262952749483355357454905*I, -10.74304200340282266132256897166898964422222922219902 + 12.55750967060962695106761781262952749483355357454905*I, 3.493097439993062636619940088681556589620749648372154 - 0.7410676297752525425763462254733000408971470277883590*I, -11.82225810974527766541912080446463473681454290569425 + 3.186183822264904554 E-57*I, 25.37964360362621203740604379748572356857142244105178 + 6.372367644529809109 E-58*I, 4.980016236212142635105796512553358912928516151796327 - 15.85883567239586306539234123864620507955017627024441*I, -6.418042351165382427207189098312970936709873802174222 + 18.00779089587984561352537461182252843552973682208793*I, -4.502546990259415070422555945260538452724369711803747 - 10.45338693795061817198564933208474961565548471537095*I, 1.900561759138750145577448704349076509932065107005472 + 15.24644233946275864909070779393890605775923376265680*I, -4.502546990259415070422555945260538452724369711803747 + 10.45338693795061817198564933208474961565548471537095*I, 1.900561759138750145577448704349076509932065107005472 - 15.24644233946275864909070779393890605775923376265680*I, 4.980016236212142635105796512553358912928516151796327 + 15.85883567239586306539234123864620507955017627024441*I, -6.418042351165382427207189098312970936709873802174222 - 18.00779089587984561352537461182252843552973682208793*I, 26.60713400807700220615450233216270262839908675262930 - 3.504802204491395010 E-57*I, -19.87408169516346692945069702390077121985385554608930 - 6.372367644529809109 E-58*I]
Time: CPU 20.83 s, Wall: 75.89 s
[0.03505395226587259064211419104291885402122194213828744 - 7.963468235521169043211989651326490527870034442533943*I, 1.109683053820557326661650367974078047002864515915976 + 4.791872180529938049180438905957178741037863864192149*I, 1.109683053820557326661650367974078047002864515915976 - 4.791872180529938049180438905957178741037863864192149*I, 0.03505395226587259064211419104291885402122194213828744 + 7.963468235521169043211989651326490527870034442533943*I, 3.493097439993062636619940088681556589620749648372154 + 0.7410676297752525425763462254733000408971470277883590*I, -10.74304200340282266132256897166898964422222922219902 - 12.55750967060962695106761781262952749483355357454905*I, -10.74304200340282266132256897166898964422222922219902 + 12.55750967060962695106761781262952749483355357454905*I, 3.493097439993062636619940088681556589620749648372154 - 0.7410676297752525425763462254733000408971470277883590*I, -11.82225810974527766541912080446463473681454290569425 + 3.186183822264904554 E-57*I, 25.37964360362621203740604379748572356857142244105178 + 6.372367644529809109 E-58*I, 4.980016236212142635105796512553358912928516151796327 - 15.85883567239586306539234123864620507955017627024441*I, -6.418042351165382427207189098312970936709873802174222 + 18.00779089587984561352537461182252843552973682208793*I, -4.502546990259415070422555945260538452724369711803747 - 10.45338693795061817198564933208474961565548471537095*I, 1.900561759138750145577448704349076509932065107005472 + 15.24644233946275864909070779393890605775923376265680*I, -4.502546990259415070422555945260538452724369711803747 + 10.45338693795061817198564933208474961565548471537095*I, 1.900561759138750145577448704349076509932065107005472 - 15.24644233946275864909070779393890605775923376265680*I, 4.980016236212142635105796512553358912928516151796327 + 15.85883567239586306539234123864620507955017627024441*I, -6.418042351165382427207189098312970936709873802174222 - 18.00779089587984561352537461182252843552973682208793*I, 26.60713400807700220615450233216270262839908675262930 - 3.504802204491395010 E-57*I, -19.87408169516346692945069702390077121985385554608930 - 6.372367644529809109 E-58*I] 
       
def PolyMinV2(L,H,P,f,n): R1=1 R2=1 resol=0 K=[] lpp=[] lpp1=[] lpp2=[] lp1=[] l=Ltrasv(L,H,n) lp=Eval(P,l,f,n) C = ComplexField() # pour rendre à zéro les racines les plus proche de zéro et je prend 10^(-5) comme référence for i in range(len(lp)): m=lp[i] a=m.real() if a > 0: if a < e: a=0 else: a=a else: if (-a) < e: a=0 else: a=a b=m.imag() if b > 0: if b < e: b=0 else: b=b else: if (-b) < e: b=0 else: b=b m=C(a,b) lp1=lp1+[m] for m in lp: C = ComplexField() m=C(m) if m not in lpp: lpp=lpp+[m] for m in lpp: if m.conjugate() in lpp: if m.conjugate() not in lpp1: lpp1=lpp1+[m] else: lpp1=lpp1 for m in lpp: if m.conjugate() not in lpp: lpp2=lpp2+[m] # pour que les racines soient des entiers for m in lpp1: a=m.real() if a > 0: if a.frac()<1/2: a=a.integer_part() else: a=a.integer_part()+1 else: if -(a.frac())<1/2: a=a.integer_part() else: a=a.integer_part()-1 b=m.imag() if b > 0: if b.frac()<1/2: b=b.integer_part() else: b=b.integer_part()+1 else: if -(b.frac())<1/2: b=b.integer_part() else: b=b.integer_part()-1 R1=R1*(x^2-2*a*x+a^2+b^2) for m in lpp2: R2=R2*(x-m) R=expand(R1*R2) return R 
       
time PolyMinV2(L,H,P,f,n) 
       
x^20 + (1.70956219320553 + 3.18618382226490e-58*I)*x^19 +
(1.05590164105746 + 1.02627989910087e-55*I)*x^18 - (12643.1086202658 -
2.05195713157547e-54*I)*x^17 - (309531.107260864 -
5.51509119182091e-53*I)*x^16 - (4.51017410728819e6 -
2.37526430293478e-52*I)*x^15 - (5.05120783384595e7 +
1.53077216787986e-50*I)*x^14 + (1.47644399272672e9 -
5.92095837321189e-49*I)*x^13 + (4.17200763647679e10 -
1.97638461418239e-47*I)*x^12 + (1.26935894973891e12 -
3.12385788552252e-46*I)*x^11 + (1.79055031039186e13 -
6.52834865602004e-45*I)*x^10 + (2.82074143727544e14 -
5.87318885648659e-44*I)*x^9 + (2.79132885474819e15 -
1.02066340993384e-42*I)*x^8 + (2.26119035996363e16 -
3.59077979115350e-42*I)*x^7 + (1.63415478540039e17 -
7.45588358874552e-41*I)*x^6 + (2.21541076819445e17 +
1.54379429465975e-40*I)*x^5 + (5.77419875657449e18 -
3.30717006833890e-39*I)*x^4 - (4.06799832145947e19 -
2.01414520205943e-38*I)*x^3 + (2.13090185631213e20 -
9.61735653805304e-38*I)*x^2 - (1.07053826116027e21 -
4.06510636341184e-37*I)*x + 2.21705649322259e21 - 7.62799288089844e-37*I
Time: CPU 17.69 s, Wall: 74.95 s
x^20 + (1.70956219320553 + 3.18618382226490e-58*I)*x^19 + (1.05590164105746 + 1.02627989910087e-55*I)*x^18 - (12643.1086202658 - 2.05195713157547e-54*I)*x^17 - (309531.107260864 - 5.51509119182091e-53*I)*x^16 - (4.51017410728819e6 - 2.37526430293478e-52*I)*x^15 - (5.05120783384595e7 + 1.53077216787986e-50*I)*x^14 + (1.47644399272672e9 - 5.92095837321189e-49*I)*x^13 + (4.17200763647679e10 - 1.97638461418239e-47*I)*x^12 + (1.26935894973891e12 - 3.12385788552252e-46*I)*x^11 + (1.79055031039186e13 - 6.52834865602004e-45*I)*x^10 + (2.82074143727544e14 - 5.87318885648659e-44*I)*x^9 + (2.79132885474819e15 - 1.02066340993384e-42*I)*x^8 + (2.26119035996363e16 - 3.59077979115350e-42*I)*x^7 + (1.63415478540039e17 - 7.45588358874552e-41*I)*x^6 + (2.21541076819445e17 + 1.54379429465975e-40*I)*x^5 + (5.77419875657449e18 - 3.30717006833890e-39*I)*x^4 - (4.06799832145947e19 - 2.01414520205943e-38*I)*x^3 + (2.13090185631213e20 - 9.61735653805304e-38*I)*x^2 - (1.07053826116027e21 - 4.06510636341184e-37*I)*x + 2.21705649322259e21 - 7.62799288089844e-37*I
Time: CPU 17.69 s, Wall: 74.95 s
subs? 
       

No object 'subs' currently defined.

No object 'subs' currently defined.
search_doc("substitution") 
       
if abs(-1)<1: 0 else: 1 
       
if abs(-2)<1: 3 
       
abs(-2) 
       
2
2