2009-10-04 3 views
9

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

A = matrix 
x = matrix trying to solve for 

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

+1

есть А обратим? – manji

+2

обратимость не имеет особого значения (сама по себе). – Peter

+2

, если A обратимо, единственным решением для Ax = 0 является 0, no? – manji

ответ

13

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

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

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

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

+0

спасибо за объяснение :) – yxk

9

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

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

+0

Мой ранг (A) = # cols. Как «уменьшить» значение ранга? Также null (A) = пустая матрица: 12-на-0. – yxk

+0

Вы должны посмотреть на приближения низкого ранга. Вы можете использовать SVD для этого. – Peter

1

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

+0

Это будет SVD, что приводит к тому же результату, что и null (A). – Jacob

+0

Они используют разные числовые методы. – Peter

+0

Не совсем, null (A) использует svd - http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/ref/null.html – Jacob

Смежные вопросы