说我有一个看起来像这样的矢量:
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}]
谢谢!
答案 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}
这样你就可以重建你的表达。