这不是真的是一个数学问题,或者实际上是一个数学问题。 :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自动识别自变量的数量n
(在本例中为2),然后将这些独立变量命名为y1,y2,...,yn,然后重写矩阵用y1,y2,...,yn代替w11,w12,w21,w22。
答案 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