使用GroebnerBasis时,我遇到了一些奇怪的行为。在下面的m1中,我使用希腊字母作为变量,在m2中,我使用拉丁字母。他们两个都没有与之关联的规则。为什么我会根据选择的变量获得截然不同的答案?
图像:

可复制的代码:

Clear["Global`*"]
g = Module[{x},
    x /. Solve[
      z - x (1 - b -
           b x ( (a (3 - 2 a (1 + x)))/(1 - 3 a x + 2 a^2 x^2))) == 0,
       x]][[3]];
m1 = First@GroebnerBasis[\[Kappa] - g, z]
m2 = First@GroebnerBasis[k - g, z]

编辑:
正如belisarius指出的那样,我对GroebnerBasis的使用并不完全正确,因为它需要多项式输入,而我的则不是。直到现在,这个由复制粘贴引起的错误一直没有被注意到,因为我从上面使用m1获得其余代码时得到了我所期望的答案。但是,我不完全相信这是不合理的用法。考虑下面的示例:
x = (-b+Sqrt[b^2-4 a c])/2a;
p = First@GroebnerBasis[k - x,{a,b,c}]; (*get relation or cover for Riemann surface*)
q = First@GroebnerBasis[{D[p,k] == 0, p == 0},{a,b,c},k,
    MonomialOrder -> EliminationOrder];

Solve[q==0, b] (*get condition on b for double root or branch point*)

{{b -> -2 Sqrt[a] Sqrt[c]}, {b -> 2 Sqrt[a] Sqrt[c]}}
哪个是对的。因此,我的解释是,在这种情况下可以使用GroebnerBasis,但是我对它背后的深入理论并不十分熟悉,因此在这里我可能是完全错误的。
P.S.我听说如果您在帖子中三次提及GroebnerBasis,Daniel Lichtblau将会回答您的问题:)

最佳答案

这些示例显示的错误将在版本9中修复。如果我没记错的话,这是由某些代码中的中间数字溢出引起的,该代码正在检查符号多项式系数是否为零。

出于某些目的,指定更多变量和可能使用非默认术语顺序可能是合适的。此外,至少在这样做是有效的情况下,清除分母也可能会有所帮助。也就是说,我不知道这些策略在此示例中是否有帮助。

我将在这段代码中进一步介绍,但可能不会在不久的将来出现。

丹尼尔·里奇布劳

关于wolfram-mathematica - v7中带有GroebnerBasis的怪异行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6196509/

10-13 04:43