"数的运算"测试实例 数的算术运算(整数,分数,浮点数): ================================= >42384023234/23422; //化简 432490033/239 >iquo(42384023234,23422); 1809581 >irem(42384023234,23422); 17052 >2^10000; 混合运算: >245234523454353123-234534534342342.23423423*34233454354; - 8028927030610694830750765.84933742 指定浮点数的精度: >SetPrecision(1.2345678,5); 1.23457 >SetPrecision(0.00034234932423,5); 0.00034235 >SetPrecision(123.0078924679,5); 123.00789 注意: SetPrecision(f,d)返回一个新的浮点数,它保留f的小数点后d位有效数字。 生成素数表: =========== >primetable(); 该函数返回[1, MAXPRIME]内的所有奇素数的表。 素数表的上界MAXPRIME由程序中的宏指定,通常取上界为65536。 生成素数: ========= >primegen(1000000); 1000541 >nextprime(1000000); 1000003 >prevprime(1000000); 999983 >primegen(1234567890); 1234568827 >nextprime(1234567890); 1234567891 >primegen(10000000000); 10000000793 >nextprime(10000000000); 10000000019 >primegen(10000000000000000); 10000000000004579 >nextprime(10000000000000000); 10000000000000061 >primegen(7438750237508273048572834750); 7438750237508273048572838833 >nextprime(7438750237508273048572834750); 7438750237508273048572834799 >nextprime(1000000000); 1000000007 >prevprime(1000000000); 999999937 注意: primegen(TBigInt bn); 生成大于指定数bn的某个指定范围(该范围由程序中的宏指定)内的一个"随机"素数。 该算法通常用于生成大于素数表上界(65536)的素数,因为小于素数表上界的素数可 直接在素数表中得到,即:primegen(bn) > 65536 nextprime(TBigInt bn):生成指定数bn的下一个素数。 prevprime(TBigInt bn):生成指定数bn的前一个素数。(bn < 2^32) 素数检验: ======== >isprime(863148947551509220928522167); 1 //是素数 >isprime(144927536233); 1 //是素数 >isprime(7438750237508273048572839409); 1 //是素数 >isprime(4153739648461628337143836935446116357); 0 //不是素数 素数分解: ======== >ifactor(1000000); [2,6,5,6] >ifactor(223092870); [2,1,3,1,5,1,7,1,11,1,13,1,17,1,19,1,23,1] >ifactor(29566148020502835); [3,1,5,1,7,1,65551,1,65543,1,65539,1] >ifactor(4153739648461628337143836935446116357); [5490517,3,158416267,2] >ifactor(120941505518150933290556893886697069182713526687); [1000003,2,11146987,1,2876551,3,455825939,1] >ifactor(348123947210392342302342374); [2,1,11909,1,11146987,1,2876551,1,455825939,1] >ifactor(3264123764912374639287462138746882); [2,1,11,1,19,1,83,1,109,1,863148947551509220928522167,1] >ifactor(2048701579966097269575); [3,1,5,2,23,3,11909,1,65537,1,2876551,1] >ifactor(14616046333958937504381949829); [1000003,1,11146987,1,2876551,1,455825939,1] >ifactor(137788442423639097914413); [5490517,1,158416267,2] >ifactor(3475234785728475824500); [2,2,5,3,61,1,131,1,5490517,1,158416267,1] 最大公因子: ========== >igcd(59759821449735512944,40967491029104); 412342768 >a:=67936132211740542899654786013974002719008747564650375881459612567949; >b:=149317507337279410597748726442677210541619469904891813839581127; >igcd(a,b); 78707310487320487238471208741028734128347 有限域上数的运算: ================ 算术运算: >imod_prod(32423422141412,1234216868762348,53); 16 >imod_exp(2,1000000000000,53); 46 有限域上的平方根: >imod_sqrt(1,7); 1 >imod_sqrt(4,5); No solution >imod_sqrt(4,7); 2 >imod_sqrt(12,13); 8 >imod_sqrt(3,17); No solution 中国剩余定理: >chrem([3,5,7],[1,2,4]); 67 >chrem([3,5,7],[1,4,4]); 4 >chrem([3,5,7],[1,0,3]); 10 >chrem([3,5,7,11],[1,0,2,1]); 100 >chrem([3,5,7,11,13],[1,0,5,8,3]); 250 >chrem([5,7,11],[4236342344762197,2342341234234223423,142342314134234]); 82 注意:chrem(list1,list2)中list1是一个两两互素的整数表,list2是一个整数表。 逆元: >imod_inv(34141234123897857925345234,23); 19 >imod_inv(104371083471024712347102834710234324,144927536233); 59192554942 有限域上数的两种表示: >imod(341414124124,29); 25 >imod0(341414124124,29); -4 其它函数: ========= >ifactorial(1000); //阶乘 数的取整: >ceil(837401273401834710298472313424.9123414134); 837401273401834710298472313425 >floor(837401273401834710298472313424.9123414134); 837401273401834710298472313424 >ceil(18374018273401827340182740217840130/1347120347098347012); 13639477952343946 >floor(18374018273401827340182740217840130/1347120347098347012); 13639477952343945 对数,平方根: >isqrt(834702134701238740283740238740238740234702834702347223); 913620344947089463775536168 >ilog2(234712387401274021384701237401238470123874012384); 157 >ilog10(234712387401274021384701237401238470123874012384); 47 随机数生成: >random(1000); //随机生成十进制1000位的大整数 ###########多项式的运算 >f1=(73*x^2+3*y^2*z+z^2)^7*((79*u^2-8*v*w+3*u^3+67*v)^2)*(x+y); f1=(z^2+73*x^2+3*y^2*z)^7*(79*u^2+67*v+-8*v*w+3*u^3)^2*(y+x) >f2=((68*x^2+3*y^2*z+z^2)*x^3*y^2)*f1*(x-y); f2=x^3*(z^2+68*x^2+3*y^2*z)*(z^2+73*x^2+3*y^2*z)^7*(79*u^2+67*v+-8*v*w+3*u^3)^2* (y+x)*(-y+x) >g1=(73*x^2+3*y^2*z+z^2)*((79*u^2-8*v*w+3*u^3+67*v)); g1=(z^2+73*x^2+3*y^2*z)*(79*u^2+67*v+-8*v*w+3*u^3) >g2=(73*x^2+3*y^2*z+z^2)*((78*y*z+3*z^3)^3); g2=(73*x^2+3*y^2*z+z^2)*((78*y*z+3*z^3)^3); >expand(f1*f2); 68*x^8+68*y*x^7+3*z*y^2*x^6-68*y^2*x^6+z^2*x^6+3*z*y^3*x^5-68*y^3*x^5+z^2*y*x^5- 3*z*y^4*x^4-z^2*y^2*x^4-3*z*y^5*x^3-z^2*y^3*x^3 >coeff(f1,x,2); 3352671*u^6*z^6*y^13+176574006*u^5*z^6*y^13+2324891079*u^4*z^6*y^13-17880912*w*v *u^3*z^6*y^13+149752638*v*u^3*z^6*y^13-470864016*w*v*u^2*z^6*y^13+3943486134*v*u ^2*z^6*y^13+23841216*w^2*v^2*z^6*y^13-399340368*w*v^2*z^6*y^13+1672237791*v^2*z^ 6*y^13+6705342*u^6*z^7*y^11+353148012*u^5*z^7*y^11+4649782158*u^4*z^7*y^11-35761 824*w*v*u^3*z^7*y^11+299505276*v*u^3*z^7*y^11-941728032*w*v*u^2*z^7*y^11+7886972 268*v*u^2*z^7*y^11+47682432*w^2*v^2*z^7*y^11-798680736*w*v^2*z^7*y^11+3344475582 *v^2*z^7*y^11+5587785*u^6*z^8*y^9+294290010*u^5*z^8*y^9+3874818465*u^4*z^8*y^9-2 9801520*w*v*u^3*z^8*y^9+249587730*v*u^3*z^8*y^9-784773360*w*v*u^2*z^8*y^9+657247 6890*v*u^2*z^8*y^9+39735360*w^2*v^2*z^8*y^9-665567280*w*v^2*z^8*y^9+2787062985*v ^2*z^8*y^9+2483460*u^6*z^9*y^7+130795560*u^5*z^9*y^7+1722141540*u^4*z^9*y^7-1324 5120*w*v*u^3*z^9*y^7+110927880*v*u^3*z^9*y^7-348788160*w*v*u^2*z^9*y^7+292110084 0*v*u^2*z^9*y^7+17660160*w^2*v^2*z^9*y^7-295807680*w*v^2*z^9*y^7+1238694660*v^2* z^9*y^7+620865*u^6*z^10*y^5+32698890*u^5*z^10*y^5+430535385*u^4*z^10*y^5-3311280 *w*v*u^3*z^10*y^5+27731970*v*u^3*z^10*y^5-87197040*w*v*u^2*z^10*y^5+730275210*v* u^2*z^10*y^5+4415040*w^2*v^2*z^10*y^5-73951920*w*v^2*z^10*y^5+309673665*v^2*z^10 *y^5+82782*u^6*z^11*y^3+4359852*u^5*z^11*y^3+57404718*u^4*z^11*y^3-441504*w*v*u^ 3*z^11*y^3+3697596*v*u^3*z^11*y^3-11626272*w*v*u^2*z^11*y^3+97370028*v*u^2*z^11* y^3+588672*w^2*v^2*z^11*y^3-9860256*w*v^2*z^11*y^3+41289822*v^2*z^11*y^3+4599*u^ 6*z^12*y+242214*u^5*z^12*y+3189151*u^4*z^12*y-24528*w*v*u^3*z^12*y+205422*v*u^3* z^12*y-645904*w*v*u^2*z^12*y+5409446*v*u^2*z^12*y+32704*w^2*v^2*z^12*y-547792*w* v^2*z^12*y+2293879*v^2*z^12*y >degree(f1,u); 6 >primitive(g1); 219*u^3*x^2+5767*u^2*x^2-584*w*v*x^2+4891*v*x^2+9*u^3*z*y^2+237*u^2*z*y^2-24*w*v *z*y^2+201*v*z*y^2+3*u^3*z^2+79*u^2*z^2-8*w*v*z^2+67*v*z^2 >lead_term(g1,[x,y,z]); 219*u^3*x^2+5767*u^2*x^2-584*w*v*x^2+4891*v*x^2 >pprem(f2,f1,z); 0 >get_var_list(g1); [x,u,v,w,y,z] >substitute(f1,x,0); 19683*u^6*z^7*y^15+1036638*u^5*z^7*y^15+13649067*u^4*z^7*y^15-104976*w*v*u^3*z^7 *y^15+879174*v*u^3*z^7*y^15-2764368*w*v*u^2*z^7*y^15+23151582*v*u^2*z^7*y^15+139 968*w^2*v^2*z^7*y^15-2344464*w*v^2*z^7*y^15+9817443*v^2*z^7*y^15+45927*u^6*z^8*y ^13+2418822*u^5*z^8*y^13+31847823*u^4*z^8*y^13-244944*w*v*u^3*z^8*y^13+2051406*v *u^3*z^8*y^13-6450192*w*v*u^2*z^8*y^13+54020358*v*u^2*z^8*y^13+326592*w^2*v^2*z^ 8*y^13-5470416*w*v^2*z^8*y^13+22907367*v^2*z^8*y^13+45927*u^6*z^9*y^11+2418822*u ^5*z^9*y^11+31847823*u^4*z^9*y^11-244944*w*v*u^3*z^9*y^11+2051406*v*u^3*z^9*y^11 -6450192*w*v*u^2*z^9*y^11+54020358*v*u^2*z^9*y^11+326592*w^2*v^2*z^9*y^11-547041 6*w*v^2*z^9*y^11+22907367*v^2*z^9*y^11+25515*u^6*z^10*y^9+1343790*u^5*z^10*y^9+1 7693235*u^4*z^10*y^9-136080*w*v*u^3*z^10*y^9+1139670*v*u^3*z^10*y^9-3583440*w*v* u^2*z^10*y^9+30011310*v*u^2*z^10*y^9+181440*w^2*v^2*z^10*y^9-3039120*w*v^2*z^10* y^9+12726315*v^2*z^10*y^9+8505*u^6*z^11*y^7+447930*u^5*z^11*y^7+5897745*u^4*z^11 *y^7-45360*w*v*u^3*z^11*y^7+379890*v*u^3*z^11*y^7-1194480*w*v*u^2*z^11*y^7+10003 770*v*u^2*z^11*y^7+60480*w^2*v^2*z^11*y^7-1013040*w*v^2*z^11*y^7+4242105*v^2*z^1 1*y^7+1701*u^6*z^12*y^5+89586*u^5*z^12*y^5+1179549*u^4*z^12*y^5-9072*w*v*u^3*z^1 2*y^5+75978*v*u^3*z^12*y^5-238896*w*v*u^2*z^12*y^5+2000754*v*u^2*z^12*y^5+12096* w^2*v^2*z^12*y^5-202608*w*v^2*z^12*y^5+848421*v^2*z^12*y^5+189*u^6*z^13*y^3+9954 *u^5*z^13*y^3+131061*u^4*z^13*y^3-1008*w*v*u^3*z^13*y^3+8442*v*u^3*z^13*y^3-2654 4*w*v*u^2*z^13*y^3+222306*v*u^2*z^13*y^3+1344*w^2*v^2*z^13*y^3-22512*w*v^2*z^13* y^3+94269*v^2*z^13*y^3+9*u^6*z^14*y+474*u^5*z^14*y+6241*u^4*z^14*y-48*w*v*u^3*z^ 14*y+402*v*u^3*z^14*y-1264*w*v*u^2*z^14*y+10586*v*u^2*z^14*y+64*w^2*v^2*z^14*y-1 072*w*v^2*z^14*y+4489*v^2*z^14*y >gcd(g1,g2); 73*x^2+3*z*y^2+z^2 >f1; (z^2+73*x^2+3*y^2*z)^7*(79*u^2+67*v+-8*v*w+3*u^3)^2*(y+x) >f2; x^3*(z^2+68*x^2+3*y^2*z)*(z^2+73*x^2+3*y^2*z)^7*(79*u^2+67*v+-8*v*w+3*u^3)^2*(y+ x)*(-y+x) >factor(gcd(f1,f2)); [[1],1,[x+y],1,[73*x^2+3*z*y^2+z^2],7,[3*u^3+79*u^2-8*w*v+67*v],2] >squarefree(f1); [1,1,x+y,1,73*x^2+3*z*y^2+z^2,7,3*u^3+79*u^2-8*w*v+67*v,2] >factor(g1); [[1],1,[73*x^2+3*z*y^2+z^2],1,[3*u^3+79*u^2-8*w*v+67*v],1] >factor(g2); [[27],1,[z],3,[26*y+z^2],3,[73*x^2+3*z*y^2+z^2],1] >gcd(g1,g2); 73*x^2+3*z*y^2+z^2 >pmod_gcd(g1,g2,13); x^2+2*z*y^2+5*z^2 >pmod_gcd(g1,g2,7); x^2+z*y^2+5*z^2 >pmod_factor(g1,11); [u^3*x^2+8*u^2*x^2+w*v*x^2+4*v*x^2+2*u^3*z*y^2+5*u^2*z*y^2+2*w*v*z*y^2+8*v*z*y^2 +8*u^3*z^2+9*u^2*z^2+8*w*v*z^2+10*v*z^2] >resultant(g1,g2,x); SR1=[219*u^3*x^2+5767*u^2*x^2-584*w*v*x^2+4891*v*x^2+9*u^3*z*y^2+237*u^2*z*y^2-2 4*w*v*z*y^2+201*v*z*y^2+3*u^3*z^2+79*u^2*z^2-8*w*v*z^2+67*v*z^2,34642296*z^3*y^3 *x^2+3997188*z^5*y^2*x^2+153738*z^7*y*x^2+1971*z^9*x^2+1423656*z^4*y^5+164268*z^ 6*y^4+6318*z^8*y^3+474552*z^5*y^3+81*z^10*y^2+54756*z^7*y^2+2106*z^9*y+27*z^11] 0 >derivative(g1,y); 18*u^3*z*y+474*u^2*z*y-48*w*v*z*y+402*v*z*y >f1=(73*x^2+3*y^2*z+z^2)^7*((79*u^2-8*v*w+3*u^3+67*v)^2)*(x+y); f1=(z^2+73*x^2+3*y^2*z)^7*(79*u^2+67*v+-8*v*w+3*u^3)^2*(y+x) >f2=((68*x^2+3*y^2*z+z^2)*x^3*y^2)*f1*(x-y); f2=x^3*(z^2+68*x^2+3*y^2*z)*(z^2+73*x^2+3*y^2*z)^7*(79*u^2+67*v+-8*v*w+3*u^3)^2* (y+x)*(-y+x) >g1=(73*x^2+3*y^2*z+z^2)*((79*u^2-8*v*w+3*u^3+67*v)); g1=(z^2+73*x^2+3*y^2*z)*(79*u^2+67*v+-8*v*w+3*u^3) >g2=(73*x^2+3*y^2*z+z^2)*((78*y*z+3*z^3)^3); g2=(73*x^2+3*y^2*z+z^2)*((78*y*z+3*z^3)^3); >expand(f1*f2); 68*x^8+68*y*x^7+3*z*y^2*x^6-68*y^2*x^6+z^2*x^6+3*z*y^3*x^5-68*y^3*x^5+z^2*y*x^5- 3*z*y^4*x^4-z^2*y^2*x^4-3*z*y^5*x^3-z^2*y^3*x^3 >coeff(f1,x,2); 3352671*u^6*z^6*y^13+176574006*u^5*z^6*y^13+2324891079*u^4*z^6*y^13-17880912*w*v *u^3*z^6*y^13+149752638*v*u^3*z^6*y^13-470864016*w*v*u^2*z^6*y^13+3943486134*v*u ^2*z^6*y^13+23841216*w^2*v^2*z^6*y^13-399340368*w*v^2*z^6*y^13+1672237791*v^2*z^ 6*y^13+6705342*u^6*z^7*y^11+353148012*u^5*z^7*y^11+4649782158*u^4*z^7*y^11-35761 824*w*v*u^3*z^7*y^11+299505276*v*u^3*z^7*y^11-941728032*w*v*u^2*z^7*y^11+7886972 268*v*u^2*z^7*y^11+47682432*w^2*v^2*z^7*y^11-798680736*w*v^2*z^7*y^11+3344475582 *v^2*z^7*y^11+5587785*u^6*z^8*y^9+294290010*u^5*z^8*y^9+3874818465*u^4*z^8*y^9-2 9801520*w*v*u^3*z^8*y^9+249587730*v*u^3*z^8*y^9-784773360*w*v*u^2*z^8*y^9+657247 6890*v*u^2*z^8*y^9+39735360*w^2*v^2*z^8*y^9-665567280*w*v^2*z^8*y^9+2787062985*v ^2*z^8*y^9+2483460*u^6*z^9*y^7+130795560*u^5*z^9*y^7+1722141540*u^4*z^9*y^7-1324 5120*w*v*u^3*z^9*y^7+110927880*v*u^3*z^9*y^7-348788160*w*v*u^2*z^9*y^7+292110084 0*v*u^2*z^9*y^7+17660160*w^2*v^2*z^9*y^7-295807680*w*v^2*z^9*y^7+1238694660*v^2* z^9*y^7+620865*u^6*z^10*y^5+32698890*u^5*z^10*y^5+430535385*u^4*z^10*y^5-3311280 *w*v*u^3*z^10*y^5+27731970*v*u^3*z^10*y^5-87197040*w*v*u^2*z^10*y^5+730275210*v* u^2*z^10*y^5+4415040*w^2*v^2*z^10*y^5-73951920*w*v^2*z^10*y^5+309673665*v^2*z^10 *y^5+82782*u^6*z^11*y^3+4359852*u^5*z^11*y^3+57404718*u^4*z^11*y^3-441504*w*v*u^ 3*z^11*y^3+3697596*v*u^3*z^11*y^3-11626272*w*v*u^2*z^11*y^3+97370028*v*u^2*z^11* y^3+588672*w^2*v^2*z^11*y^3-9860256*w*v^2*z^11*y^3+41289822*v^2*z^11*y^3+4599*u^ 6*z^12*y+242214*u^5*z^12*y+3189151*u^4*z^12*y-24528*w*v*u^3*z^12*y+205422*v*u^3* z^12*y-645904*w*v*u^2*z^12*y+5409446*v*u^2*z^12*y+32704*w^2*v^2*z^12*y-547792*w* v^2*z^12*y+2293879*v^2*z^12*y >degree(f1,u); 6 >primitive(g1); 219*u^3*x^2+5767*u^2*x^2-584*w*v*x^2+4891*v*x^2+9*u^3*z*y^2+237*u^2*z*y^2-24*w*v *z*y^2+201*v*z*y^2+3*u^3*z^2+79*u^2*z^2-8*w*v*z^2+67*v*z^2 >lead_term(g1,[x,y,z]); 219*u^3*x^2+5767*u^2*x^2-584*w*v*x^2+4891*v*x^2 >pprem(f2,f1,z); 0 >get_var_list(g1); [x,u,v,w,y,z] >substitute(f1,x,0); 19683*u^6*z^7*y^15+1036638*u^5*z^7*y^15+13649067*u^4*z^7*y^15-104976*w*v*u^3*z^7 *y^15+879174*v*u^3*z^7*y^15-2764368*w*v*u^2*z^7*y^15+23151582*v*u^2*z^7*y^15+139 968*w^2*v^2*z^7*y^15-2344464*w*v^2*z^7*y^15+9817443*v^2*z^7*y^15+45927*u^6*z^8*y ^13+2418822*u^5*z^8*y^13+31847823*u^4*z^8*y^13-244944*w*v*u^3*z^8*y^13+2051406*v *u^3*z^8*y^13-6450192*w*v*u^2*z^8*y^13+54020358*v*u^2*z^8*y^13+326592*w^2*v^2*z^ 8*y^13-5470416*w*v^2*z^8*y^13+22907367*v^2*z^8*y^13+45927*u^6*z^9*y^11+2418822*u ^5*z^9*y^11+31847823*u^4*z^9*y^11-244944*w*v*u^3*z^9*y^11+2051406*v*u^3*z^9*y^11 -6450192*w*v*u^2*z^9*y^11+54020358*v*u^2*z^9*y^11+326592*w^2*v^2*z^9*y^11-547041 6*w*v^2*z^9*y^11+22907367*v^2*z^9*y^11+25515*u^6*z^10*y^9+1343790*u^5*z^10*y^9+1 7693235*u^4*z^10*y^9-136080*w*v*u^3*z^10*y^9+1139670*v*u^3*z^10*y^9-3583440*w*v* u^2*z^10*y^9+30011310*v*u^2*z^10*y^9+181440*w^2*v^2*z^10*y^9-3039120*w*v^2*z^10* y^9+12726315*v^2*z^10*y^9+8505*u^6*z^11*y^7+447930*u^5*z^11*y^7+5897745*u^4*z^11 *y^7-45360*w*v*u^3*z^11*y^7+379890*v*u^3*z^11*y^7-1194480*w*v*u^2*z^11*y^7+10003 770*v*u^2*z^11*y^7+60480*w^2*v^2*z^11*y^7-1013040*w*v^2*z^11*y^7+4242105*v^2*z^1 1*y^7+1701*u^6*z^12*y^5+89586*u^5*z^12*y^5+1179549*u^4*z^12*y^5-9072*w*v*u^3*z^1 2*y^5+75978*v*u^3*z^12*y^5-238896*w*v*u^2*z^12*y^5+2000754*v*u^2*z^12*y^5+12096* w^2*v^2*z^12*y^5-202608*w*v^2*z^12*y^5+848421*v^2*z^12*y^5+189*u^6*z^13*y^3+9954 *u^5*z^13*y^3+131061*u^4*z^13*y^3-1008*w*v*u^3*z^13*y^3+8442*v*u^3*z^13*y^3-2654 4*w*v*u^2*z^13*y^3+222306*v*u^2*z^13*y^3+1344*w^2*v^2*z^13*y^3-22512*w*v^2*z^13* y^3+94269*v^2*z^13*y^3+9*u^6*z^14*y+474*u^5*z^14*y+6241*u^4*z^14*y-48*w*v*u^3*z^ 14*y+402*v*u^3*z^14*y-1264*w*v*u^2*z^14*y+10586*v*u^2*z^14*y+64*w^2*v^2*z^14*y-1 072*w*v^2*z^14*y+4489*v^2*z^14*y >gcd(g1,g2); 73*x^2+3*z*y^2+z^2 >f1; (z^2+73*x^2+3*y^2*z)^7*(79*u^2+67*v+-8*v*w+3*u^3)^2*(y+x) >f2; x^3*(z^2+68*x^2+3*y^2*z)*(z^2+73*x^2+3*y^2*z)^7*(79*u^2+67*v+-8*v*w+3*u^3)^2*(y+ x)*(-y+x) >factor(gcd(f1,f2)); [[1],1,[x+y],1,[73*x^2+3*z*y^2+z^2],7,[3*u^3+79*u^2-8*w*v+67*v],2] >squarefree(f1); [1,1,x+y,1,73*x^2+3*z*y^2+z^2,7,3*u^3+79*u^2-8*w*v+67*v,2] >factor(g1); [[1],1,[73*x^2+3*z*y^2+z^2],1,[3*u^3+79*u^2-8*w*v+67*v],1] >factor(g2); [[27],1,[z],3,[26*y+z^2],3,[73*x^2+3*z*y^2+z^2],1] >gcd(g1,g2); 73*x^2+3*z*y^2+z^2 >pmod_gcd(g1,g2,13); x^2+2*z*y^2+5*z^2 >pmod_gcd(g1,g2,7); x^2+z*y^2+5*z^2 >pmod_factor(g1,11); [u^3*x^2+8*u^2*x^2+w*v*x^2+4*v*x^2+2*u^3*z*y^2+5*u^2*z*y^2+2*w*v*z*y^2+8*v*z*y^2 +8*u^3*z^2+9*u^2*z^2+8*w*v*z^2+10*v*z^2] >resultant(g1,g2,x); SR1=[219*u^3*x^2+5767*u^2*x^2-584*w*v*x^2+4891*v*x^2+9*u^3*z*y^2+237*u^2*z*y^2-2 4*w*v*z*y^2+201*v*z*y^2+3*u^3*z^2+79*u^2*z^2-8*w*v*z^2+67*v*z^2,34642296*z^3*y^3 *x^2+3997188*z^5*y^2*x^2+153738*z^7*y*x^2+1971*z^9*x^2+1423656*z^4*y^5+164268*z^ 6*y^4+6318*z^8*y^3+474552*z^5*y^3+81*z^10*y^2+54756*z^7*y^2+2106*z^9*y+27*z^11] 0 >derivative(g1,y); 18*u^3*z*y+474*u^2*z*y-48*w*v*z*y+402*v*z*y ************************ ****Groebner basis ************************* gb([ x3+x2+x1, x3*x2+x2*x1+x1*x3, x3*x2*x1-1]); gbs([ x3+x2+x1, x3*x2+x2*x1+x1*x3, x3*x2*x1-1]); gb([ x3+x2+x1, x3*x2+x2*x1+x1*x3, x3*x2*x1-1],1); gbs([ x3+x2+x1, x3*x2+x2*x1+x1*x3, x3*x2*x1-1],1); gbs([ x4+x3+x2+x1, x4*x3+x3*x2+x2*x1+x1*x4, x4*x3*x2+x3*x2*x1+x2*x1*x4+x1*x3*x4, x4*x3*x2*x1-1]); gbs([ x4+x3+x2+x1, x4*x3+x3*x2+x2*x1+x1*x4, x4*x3*x2+x3*x2*x1+x2*x1*x4+x1*x3*x4, x4*x3*x2*x1-1],1); *************************** **** Geometry package *************************** ** Example 1: natrual languages geomtocs geomtopd ndg wderive wprove geom("Example Centroid. Let ABC be a triangle. D is the midpoint of BC. E is the midpoint of AC. G is the intersection of line DA and line EB. F is the intersection of lines CG and AB. Show that F is the midpoint of AB."); geom geomtocs geomtopd ndg wderive wprove ("Example Simson. Let D be a point on the circumcircle O of the triangle ABC. E is the foot from point D to line AB. F is the foot from point D to line BC. G is the foot from point D to line AC. Show that points E, F, and G are collinear."); geom geomtocs geomtopd ndg wderive wprove ("Example Gauss. A1A2A3A4 is a quadrilateral. M1 is the midpoint of A1A3. M2 is the midpoint of A2A4. X is the intersection of the diagonals A1A2 and A3A4. Y is the intersection of the diagonals A1A4 and A2A3. M3 is the midpoint of XY. Show that M1, M2, and M3 are collinear."); ** example 2: constructive form geom([ geomtopd([ geomtocs([ wprove([ ndg([ wprove([ [[POINT,A,B,C], [MIDPOINT,D,B,C], [MIDPOINT,E,A,C], [INTER,G,[LINE,A,D],[LINE,B,E]], [INTER,F,[LINE,A,B],[LINE,C,G]]], [[MIDPOINT,F,A,B]]]); geom([ geomtopd([ geomtocs([ wprove([ ndg([ wprove([ [[POINT,A,B,A1,B1], [ON,C,[LINE,A,B]], [ON,C1,[LINE,A1,B1]], [INTER,P,[LINE,A,B1],[LINE,A1,B]], [INTER,Q,[LINE,A,C1],[LINE,A1,C]], [INTER,R,[LINE,B,C1],[LINE,B1,C]]], [[coll,P,Q,R]]]); ** Example 3: preducate form geom([ geomtopd([ geomtocs([ wprove([ ndg([ wprove([ [y_F,x_F,y_G,x_G,y_E,x_E,y_D,x_D,v_C,u_C,v_B,u_B,v_A,u_A],[], [A,[0,0],B,[0,v_B],C,[u_C,v_C],D,[x_D,y_D],E,[x_E,y_E],G,[x_G,y_G],F,[x_F,y_F]], [[POINT,A,B,C], [MIDPOINT,D,B,C],[MIDPOINT,E,A,C], [coll,G,A,D],[coll,G,B,E], [coll,F,A,B],[coll,F,C,G]], [[para,A,D,B,E],[para,A,B,C,G]], [[MIDPOINT,F,A,B]]]); ** Example 4: Algebraic form wprove( [[y_F,x_F,y_G,x_G,y_E,x_E,y_D,x_D,v_C,u_C,v_B,u_B,v_A,u_A],[], [2*x_D-u_C,2*y_D-v_C-v_B,2*x_E-u_C,2*y_E-v_C, x_D*y_G-y_D*x_G, x_E*y_G-y_E*x_G+v_B*x_G-v_B*x_E, -v_B*x_F, x_G*y_F-u_C*y_F-y_G*x_F+v_C*x_F+u_C*y_G-v_C*x_G], [x_D*y_E-y_D*x_E-v_B*x_D,-v_B*x_G+v_B*u_C], [2*x_F,2*y_F-v_B]]); ** example 5: wderive wderive( [[x2,x1,k],[a,b,c], [b1,[0,0], c1,[a,0], a1, [x1,x2]], [[dis, a1, c1, b], [dis, a1, b1, c], [area, k, a1, b1, c1]], [], []]); Example 6: Wronskian ## (x,y,z) is on a plane depend([x,y,z],[t]); wronskian([1,x,y,z],t); > z[3]*y[2]*x[1]-y[3]*z[2]*x[1]-z[3]*y[1]*x[2]+y[3]*z[1]*x[2]+x[3]*z[2]*y[1]-x[3]*z[1]*y[2] ## (x,y) is on a circle wronskian([1,x,y,x^2+y^2],t); ## (x,y,z) is on a sphere wronskian([1,x,y,z,x^2+y^2+z^2],t); ## x*y^2 is on a constant wronskian([1,x*y^2],t); Example 7. wdprove. ## Kepler's laws imply Newton'w law depend([a,r,y,x],[t]); wdprove( [[a,r,y,x,p,e],[],[], [r^2-x^2-y^2, a^2-diff(x,t,2)^2-diff(y,t,2)^2, x* diff(y,t,2) - diff(x,t,2)*y, r - p - e * x], [p], [diff(a*r^2,t)]]); depend([a,r,x,y],[t]); wdprove( [[a,r,y,x],[],[], [r^2-x^2-y^2, a^2-diff(x,t,2)^2-diff(y,t,2)^2, x* diff(y,t,2) - diff(x,t,2)*y, diff(a*r^2,t)], [a], [wronskian([1,x,y,r],t)]]); Example 9. prove_curve ## C is a curve iff t=k'=0. curve(); wprove_curve([[],[],[],[z,[XY_CIRCLE,C]],[],[t,diff(k,s)]]); curve(); wprove_curve([[],[],[],[t,diff(k,s)],[],[[FIX_PLANE,C],[FIX_SPHERE,C]]]); ######################################################################3 ###################################################################### #特征列和零点分解范例 ######################################################################3 # cycle problem for n=4; f1:=x1+x2+x3+x4; f2:=x1*x2+x2*x3+x3*x4+x4*x1; f3:=x1*x2*x3+x2*x3*x4+x3*x4*x1+x4*x1*x2; f4:=x1*x2*x3*x4-1; ps1:=[f1,f2,f3,f4]; ord1:=[x4,x3,x2,x1]; cs1:=wsolve(ps1,ord1); #ps2 is the cycle problem for n=5. f1:=x1+x2+x3+x4+x5; f2:=x1*x2+x2*x3+x3*x4+x4*x5+x5*x1; f3:=x1*x2*x3+x2*x3*x4+x3*x4*x5+x4*x5*x1+x5*x1*x2; f4:=x1*x2*x3*x4+x2*x3*x4*x5+x3*x4*x5*x1+x4*x5*x1*x2+x5*x1*x2*x3; f5:=x1*x2*x3*x4*x5-1; ps2:=[f1,f2,f3,f4,f5]; ord2:=[x5,x4,x3,x2,x1]; cs2:=wsolve(ps2,ord2); #ps3 is the neural network problem. p1:=1-c*x+x*y^2+x*z^2; p2:=1-c*y+y*x^2+y*z^2; p3:=1-c*z+z*x^2+z*y^2; ps3:=[p1,p2,p3]; ord3:=[z,y,x,c]; nzero3:=[]; cs3:=wsolve(ps3,ord3,nzero3,"ritt"); #K(a,b) p1:=2*y^2*(y^2+x^2)+(b^2-3*a^2)*y^2-2*b*y^2*(y+x)+2*a^2*b*(y+x)-a^2*x^2+a^2*(a^2-b^2); p2:=4*y^3+4*y*(y^2+x^2)-2*b*y^2-4*b*y*(y+x)+2*(b^2-3*a^2)*y+2*a^2*b; p3:=4*x*y^2-2*b*y^2-2*a^2*x+2*a^2*b; ps4:=[p1,p2,p3]; ord4:=[y,x]; cs4:=wsolve(ps4,ord4); #thesis p109; p1:=x^2*y*z+x*y^2*z+x*y*z^2+x*y*z+x*y+x*z+z*x; p2:=x^2*y^2*z+x*y^2*z^2+x^2*y*z+x*y*z+y*z+z+x; p3:=x^2*y^2*z^2+x^2*y^2*z+x^2*y^2*z+x*y^2*z+x*y*z+x*z+z+1; ps5:=[p1,p2,p3]; ord5:=[z,y,x]; cs5:=wsolve(ps5,ord5,[],"ritt"); #Geodesy K(c1,c2,c3,c4) p102; p1:=x1+b^2*x1*x4-c1; p2:=x2+b^2*x2*x4-c2; p3:=x3+a^2*x3*x4-c3; p4:=b^2*x1^2+b^2*x2^2+a^2*x3^2-a^2*b^2; ps6:=[p1,p2,p3,p4]; ord6:=[x4,x3,x2,x1,b,a]; cs6:=wsolve(ps6,ord6); #gao p1:=x4-a4+a2; p2:=x4+x3+x2+x1-a4-a3-a1; p3:=x3*x4+x1*x4+x2*x3+x1*x3+(-a3-a1)*a4-a1*a3; p4:=x1*x3*x4-a1*a3*a4; ps7:=[p1,p2,p3,p4]; ord7:=[x4,x3,x2,x1]; cs7:=wsolve(ps7,ord7); ###################################################################### #投影算法范例 ######################################################################3 psds:=[[2*u1-x2*x5+x3*x4, 2*u2+x5*x1, 2*u3-x1*x3, 2*u4-(x2-x1)*x5+x3*x4-x1*x3], []]; ord:=[x5, x4, x3, u4]; pord:=[x5, x4, x3]; project(psds[1],psds[2],ord,pord); psds:=[[x5*x4-x3*x6, x6*(x7-x2)-x8*(x5-x2), x4*(x7-x1)-x8*(x3-x1), u1*(x2-x1)+x2, u2*(x7-x3)-x1+x7, u3*x5-x3+x5], []]; ord:=[x8, x7, x6, x5, x2, u3]; pord:=[x8, x7, x6, x5, x2]; project(psds[1],psds[2],ord,pord); psds:=[[x2*x8-x9*u4, u3*(x4-u1)-x5*(u2-u1), (x7-u3)*(u4-u2)-(x2-u3)*(x6-u2), x7*(x4-x3)-x5*(-x3+x6), x9*(x4-x3)-x5*(x8-x3), r1*(x3-u1)+x3, r2*(x4-u2)-u1+x4, r3*(x6-u4)-u2+x6, r4*x8-u4+x8], []]; ord:=[x9, x8, x7, x6, x5, x4, x3, x2, r4]; pord:=[x9, x8, x7, x6, x5, x4, x3, x2]; project(psds[1],psds[2],ord,pord); psds:=[[y2*(z1-x1)-w1*(x2-x1), (y3-y2)*(z2-x2)-(w2-y2)*(x3-x2), (y4-y3)*(z3-x3)+y3*(x4-x3), (y5-y4)*(z4-x4)-(w4-y4)*(x5-x4), -y5*(z5-x5)-(w5-y5)*(x1-x5), w4*x2-y2*z4, w5*x3-y3*z5, w1*x4-y4*z1, w2*x5-y5*z2, u1*(z1-x2)-x1+z1, u2*(z2-x3)-x2+z2, u3*(z3-x4)-x3+z3, u4*(z4-x5)-x4+z4, u5*(z5-x1)-x5+z5], [x5-x4]]; ord:=[w5, z5, w4, z4, z3, w2, z2, w1, z1, y5, x5, y4, y3, u5]; pord:=[w5, z5, w4, z4, z3, w2, z2, w1, z1, y5, x5, y4, y3]; project(psds[1],psds[2],ord,pord); psds:=[[x2^2-x4^2-x3^2, x6^2+x5^2-x4^2-x3^2, (x3-x1)*x6-x4*(x5-x1), x7*x1-x2^2, x4*(x7-x1)-x8*(x3-x1), (x5-x1)*(x7-x3)*u1-(x3-x1)*(x7-x5)], [x5-x3]]; ord:=[x8, x7, x6, x5, x4, u1]; pord:=[x8, x7, x6, x5, x4]; project(psds[1],psds[2],ord,pord); psds:=[[r^2-x1^2-y1^2, (x2-x1)^2+(y2-y1)^2-n^2-m^2, (x2-x)^2+(y2-y)^2-n^2-m^2, (r-x2)^2+y2^2-(n+2*r)^2-m^2, y*(x1-r)-y1*(x-r)], [x1-x]]; ord:=[y2, x2, y1, x1, x]; pord:=[y2, x2, y1, x1]; project(psds[1],psds[2],ord,pord); psds:=[[u1^2-x1^2-x2^2, u2^2-(x1-x3)^2-(x2-x4)^2, u2^2-(x3-u1)^2-x4^2, 2*x-x1-x3, 2*y-x2-x4], [x1-u1]]; ord:=[x4, x3, x2, x1, y]; pord:=[x4, x3, x2, x1]; project(psds[1],psds[2],ord,pord); psds:=[[x1+u2, u1^2+u2^2-(u1-x3)^2-x2^2, 2*x4-u2-x2, 2*x5-x3, -y*(x2-x)+(x3-y)*x, -y*(x4-x)-(x5-y)*(x1-x)], []]; ord:=[x5, x4, x3, x2, x1, y]; pord:=[x5, x4, x3, x2, x1]; project(psds[1],psds[2],ord,pord); psds:=[[x1+u2, u1^2+u2^2-(u1-x2)^2-x^2, x2*y+(x-x1)*(x-u2)], []]; ord:=[x2, x1, y]; pord:=[x2, x1]; project(psds[1],psds[2],ord,pord); psds:=[[r^2-x3^2-x4^2, x3^2-(x3-x1)^2, (x4-u1)^2+(x3-x2)^2-x4^2-x3^2, u2^2-x2^2-u1^2, u3^2-(x1-x2)^2-u1^2], [x1]]; ord:=[x4, x3, x2, x1, r]; pord:=[x4, x3, x2, x1]; project(psds[1],psds[2],ord,pord); ###################################################################### ############矩阵行列式的一些测试例子: ###################################################################### example:a:=matrix(3,3,[1,2,3,4,5,8,0,0,0]); det(a); 0 example:a:=fmatrix(4,4,[32,42,11,32,121,18,43,6,4,12,17,62,3,42,12,44]); det(a); 1983024 example:a:=matrix(3,3,[2*x,43*y^2,x*y,0,11*(x-2)*y^2,5*y,0,0,3*z^4]); det(a); 66*z^4*y^2*x^2-132*z^4*y^2*x example:a:=fmatrix(3,3,[x^2,y-3,z^2*x-y^2,12,x^5*y,y*z,3*z,0,y^4*x]); det(a); x^8*y^5-12*y^5*x+36*y^4*x+3*y^2*z^2-9*y*z^2-3*x^6*y*z^3+3*z*x^5*y^3 example:a:=fmatrix(3,3,[x,y,z,2*x,y,0,0,2*x,y]); det(a); 4*z*x^2-y^2*x example:a:=fmatrix(5,5,[11,1315,3123,12,43,65,4324,65,4,4324,54654,7657,8768,3543,343,5435,654,654,654,4654,4564,4564,987970,3123,4433]); det(a); -92410140159906731807 example:a:=fmatrix(4,4,[3*x^3,y^2-3,z^2*x-y^2,12*y,x^5*y,y*z,3*z,5*x^4-5,y^4*x,x2*z,7*y^3-x*z,z^2-3,y*z^3,4*x^2,123*x*y,65*y^3*z*4]); det(a); -369*x^6*y^4+5460*x^3*y^7*z^2-1476*x^6*y^3*x2*z-260*x^5*y^6*x2*z^2+260*x^6*y^4*x2*z^4-1845*x^4*x2*z*y+1845*x^8*x2*z*y-2340*x^3*x2*z^3*y^3+5*y^3*z^4*x2*x^4+5*y*z^6*x2*x-5*y*z^6*x2*x^5-369*x^4*y^2*z^3-885*x^4*y^4*z^3+1107*x^4*y^2*z+260*x^6*y^6*z^2-1820*x^5*y^9*z-369*x^6*y^2*z^2+5460*x^5*y^7*z-657*x^6*y^4*z^2-48*x^8*y^2*z+4*x^7*y^3*z^2+12*x^8*y*z^2-4*x^8*y*z^4-144*y^5*x^3*z-20*y^4*x^4*z^2+20*y^4*x^8*z^2+1476*y^7*x^2*z+260*y^10*x*z^2-260*y^8*x^2*z^4-2340*y^7*x*z^2+780*y^9*x*z^2+y^2*z^8*x-15*y*z^4*x+15*y*z^4*x^5+5*y^3*z^4*x-5*y^3*z^4*x^5+35*y^6*z^3*x^4+36*y^2*z^5*x2-5*y^3*z^4*x2+12*y^3*z^5*x-3*y^2*z^6*x-108*x^5*z+1107*x^6*y^2+420*y^3*x^5-27*y*z^4+9*y*z^6-35*y^6*z^3+9*y^3*z^4-3*y^3*z^6+20*y^6*x^3-20*y^6*x^7-1845*y^5*x^2+1845*y^5*x^6+615*y^7*x^2-615*y^7*x^6+336*x^7*y^5-12*x^7*y^3-60*x^6*z+60*x^10*z-420*x^9*y^3+36*x^5*z^3-84*y^6*z^4+3*y^4*z^4-y^4*z^6+105*y^4*z^3