使用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/