如何执行一个多项式变量的复杂变化(在Mathematica中)

问题描述:

我有一个整数多项式在四个变量(w,x,y和z),我知道可以写成这些六个变量中的整数多项式:如何执行一个多项式变量的复杂变化(在Mathematica中)

  • 一个= WZ
  • b = XY
  • C =瓦特^ 3 + Z^3
  • d = X + Y
  • E =瓦特^ 3×+ YZ^3
  • f = w^3 y + xz^3

如何使用Mathematica(或者Java)轻松完成变量的这种变化?

+0

泰森·威廉姆斯,欢迎*上。 – 2011-05-20 21:30:50

+0

@ Mr.Wizard谢谢。我特别感到受到欢迎,因为我的问题得到了很好的回答。 – 2011-05-22 14:59:19

这样的重写可以通过形成替代多项式的Groebner基来完成,就可变顺序而言,有利于在w-z上使用a-f。然后根据相同的顺序使用PolynomialReduce来重写您的多项式。

这里是一个例子。我将从替换规则开始,这样我就可以构造一个多项式,以便我们知道预期的结果。

reprules = {a -> w*z, b -> x*y, c -> (w^3 + z^3), 
d -> (x + y), e -> (w^3*x + y*z^3), f -> (w^3*y + x*z^3)}; 

现在重写为多项式关系。

reppolys = Apply[Subtract, reprules, 1]; 

这里我们创建一个例子。

poly = 
a^2*b + 3*b^2*c^3 - 2*d*e*f + 11*b*f^2 - 5 a*d^2*e /. reprules // Expand 

Out[11]= -2*w^6*x^2*y - 2*w^6*x*y^2 + 3*w^9*x^2*y^2 + 11*w^6*x*y^3 - 
    5*w^4*x^3*z - 10*w^4*x^2*y*z - 5*w^4*x*y^2*z + w^2*x*y*z^2 - 2*w^3*x^3*z^3 - 
    2*w^3*x^2*y*z^3 - 2*w^3*x*y^2*z^3 + 22*w^3*x^2*y^2*z^3 + 9*w^6*x^2*y^2*z^3 - 
    2*w^3*y^3*z^3 - 5*w*x^2*y*z^4 - 10*w*x*y^2*z^4 - 5*w*y^3*z^4 - 
    2*x^2*y*z^6 + 11*x^3*y*z^6 - 2*x*y^2*z^6 + 9*w^3*x^2*y^2*z^6 + 3*x^2*y^2*z^9 

形成上述的Groebner基础。

gb = GroebnerBasis[reppolys, {w, x, y, z, a, b, c, d, e, f}]; 

用它来减少我们的输入以恢复预期结果。

PolynomialReduce[poly, 
    gb, {w, x, y, z, a, b, c, d, e, f}][[2]] 

Out[12]= a^2*b + 3*b^2*c^3 - 5*a*d^2*e - 2*d*e*f + 11*b*f^2 

---编辑---

注释询问的GROEBNER基的描述。对于我自己承担的Mathematica功能,有一篇老年人TMJ文章。可以在

http://library.wolfram.com/infocenter/Articles/2179/

在与该主题相关的书籍更好地发现存在的UTM系列文本

理想,品种,并通过算法考克斯,Lottle,和奥谢。

Adams和Loustaunau(AMS)对GröbnerBases的介绍也很好。

---结束---编辑

丹尼尔Lichtblau

+2

@Daniel,我曾多次尝试了解Groebner的基础,但迄今为止我失败了。你有任何好的/可理解的描述的链接?谢谢。 – rcollyer 2011-05-20 18:52:48

+0

@rcollyer查看编辑 – 2011-05-20 19:19:41

+0

谢谢,我已将它添加到我的阅读列表中。 – rcollyer 2011-05-20 20:01:00