向量的矩阵因子

时间:2011-11-29 16:37:01

标签: wolfram-mathematica

说我有一个看起来像这样的矢量:

1/2 a + 1/3 b
b + c
2a + c
1/3c + 4d

在数学上,这可以分解为矩阵和向量:

矩阵:

1/2  1/3  0    0
0    1    1    0
2    0    1    0
0    0    1/3  4

载体:

a
b
c
d

(我对格式化表示道歉,也许有人可能会建议你做得更好?)

有没有办法让mathematica进行矩阵分解?在我的具体情况中,术语不是简单的表达,例如“a”,“b”,“c”,“d”。但事情是由列表索引的,例如

W[{3,0,0,0}]
W[{1,1,0,0}]
W[{0,0,1,0}]

谢谢!

1 个答案:

答案 0 :(得分:9)

可能:

x = {1/2 a + 1/3 b,
     b + c,
     2 a + c,
     1/3 c + 4 d};

CoefficientArrays[x, {a, b, c, d}][[2]] // MatrixForm

如果您需要所有变量的系数,请使用紧凑形式:

CoefficientArrays[x][[2]] // MatrixForm

如果您不想要所有变量的系数,则部分[[1]]开始起作用:

x2 = {1/2 a + 1/3 b + q - y,
      b + c + 1/2 r,
      2 a + c + 2 y,
      1/3 c + 4 d};

CoefficientArrays[x2, {a, b, c, d}][[1]] // Normal
{q - y, r/2, 2 y, 0}

这样你就可以重建你的表达。