Artifact 51585799a97736942cabc96cab908cd54832f3a40ad79575a5aaec3d5718e961:
- File
r35/xlog/groebner.log
— part of check-in
[f2fda60abd]
at
2011-09-02 18:13:33
on branch master
— Some historical releases purely for archival purposes
git-svn-id: https://svn.code.sf.net/p/reduce-algebra/code/trunk/historical@1375 2bfe0521-f11c-4a00-b80e-6202646ff360 (user: arthurcnorman@users.sourceforge.net, size: 25065) [annotate] [blame] [check-ins using] [more...]
Codemist Standard Lisp 3.54 for DEC Alpha: May 23 1994 Dump file created: Mon May 23 10:39:11 1994 REDUCE 3.5, 15-Oct-93 ... Memory allocation: 6023424 bytes +++ About to read file ndotest.red %Examples of use of Groebner code. % Example 1, Linz 85. groebner({q1, q2**2 + q3**2 + q4**2, q4*q3*q2, q3**2*q2**2 + q4**2*q2**2 + q4**2*q3**2, q6**2 + 1/3*q5**2, q6**3 - q5**2*q6, 2*q2**2*q6 - q3**2*q6 - q4**2*q6 + q3**2*q5 - q4**2*q5, 2*q2**2*q6**2 - q3**2*q6**2 - q4**2*q6**2 - 2*q3**2*q5*q6 + 2*q4**2*q5*q6 - 2/3*q2**2*q5**2 + 1/3*q3**2*q5**2 + 1/3*q4**2*q5**2, - q3**2*q2**2*q6 - q4**2*q2**2*q6 + 2*q4**2*q3**2*q6 - q3**2*q2**2*q5 + q4**2*q2**2*q5, - q3**2*q2**2*q6**2 - q4**2*q2**2*q6**2 + 2*q4**2*q3**2*q6**2 + 2*q3**2*q2**2*q5*q6 - 2*q4**2*q2**2*q5*q6 + 1/3*q3**2*q2**2 *q5**2 + 1/3*q4**2*q2**2*q5**2 - 2/3*q4**2*q3**2*q5**2, - 3*q3**2*q2**4*q5*q6**2 + 3*q4**2*q2**4*q5*q6**2 + 3*q3**4*q2**2*q5*q6**2 - 3*q4**4*q2**2*q5*q6**2 - 3*q4**2*q3**4*q5*q6**2 + 3*q4**4*q3**2*q5*q6**2 + 1/3*q3**2*q2**4*q5**3 - 1/3*q4**2*q2**4*q5**3 - 1/3*q3**4*q2**2*q5**3 + 1/3*q4**4*q2**2*q5**3 + 1/3*q4**2 *q3**4*q5**3 - 1/3*q4**4*q3**2*q5**3}, {q1,q2,q3,q4,q5,q6}); {q1, 2 2 2 q2 + q3 + q4 , q2*q3*q4, 4 q2*q4 *q6, 3 3 q2*q4 *q5 + 3*q2*q4 *q6, 3 2 q2*q4 *q6 , 4 2 2 4 q3 + q3 *q4 + q4 , 3 3 q3 *q4 + q3*q4 , 2 2 q3 *q4 *q6, 2 2 2 2 q3 *q5 - 3*q3 *q6 - q4 *q5 - 3*q4 *q6, 2 2 2 2 q3 *q6 + q4 *q6 , 4 q3*q4 *q6, 3 q3*q4 *q5, 3 2 q3*q4 *q6 , 5 q4 , 4 4 q4 *q5 + q4 *q6, 4 2 q4 *q6 , 2 2 2 q4 *q5*q6 - q4 *q6 , 2 2 q5 + 3*q6 , 3 q6 } % Example 2. (Little) Trinks problem with 7 polynomials in 6 variables. trinkspolys := {45*p + 35*s - 165*b - 36, 35*p + 40*z + 25*t - 27*s, 15*w + 25*p*s + 30*z - 18*t - 165*b**2, - 9*w + 15*p*t + 20*z*s, w*p + 2*z*t - 11*b**3, 99*w - 11*s*b + 3*b**2, b**2 + 33/50*b + 2673/10000}; trinkspolys := { - 165*b + 45*p + 35*s - 36, 35*p - 27*s + 25*t + 40*z, 2 - 165*b + 25*p*s - 18*t + 15*w + 30*z, 15*p*t + 20*s*z - 9*w, 3 - 11*b + p*w + 2*t*z, 2 3*b - 11*b*s + 99*w, 2 10000*b + 6600*b + 2673 --------------------------} 10000 trinksvars := {w,p,z,t,s,b}; trinksvars := {w, p, z, t, s, b} groebner(trinkspolys,trinksvars); {60000*w + 9500*b + 3969, 1800*p - 3100*b - 1377, 18000*z + 24500*b + 10287, 750*t - 1850*b + 81, 200*s - 500*b - 9, 2 10000*b + 6600*b + 2673} groesolve(trinkspolys,trinksvars); - 148*sqrt(11)*i - 461 {{t=-------------------------, 500 190*sqrt(11)*i - 139 w=----------------------, 10000 490*sqrt(11)*i - 367 z=----------------------, 3000 - 62*sqrt(11)*i + 59 p=-----------------------, 300 3*( - 5*sqrt(11)*i - 13) s=--------------------------, 50 3*( - 4*sqrt(11)*i - 11) b=--------------------------}, 100 148*sqrt(11)*i - 461 {t=----------------------, 500 - 190*sqrt(11)*i - 139 w=-------------------------, 10000 - 490*sqrt(11)*i - 367 z=-------------------------, 3000 62*sqrt(11)*i + 59 p=--------------------, 300 3*(5*sqrt(11)*i - 13) s=-----------------------, 50 3*(4*sqrt(11)*i - 11) b=-----------------------}} 100 % Example 3. Hairer, Runge-Kutta 1, 6 polynomials 8 variables. groebnerf({c2 - a21, c3 - a31 - a32, b1 + b2 + b3 - 1, b2*c2 + b3*c3 - 1/2, b2*c2**2 + b3*c3**2 - 1/3, b3*a32*c2 - 1/6}, {c2,c3,b3,b2,b1,a21,a32,a31}); {{c2 - a21, c3 - a32 - a31, b3 + b2 + b1 - 1, 2 2 2 2 96*b2*b1*a31 - 96*b2*a31 + 96*b2*a31 - 32*b2 - 72*b1 *a32 *a31 2 2 2 2 2 2 3 - 48*b1 *a32 - 144*b1 *a32*a31 - 144*b1 *a32*a31 - 72*b1 *a31 2 2 2 + 198*b1*a32 *a31 + 60*b1*a32 + 396*b1*a32*a31 + 72*b1*a32*a31 3 2 - 144*b1*a32 + 198*b1*a31 - 108*b1*a31 - 24*b1*a31 2 2 - 81*a21*a32*a31 + 54*a21*a32 - 126*a32 *a31 - 12*a32 2 3 2 - 252*a32*a31 + 126*a32*a31 + 36*a32 - 126*a31 + 162*a31 - 30*a31 - 12, 2 8*b2*a21 - 8*b2*a31 + 6*b1*a32 + 12*b1*a32*a31 + 4*b1*a32 2 2 + 6*b1*a31 - 4*b1*a31 - 9*a21*a32 - 6*a32 - 12*a32*a31 + 8*a32 2 - 6*a31 + 10*a31 - 2, 2 2 8*b2*a32 + 6*b1*a32 + 12*b1*a32*a31 + 12*b1*a32 + 6*b1*a31 2 2 + 4*b1*a31 - 9*a21*a32 - 6*a32 - 12*a32*a31 - 6*a31 + 2*a31 + 2, 2 2 12*b1*a21*a32 - 6*b1*a32 - 12*b1*a32*a31 - 6*b1*a31 - 3*a21*a32 2 2 + 6*a32 + 12*a32*a31 - 6*a32 + 6*a31 - 6*a31 + 2, 2 2 4*b1*a21*a31 + 2*b1*a32 + 4*b1*a32*a31 + 2*b1*a31 - 3*a21*a32 2 2 - 4*a21*a31 + 2*a21 - 2*a32 - 4*a32*a31 + 4*a32 - 2*a31 + 4*a31 - 2, 3 2 2 3 6*b1*a32 + 18*b1*a32 *a31 + 18*b1*a32*a31 + 6*b1*a31 2 3 2 - 9*a21*a32 - 9*a21*a32*a31 + 6*a21*a32 - 6*a32 - 18*a32 *a31 2 2 3 2 + 12*a32 - 18*a32*a31 + 18*a32*a31 - 6*a32 - 6*a31 + 6*a31 - 2*a31, 2 2 2 3*a21 *a32 - 3*a21*a32 - a21*a31 + a32 + 2*a32*a31 + a31 }} % Example 4. torder gradlex; lex g4 := groebner({b + e + f - 1, c + d + 2*e - 3, b + d + 2*f - 1, a - b - c - d - e - f, d*e*a**2 - 1569/31250*b*c**3, c*f - 587/15625*b*d}); 5 g4 := {144534461790680056924571742971580442350868*f 4 - 644899801559202566371326081182412388593750*f 2 - 5642454222593591361522253644740080176968509*e*f 3 + 1026970650200404602876625225711718032483739*f + 60671378319336814425425106786936647125250*e*f 2 + 12135463840178290842421221291430776956948795*f + 82342665293813692270756265387326300721851*e - 6546572608747272255841866021042619274525791*f - 455593441982762135422235490670177670637, 3 4 8282838608877853969*e*f - 2667985333760708531*f 2 3 - 315490964385538173*e*f - 8319462093247392142*f 2 - 25594942638053*e*f + 318993777538462620*f + 33851175608089*e + 34163367871142*f - 8568425233089, 2 2 587*e - 46875*e*f + 15038*f - 587*e + 47462*f, a + 2*e - 4, b + e + f - 1, c + 3*e - f - 3, d - e + f} hilbertpolynomial(g4,gvarslast); 8 % gunivar(e,8,g4,gvarslast); glexconvert(g4,gvarslast,newvars={e},maxdeg=8); 8 7 {8724935291855297898986*e - 82886885272625330040367*e 6 5 + 304980377204235125220384*e - 524915947547338451201596*e 4 3 + 362375013966993813907616*e + 52719473339686639067952*e 2 - 154986762992209058701440*e + 27347344067139574366944*e + 430203494102932512} groebnerf({b + e + f - 1, c + d + 2*e - 3, b + d + 2*f - 1, a - b - c - d - e - f, d*e*a**2 - 1569/31250*b*c**3, c*f - 587/15625*b*d}); 5 {{144534461790680056924571742971580442350868*f 4 - 644899801559202566371326081182412388593750*f 2 - 5642454222593591361522253644740080176968509*e*f 3 + 1026970650200404602876625225711718032483739*f + 60671378319336814425425106786936647125250*e*f 2 + 12135463840178290842421221291430776956948795*f + 82342665293813692270756265387326300721851*e - 6546572608747272255841866021042619274525791*f - 455593441982762135422235490670177670637, 3 4 8282838608877853969*e*f - 2667985333760708531*f 2 3 - 315490964385538173*e*f - 8319462093247392142*f 2 - 25594942638053*e*f + 318993777538462620*f + 33851175608089*e + 34163367871142*f - 8568425233089, 2 2 587*e - 46875*e*f + 15038*f - 587*e + 47462*f, a + 2*e - 4, b + e + f - 1, c + 3*e - f - 3, d - e + f}} % Example 5. groesolve({u0**2 - u0 + 2*u1**2 + 2*u2**2 + 2*u3**2, 2*u0*u1 + 2*u1*u2 + 2*u2*u3 - u1, 2*u0*u2 + u1**2 + 2*u1*u3 - u2, u0 + 2*u1 + 2*u2 + 2*u3 - 1}, {u0,u2,u3,u1}); 1 1 {{u3=---,u0=---,u2=0,u1=0}, 3 3 {u3=0,u0=1,u2=0,u1=0}, 5 4 3 2 {u3=( - 35588322*u1 + 7102080*u1 + 3462372*u1 - 522672*u1 - 98665*u1 + 11905)/10987, 5 4 3 2 u0=(85796172*u1 - 47481552*u1 - 10265256*u1 + 4828462*u1 + 414200*u1 - 24707)/164805, 5 4 3 2 u2=(490926744*u1 - 82790424*u1 - 46802952*u1 + 5425849*u1 + 1108070*u1 - 83819)/164805, 6 5 4 3 2 u1=root_of(24948*u1_ - 8424*u1_ - 1908*u1_ + 736*u1_ + 24*u1_ - 18*u1_ + 1,u1_)}} % Example 6. (Big) Trinks problem with 6 polynomials in 6 variables. torder lex; gradlex btbas := groebner({45*p + 35*s - 165*b - 36, 35*p + 40*z + 25*t - 27*s, 15*w + 25*p*s + 30*z - 18*t - 165*b**2, -9*w + 15*p*t + 20*z*s, w*p + 2*z*t - 11*b**3, 99*w - 11*b*s + 3*b**2}, {w,p,z,t,s,b}); btbas := { 17766149161458472422166115589155691471353640232570952361584640 *w + 3032932981764169411024286535087872715152793150994240000000000000 9 *b + 11886822444254795859791802829918904596379497649520730600000000000 8 *b + 18842475008351431516615767365088235858572104823839818660000000000 7 *b + 18478618789454571665641479626067848900525899492180377333740000000 6 *b + 11752365113063961011548983119538614396423298749092231098450400000 5 *b + 5110161259755495688253057699488605142801193206234091633443430000 4 *b + 1496961750963944475883560598484727796781670457510019079125319720 3 *b + 288690575257721822668492218552623049380964882774348400629792405 2 *b + 36675221781192845731725910375461662443650512572339688148737880 *b + 1576363174251807401047861085627012261518448811764870474808048 , 1079293561558602199646591522041208256884733644128685355966266880 *p + 3268477702530974927415861070452491173139572636038856000000000000000 9 *b + 12885633343818230635528913313274512975854362843839764665000000000000 8 *b + 20548731096300848092222002490748474767709483225818633322500000000000 7 *b + 20182049540868333737979937480097593847242554499522522583343500000000 6 *b + 12840592651209104850152262711039251760751322701157046861979660000000 5 *b + 5569707184558884260455460870514004047533638259197462099687709750000 4 *b + 1626104523905067336734029117969017435050069455164231436772691393000 3 *b + 317837165064133808425156860561547977935248864650364953213370433325 2 *b + 38814916107963233682867824475195786374043607759221055124383464600 *b + 1271557117681971715777755868970298734422034654142333039426477936 , 79947671226563125899747520151200611621091381046569285627130880 *z - 207000360174268878618253807286221414267374039050881600000000000000 9 *b - 816930976846005632807581869594187232031930825060787069000000000000 8 *b - 1304191848597021137419209873493260430019068809677834324500000000000 7 *b - 1281648951757969533154633755921969360988365079018184794999100000000 6 *b - 816111850476984294981540451378918253659030380648143145999676000000 5 *b - 354123157925898223808181474698490366723104830470028121053590350000 4 *b - 103524414072393919562685172085266423030522292688870620316927889800 3 *b - 20314259597530323830287024948271996904872237353588201428371308545 2 *b - 2537917907646239051588678539186026277776904294491429226344955896 *b - 101754994043218022355542895254001231074817584410141704072917808 , 53964678077930109982329576102060412844236682206434267798313344 *t - 232158787821822686686268803096828213303267879649894080000000000000 9 *b - 914339994087255788035842922803409884324637299732580010200000000000 8 *b - 1456553024942306848445635398194494646048613632462079804220000000000 7 *b - 1429773468085320579659912540829309032262384742022357855878580000000 6 *b - 908944691139155009098308941935669674404431611232759364790656800000 5 *b - 394123305458525780887811122985868682566594060374758630590008810000 4 *b - 114919063563435384108358931167592408356874179358918284670595993240 3 *b - 22376181506466478409426169614162075694852682500804198791108921475 2 *b - 2945714266609139709176973289117451707834537151497408879223183208 *b - 127343046946408668687682889109197718306724189305639804298381200 , 23984301367968937769924256045360183486327414313970785688139264 *s - 93385077215170712211881744870071176375416361029681600000000000000 9 *b - 368160952680520875300826094664986085024410366966850419000000000000 8 *b - 587106602751452802634914356878527850505985235023389523500000000000 7 *b - 576629986881952392513712499431359824206930128557786359524100000000 6 *b - 366874075748831567147207506029692907450037791461629910342276000000 5 *b - 159134490987396693155870310586114401358103950262784631419648850000 4 *b - 46460129254430495335257974799114783858573413004692326764934039800 3 *b - 9081061858975251669290196016044227941007110418581855806096298095 2 *b - 1222066452390803097568723620648006189979646603457892421797898376 *b - 60999770483681527871286545331521866855137759127008037834271184 , 10 9 43808000000000000000*b + 189995300000000000000*b 8 7 + 343169730200000000000*b + 377900184178000000000*b 6 5 + 277427432368460000000*b + 141636786601439800000*b 4 3 + 50921375336016834000*b + 12792266529459977340*b 2 + 2215667232541084905*b + 237653554658069880*b + 8984801833047216} hilbertpolynomial(ws,gvarslast); 10 % end of the classical Groebner test series % Example of Groebner with numerical postprocessing on rounded; groesolve(trinkspolys,trinksvars); {{t= - 0.981721*i - 0.922, w=0.063015875*i - 0.0139, z=0.541715416667*i - 0.122333333333, p= - 0.685435833333*i + 0.196666666667, s= - 0.9949875*i - 0.78, b=-0.33 - 0.397995*i}, {t=0.981721*i - 0.922, w= - 0.063015875*i - 0.0139, z= - 0.541715416667*i - 0.122333333333, p=0.685435833333*i + 0.196666666667, s=0.9949875*i - 0.78, b=-0.33 + 0.397995*i}} off rounded; % additional groebner operators preduce(45*p + 35*s - 165*b - 36,btbas,{w,p,z,t,s,b}); 0 gsplit(2*u0*u2 + u1**2 + 2*u1*u3 - u2,{u0,u1,u2,u3}); 2 {2*u0*u2,u1 + 2*u1*u3 - u2} gsort(trinkspolys,trinksvars); 3 {w*p + 2*z*t - 11*b , 2 99*w - 11*s*b + 3*b , - 9*w + 15*p*t + 20*z*s, 2 15*w + 25*p*s + 30*z - 18*t - 165*b , 35*p + 40*z + 25*t - 27*s, 45*p + 35*s - 165*b - 36, 2 33 2673 b + ----*b + -------} 50 10000 gspoly(first trinkspolys, second trinkspolys,trinksvars); 360*z + 225*t - 488*s + 1155*b + 252 gvars(trinkspolys); {b,p,s,t,w,z} % tagged basis and reduction trace bas := groebner(trinkspolys,trinksvars)$ names := for i:= 1:length bas collect mkid(p,i); names := {p1, p2, p3, p4, p5, p6} taggedbas := for i:= 1:length bas collect part(names,i) = part(bas,i); taggedbas := {p1=9500*b + 60000*w + 3969, p2= - 3100*b + 1800*p - 1377, p3=24500*b + 18000*z + 10287, p4= - 1850*b + 750*t + 81, p5= - 500*b + 200*s - 9, 2 p6=10000*b + 6600*b + 2673} preducet(new=w*p + 2*z*t - 11*b**3,taggedbas,trinksvars); 0=9500*b*p2 + 392000*b*p4 + 118800*b*p6 + 108000000*new - 1800*p*p1 + 3969*p2 - 12000*p3*t + 164592*p4 - 2943*p6 % representing the basis as combination of the input polynomials groebnert({circle=x**2 + y**2 - r**2,line = a*x + b*y},{x,y}); { - a*x - b*y= - line, 2 2 2 2 2 2 (a + b )*y - a *r =a *circle - a*line*x + b*line*y} % dimension and independent sets % example from Jarmo Hietarinta eqsl:={ Q*AX - Q*LX - MX, - Q*GX + AX - LX, Q**2*BX + Q*CX - Q*JX - NX, Q*( - Q*AX + Q*LX + MX), Q*(Q*GX - AX + LX)}$ bas:= groebner(eqsl,{ax,bx,cx,gx,jx,lx,mx,nx,q}); bas := {ax - gx*q - lx, bx*mx + cx*gx*q - gx*jx*q - gx*nx, 2 bx*q + cx*q - jx*q - nx, 2 gx*q - mx} Gindependent_sets(bas,{ax,bx,cx,gx,jx,lx,mx,nx,q}); {{cx,jx,lx,mx,nx,q},{cx,gx,jx,lx,mx,nx},{bx,cx,gx,jx,lx,nx}} Gdimension(bas,{ax,bx,cx,gx,jx,lx,mx,nx,q}); 6 groesolve(bas,{ax,bx,cx,gx,jx,lx,mx,nx,q}); {{ax=gx*q + lx, - cx*q + jx*q + nx bx=---------------------, 2 q 2 mx=gx*q }, {ax=lx,mx=0,nx=0,q=0}} clear eqsl,bas; end; (TIME: groebner 13316 14816) End of Lisp run after 13.36+2.26 seconds