Bon j'ai reussi d'avoir une base de grobner sur Q pour cyclic9 depuis sage avec giacpy.
Pc de bureau a moins de 500Eur en 2013: Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz avec seulement 4Go de RAM
rpm de sage officiel et la derniere version de giac 1.1.0, et la vesion de giacpy pour HOME dir (ie sans patcher sage)
Code : Tout sélectionner
sage: n=6;R=PolynomialRing(QQ,n,'x');
sage: I = sage.rings.ideal.Cyclic(R,n);
sage: I.gens()
[x0 + x1 + x2 + x3 + x4 + x5, x0*x1 + x1*x2 + x2*x3 + x3*x4 + x0*x5 + x4*x5, x0*x1*x2 + x1*x2*x3 + x2*x3*x4 + x0*x1*x5 + x0*x4*x5 + x3*x4*x5, x0*x1*x2*x3 + x1*x2*x3*x4 + x0*x1*x2*x5 + x0*x1*x4*x5 + x0*x3*x4*x5 + x2*x3*x4*x5, x0*x1*x2*x3*x4 + x0*x1*x2*x3*x5 + x0*x1*x2*x4*x5 + x0*x1*x3*x4*x5 + x0*x2*x3*x4*x5 + x1*x2*x3*x4*x5, x0*x1*x2*x3*x4*x5 - 1]
sage: time B = I.groebner_basis("libsingular:std")
Time: CPU 0.15 s, Wall: 0.15 s
sage: import sys;sys.path.append('/home/fred/giacpy-sage')
<p>(If you have the standalone version of giacpy for sage in /home/fred/giacpy-sage )</p>
<p>if not, then patch sage and do:</p>
<p>from sage.libs.giac import *</p>
sage: import giacpy
// Giac share root-directory:/usr/share/giac/
// Using keyword file /usr/share/giac/doc/fr/keywords
// Giac share root-directory:/usr/share/giac/
Help file /usr/share/giac/doc/fr/aide_cas not found
Added 0 synonyms
sage: from giacpy import *
sage: I1=libgiac(I.gens())
<p>In giac 1.1 there is a new code for grobner basis with revlex.</p>
<p>It is much faster than the old ones, but only with revlex and doesn't use cocoa.</p>
sage: time B1=I1.gbasis([R.gens()],'revlex')
Time: CPU 0.08 s, Wall: 0.07 s
sage: time B1=I1.gbasis([R.gens()],'revlex,cocoa=false')
Time: CPU 0.09 s, Wall: 0.08 s
sage: [(B[-i-1]/B1[i]).simplify() for i in range(len(B))] #singular donne des fractions. les degres ne sont pas dans le meme ordre
[1, 1, 1/14, 1, 1/2, 1/7, 1/2, 1/903, 1/1806, 1/258, 1/903, 1/903, 1/1806, 1/903, 1/1806, 1/1806, 1/7, 1/602, 1/258, 1/1806, 1/18, 1/274400, 1/54880, 1/109760, 1/164640, 1/86596, 1/43298, 1/86596, 1/35739035160, 1/2978252930, 1/1191301172, 1/2382602344, 1/3573903516, 1/35739035160, 1/14, 1/24990, 1/42, 1/24990, 1/99960, 1/6664, 1/99960, 1/19992, 1/99960, 1/2040, 1/16660]
sage: n=9;R=PolynomialRing(QQ,n,'x');
sage: I = sage.rings.ideal.Cyclic(R,n);I
Ideal (x0 + x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8, x0*x1 + x1*x2 + x2*x3 + x3*x4 + x4*x5 + x5*x6 + x6*x7 + x0*x8 + x7*x8, x0*x1*x2 + x1*x2*x3 + x2*x3*x4 + x3*x4*x5 + x4*x5*x6 + x5*x6*x7 + x0*x1*x8 + x0*x7*x8 + x6*x7*x8, x0*x1*x2*x3 + x1*x2*x3*x4 + x2*x3*x4*x5 + x3*x4*x5*x6 + x4*x5*x6*x7 + x0*x1*x2*x8 + x0*x1*x7*x8 + x0*x6*x7*x8 + x5*x6*x7*x8, x0*x1*x2*x3*x4 + x1*x2*x3*x4*x5 + x2*x3*x4*x5*x6 + x3*x4*x5*x6*x7 + x0*x1*x2*x3*x8 + x0*x1*x2*x7*x8 + x0*x1*x6*x7*x8 + x0*x5*x6*x7*x8 + x4*x5*x6*x7*x8, x0*x1*x2*x3*x4*x5 + x1*x2*x3*x4*x5*x6 + x2*x3*x4*x5*x6*x7 + x0*x1*x2*x3*x4*x8 + x0*x1*x2*x3*x7*x8 + x0*x1*x2*x6*x7*x8 + x0*x1*x5*x6*x7*x8 + x0*x4*x5*x6*x7*x8 + x3*x4*x5*x6*x7*x8, x0*x1*x2*x3*x4*x5*x6 + x1*x2*x3*x4*x5*x6*x7 + x0*x1*x2*x3*x4*x5*x8 + x0*x1*x2*x3*x4*x7*x8 + x0*x1*x2*x3*x6*x7*x8 + x0*x1*x2*x5*x6*x7*x8 + x0*x1*x4*x5*x6*x7*x8 + x0*x3*x4*x5*x6*x7*x8 + x2*x3*x4*x5*x6*x7*x8, x0*x1*x2*x3*x4*x5*x6*x7 + x0*x1*x2*x3*x4*x5*x6*x8 + x0*x1*x2*x3*x4*x5*x7*x8 + x0*x1*x2*x3*x4*x6*x7*x8 + x0*x1*x2*x3*x5*x6*x7*x8 + x0*x1*x2*x4*x5*x6*x7*x8 + x0*x1*x3*x4*x5*x6*x7*x8 + x0*x2*x3*x4*x5*x6*x7*x8 + x1*x2*x3*x4*x5*x6*x7*x8, x0*x1*x2*x3*x4*x5*x6*x7*x8 - 1) of Multivariate Polynomial Ring in x0, x1, x2, x3, x4, x5, x6, x7, x8 over Rational Field
sage: #time B = I.groebner_basis("libsingular:std")
sage: I1=libgiac(I.gens())
sage: giacsettings.threads=4
sage: time B1=libgiac(I.gens()).gbasis([R.gens()],'revlex')
Running a probabilistic check for the reconstructed Groebner basis. If successfull, error probability is less than 1e-15 and is estimated to be less than 10^-119. Use proba_epsilon:=0 to certify (this takes more time).
Time: CPU 127584.53 s, Wall: 55808.73 s
sage: tutu=B1[-1].coeff([R.gens()])
sage: tutu.approx(20).max()
0.33367613068506562166e611
sage: time tutu=B1[500].coeff([R.gens()])
Time: CPU 0.03 s, Wall: 0.92 s
sage: tutu.approx(20).max().log10().approx(12)._double
597.0994441999974
<p>NB: time on a desktop PC with 4go ram only so a lot of time in swapping.</p>
sage: time logcoeff=[ (j.coeff([R.gens()])).approx(20).max().log10().approx(12)._double for j in B1]
Time: CPU 27.40 s, Wall: 340.95 s
sage: max(logcoeff)
1643.9074942499938
sage: B1.dim()
1344