无需通过 Sage 中的多样性即可找到多项式序列的解决方案

计算科学 多项式 智者
2021-12-11 12:08:48

我正在计算在 QQ 环上定义的理想的 Groebner 基础。一旦我有了这个 Groebner 基,我想获得一组满足 Groebner 基方程的值。我知道全套将是理想的变体,但由于这个对象很大,我可能对找到这些值不感兴趣。在 Maple 中,在计算 Groebner 基之后,我可以在其上调用 solve() 方法,甚至可以设置我想要获得的最大解数。举个小例子:

P.<x,y,z,t>=PolynomialRing(QQ,4) 
I = P.ideal(x*(x-1), y*(y-1), z*(z-1), t - x*y*z)
gb = I.groebner_basis()

在这里,我可以调用I.variety()gb.variety()获得相同的解决方案:

sage: gbI.variety()
[{y: 0, z: 0, t: 0, x: 0},
 {y: 0, z: 0, t: 0, x: 1},
 {y: 1, z: 0, t: 0, x: 0},
 {y: 1, z: 0, t: 0, x: 1},
 {y: 0, z: 1, t: 0, x: 0},
 {y: 0, z: 1, t: 0, x: 1},
 {y: 1, z: 1, t: 0, x: 0},
 {y: 1, z: 1, t: 1, x: 1}]

但我想知道是否可以调用类似的方法(我可以在 Maple 中执行此操作):

solve(gb,[max_sol=2])

这样我就可以获得品种的一个子集而不是整个集合。我的动机是我拥有的初始多项式系统的大小比这个例子大得多,并且在减少的 Groebner 基础上找到可行的解决方案更易于管理。我也可能对品种中的所有元素都不感兴趣。最后,如果我将 Groebner 基转换为理想本身并尝试计算该对象的多样性

gbI = ideal(gb)
gbI.variety()

我发现以下错误

RuntimeError: error in Singular function call 'groebner':
int overflow in hilb 3
error occurred in or before standard.lib::stdhilb line 299: `    intvec hi = hilb( Id(1),1,W );`
expected intvec-expression. type 'help intvec;'
leaving standard.lib::stdhilb
leaving standard.lib::groebner
0个回答
没有发现任何回复~