如何减少mathematica中的自变量数量

时间:2011-02-15 19:51:09

标签: wolfram-mathematica

这不是真的是一个数学问题,或者实际上是一个数学问题。 :d

假设我有一个矩阵

{{4/13 + (9 w11)/13 + (6 w12)/13, 
  6/13 + (9 w21)/13 + (6 w22)/13}, {-(6/13) + (6 w11)/13 + (4 w12)/
   13, -(9/13) + (6 w21)/13 + (4 w22)/13}}

w11w12w21w22作为免费参数。

我通过视觉检查知道3*w11+2*w12可以表示为一个变量,而3*w21+2*w22可以表示为另一个变量。所以基本上这个矩阵只有两个独立的变量。给定此形式的任何矩阵,是否有任何方法可以自动减少自变量的数量?我想我一直坚持用精确的数学方法来制定它。

请分享您的想法。非常感谢。

修改

我的问题实际上如下。 给出这样的矩阵

{{4/13 + (9 w11)/13 + (6 w12)/13, 
  6/13 + (9 w21)/13 + (6 w22)/13}, {-(6/13) + (6 w11)/13 + (4 w12)/
   13, -(9/13) + (6 w21)/13 + (4 w22)/13}}

或涉及其他一些符号常量

{{a+4/13 + (9 w11)/13 + (6 w12)/13, 
  6/13*c + (9 w21)/13 + (6 w22)/13}, {-(6/13)/d + (6 w11)/13 + (4 w12)/
   13, -(9/13) + (6 w21)/13 + (4 w22)/13}}

我想使用mathematica自动识别自变量的数量n(在本例中为2),然后将这些独立变量命名为y1,y2,...,yn,然后重写矩阵用y1,y2,...,yn代替w11,w12,w21,w22。

1 个答案:

答案 0 :(得分:10)

开始
mat = {{4/13 + (9 w11)/13 + (6 w12)/13,6/13 + (9 w21)/13 + (6 w22)/13},
  {-(6/13) + (6 w11)/13 + (4 w12)/13, -(9/13) + (6 w21)/13 + (4 w22)/13}};

形成第二个不确定,相同维度的矩阵。

mat2 = Array[y, Dimensions[mat]];

现在考虑通过设置mat-mat2 == 0形成的多项式(实际上是线性的)系统。我们可以消除原始变量并寻找新变量之间的依赖关系。可以使用消除;我将展示GroebnerBasis。

GroebnerBasis[Flatten[mat - mat2], Variables[mat2], Variables[mat]]

输出[59] = {-3 + 2 y [1,2] - 3 y [2,2], - 2 + 2 y [1,1] - 3 y [2,1]}

因此我们在原始矩阵元素之间得到了一对显式关系。

--- ---编辑

您可以获取新变量的表达式,这些表达式清楚地表明其中两个变量的依赖关系。为此,请形成Groebner基础并在多项式简化中使用它。

gb = GroebnerBasis[Flatten[mat - mat2], Variables[mat2], Variables[mat]];
vars = Flatten[mat2];

PolynomialReduce[vars, gb, vars][[All, 2]]

Out [278] = {1 + 3/2 y [2,1],3/2 + 3/2 y [2,2],y [2,1],y [2,2]} < / p>

---结束编辑---

Daniel Lichtblau Wolfram Research