Матричная факторизация вектора - PullRequest
6 голосов
/ 29 ноября 2011

Скажем, у меня есть вектор, который выглядит следующим образом:

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 Ответ

9 голосов
/ 29 ноября 2011

Возможно:

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}

Так, что вы можете восстановить свое выражение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...