在v7中使用GroebnerBasis的奇怪行为

5 wolfram-mathematica mathematica-7

我在使用时遇到了一些奇怪的行为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]
Run Code Online (Sandbox Code Playgroud)

编辑:

正如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]}}
Run Code Online (Sandbox Code Playgroud)

哪个是对的.因此,我的解释是,它是确定使用GroebnerBasis在这种情况下,但我不是太熟悉,它背后的深层理论,所以我可能是完全错误的在这里.

PS我听说如果你GroebnerBasis在帖子中提到三次,Daniel Lichtblau会回答你的问题:)

Dan*_*lau 4

这些示例所显示的错误将在版本 9 中修复。我不知道如何在版本 8 及更早版本中规避它。如果我没记错的话,这是由某些代码中的中间数字溢出引起的,该代码正在检查符号多项式系数是否可能为零。

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

我会更多地查看这段代码,但可能不会在不久的将来。

丹尼尔·利希布劳