Singular
Singular提供了大量的,成熟的关于Gröbner基,多元多项式最大公因式,平面曲线的Riemann-Roch空间的基,因式分解等内容的库函数。我们使用Sage的Singular接口展示多元多项式的因式分解(...不需要输入):
sage: R1 = singular.ring(0, '(x,y)', 'dp')sage: R1// characteristic : 0// number of vars : 2// block 1 : ordering dp// : names x y// block 2 : ordering Csage: f = singular('9*y^8 - 9*x^2*y^7 - 18*x^3*y^6 - 18*x^5*y^6 + '....: '9*x^6*y^4 + 18*x^7*y^5 + 36*x^8*y^4 + 9*x^10*y^4 - 18*x^11*y^2 - '....: '9*x^12*y^3 - 18*x^13*y^2 + 9*x^16')
现在已经定义了$f$, 我们输出它和它的因式。
sage: f9*x^16-18*x^13*y^2-9*x^12*y^3+9*x^10*y^4-18*x^11*y^2+36*x^8*y^4+18*x^7*y^5-18*x^5*y^6+9*x^6*y^4-18*x^3*y^6-9*x^2*y^7+9*y^8sage: f.parent()Singularsage: F = f.factorize(); F[1]:_[1]=9_[2]=x^6-2*x^3*y^2-x^2*y^3+y^4_[3]=-x^5+y^2[2]:1,1,2sage: F[1][2]x^6-2*x^3*y^2-x^2*y^3+y^4
跟GAP中GAP的例子一样,我们可以不用明确的调用Singular来进行上面的因式分解(但是Sage在后台调用了Singular接口进行实际的计算)。
sage: x, y = QQ['x, y'].gens()sage: f = (9*y^8 - 9*x^2*y^7 - 18*x^3*y^6 - 18*x^5*y^6 + 9*x^6*y^4....: + 18*x^7*y^5 + 36*x^8*y^4 + 9*x^10*y^4 - 18*x^11*y^2 - 9*x^12*y^3....: - 18*x^13*y^2 + 9*x^16)sage: factor(f)(9) * (-x^5 + y^2)^2 * (x^6 - 2*x^3*y^2 - x^2*y^3 + y^4)
