Решение матрицы в MATLAB? - PullRequest
       29

Решение матрицы в MATLAB?

9 голосов
/ 04 октября 2009

Как можно решить (нетривиальное) решение Ax = 0 для x в MATLAB ?

A = matrix
x = matrix trying to solve for

Я пытался решить ('A * x = 0', 'x'), но я получил только 0 за ответ.

Ответы [ 4 ]

13 голосов
/ 05 октября 2009

Обратите внимание, что null (A) делает то же самое (для матрицы с недостатком ранга) , как показано ниже, но для этого используется функция svd(A) в MATLAB (о чем я уже говорил в моих комментариях это то, что делает null(A).

[U S V] = svd(A);
x = V(:,end)

Подробнее об этом есть ссылка , связанная с этим (не может опубликовать ее здесь из-за формул).

Если вы хотите более интуитивно чувствовать разложение по сингулярным и собственным значениям, посмотрите eigshow в MATLAB.

9 голосов
/ 04 октября 2009

Вы можете использовать N = null(A), чтобы получить матрицу N. Любой из столбцов N (или, действительно, любая линейная комбинация столбцов N) будет удовлетворять Ax = 0. Здесь описаны все возможные варианты x - вы только что нашли ортогональный базис для пустого пространства A.

Примечание: вы можете найти такой x, только если A имеет нетривиальный нуль-пробел. Это произойдет, если rank(A) < #cols of A.

1 голос
/ 04 октября 2009

Вы можете увидеть, имеет ли MATLAB разложение по сингулярному значению в своем наборе инструментов. Это даст вам нулевое пространство вектора.

0 голосов
/ 04 мая 2016

null(A) даст вам прямой ответ. Если вам нужно нетривиальное решение, попробуйте уменьшить число строк и см. Первую страницу PDF.

R = rref(A)

http://www.math.colostate.edu/~gerhard/M345/CHP/ch7_4.pdf

...