本文介绍了如何对多项式执行复杂的变量更改(在Mathematica中)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有四个变量(w,x,y和z)中的整数多项式,我知道这些变量可以写成这六个变量中的整数多项式:

I have an integer polynomial in four variables (w, x, y, and z) that I know can be written as an integer polynomial in these six variables:


  • a = wz

  • b = xy

  • c = w ^ 3 + z ^ 3

  • d = x + y

  • e = w ^ 3 x + yz ^ 3

  • f = w ^ 3 y + xz ^ 3

  • 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

如何使用Mathematica(或者Java)轻松进行变量变更?

How can I use Mathematica (or maybe Java) to easily do this change of variables?

推荐答案

这种重写可以通过形成替换多项式的Groebner基础来完成,相对于有利于在wz上使用af的变量顺序。然后使用 PolynomialReduce 关于相同的顺序来重写多项式。

Such rewriting can be done by forming a Groebner basis of the replacement polynomials, with respect to a variable order that favors using a-f over w-z. Then use PolynomialReduce with respect to the same order to rewrite your polynomial.

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

Here is an example. I'll start with replacement rules so I can construct a polynomial such that we know the expected result.

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)};

现在重铸为多项式关系。

Now recast as polynomial relations.

reppolys = Apply[Subtract, reprules, 1];

这里我们创建一个例子。

Here we create an example.

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基础。

Form the Groebner basis mentioned above.

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

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

Use it to reduce our input to recover the expected result.

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文章。可以在

A comment asks about descriptions of Groebner bases. For my own take on the Mathematica functionality, there is an elderly TMJ article. Can be found at

与此主题相关的更好的书籍中有UTM系列文本

Among the better books related to this topic there is the UTM series text

Cox,Lottle和O'Shea的理想,品种和算法。

Ideals, Varieties, and Algorithms by Cox, Lottle, and O'Shea.

Adams和GröbnerBases简介Loustaunau(AMS)也相当不错。

An Introduction to Gröbner Bases by Adams and Loustaunau (AMS) is also quite good.

---结束编辑---

---end edit---

Daniel Lichtblau

Daniel Lichtblau

这篇关于如何对多项式执行复杂的变量更改(在Mathematica中)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-22 16:16