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

Wolfram mathematica 如何减少mathematica中自变量的数量,wolfram-mathematica,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}} 使用w11、w12、w21、w22作为自由参数 通过目视检查,我知道3*w11+2*w12可以表示为一个变量,3*w21+2*w22可以表

我不知道这到底是一个数学问题,还是一个数学问题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}}
使用
w11
w12
w21
w22
作为自由参数

通过目视检查,我知道
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自动识别独立变量的数量(在本例中为2),然后将这些独立变量命名为y1,y2,…,yn,然后根据y1,y2,…,yn而不是w11,w12,w21,w22重新写入矩阵。

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]]
Out[59]={-3+2y[1,2]-3y[2,2],-2+2y[1,1]-3y[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/2y[2,1],3/2+3/2y[2,2],y[2,1],y[2,2]}

---结束编辑---

丹尼尔·利奇布劳
Wolfram Research

不要试图成为纯粹主义者,你需要方程来求解变量。这里只有一些和。+1,绝对是最简单的解。顺便说一句,与他之前的问题不同,
系数数组
在这里不起作用,因为它单独处理矩阵的每一行,而不是作为一个变量向量,点缀着一个矩阵向量,我在过去遇到过麻烦。此外,我还必须再次查看
GroebnerBasis
,因为我不知道它何时适用,如何适用。@Daniel,非常感谢。在得到这个
{-3+2y[1,2]-3y[2,2],-2+2y[1,1]-3y[2,1]}
之后,如何使用它?这是否告诉我多余的自由度是2?例如,如果是这样的话,我得到了两个(因为4-2=2!)新变量y1,y2,我想用y1和y2,而不是w11,w12,w21,w22重新编写原始矩阵
{{4/13+(9 w11)/13+(6 w12)/13},{-(6/13+(6 w11)/13+(4 w12)/13,-(9/13)+(6 w21)/13+(4 w22)/13}
,如何做到这一点?@rcollyer:我不知道你所说的“与他之前的问题不同,coefficientarray在这里不起作用,因为它单独处理矩阵的每一行”是什么意思。这里的系数阵是如何关联的?@Daniel,如果我在矩阵中有另一个常数,例如,
a
,例如,
{-3*a+2y[1,2]-3y[2,2],-2+2y[1,1]-3y[2,1]}
,那么这似乎不起作用,就像现在一样,变量[mat]变为
{a,w11,w12,w21,w22}
。谢谢。@Liang您需要编辑您的问题,以便我可以具体了解如何将新变量引入矩阵。你展示的是Groebner基础,但我不知道你使用的输入。