2016-06-06 3 views
2

Matlab определяет столбец левой собственного вектора w матрицы A уравненияТочности вычисления левых собственных векторов с Matlab

w*A=d w*

, где w* является сопряженной транспозицией w. Это implies, что когда вы диагонализовать матрицу A по tranformation D=S^{-1}AS где D является диагональной матрицей, а столбцы S являются (справа) собственные векторы A строк S являются сопряженная транспонированная w. Однако, если я проверить это на простой матрице,

A=[1+i,2-i,3;1,i,0.5i;5i,7,-2] 

и получить левый и правый собственные векторы с помощью

[S,D,W]=eig(A) 

Я не вижу связи между W* и S^{-1}. Это вопрос точности? Умножение W* на S дает диагональную матрицу со сложными элементами.

+0

Я не знаю, почему mathjax не является рендерингом! – Tarek

+3

Поскольку он не включен в StackOverflow ... – Jommy

+0

Хорошо, я отредактировал вопрос соответствующим образом. – Tarek

ответ

2

Это не проблема точности, а одно из масштабирования и тот факт, что собственные векторы not unique. Единственный раз, когда матрица левых собственных векторов (в виде строк) гарантированно будет в точности обратным к матрице правых собственных векторов, относится к эрмитовому A; хотя их продукт составляет always diagonal. Кроме того, строки обратного к матрице правых собственных векторов всегда являются левыми собственными векторами A, но не являются единственными собственными векторами. Разница заключается в масштабировании.

Для примера (я буду использовать R и L = W', так как я считаю, что более естественно):

>> A=[1+i,2-i,3;1,i,0.5i;5i,7,-2]; 
>> [R,D,W]=eig(A); 
>> L = W'; 
>> Rinv = D/(A*R); 

ли L и Rinv матрицы левых собственных векторов?

>> [norm(L*A - D*L) , norm(Rinv*A - D*Rinv)] 
ans = 
    1.0e-14 * 
    0.4254 0.9041 

Да, к относительной точности машины.


Является продуктом L и R диагонали?

>> LR = L*R 
LR = 
    0.8319 + 0.0826i 0.0000 + 0.0000i 0.0000 - 0.0000i 
    0.0000 - 0.0000i 0.3976 + 0.4274i -0.0000 - 0.0000i 
    -0.0000 - 0.0000i 0.0000 + 0.0000i -0.3079 - 0.4901i 

Да.


Теперь, что произойдет, если мы масштабируем каждый левый собственный вектор (строка) из L таким образом, что вышеуказанный продукт является тождественным?

>> Lp = bsxfun(@rdivide,L,diag(LR)) 
Lp = 
    -0.4061 - 0.5332i -0.3336 + 0.6109i 0.7017 - 0.0696i 
    0.7784 + 0.0140i 0.9824 - 1.0560i 0.4772 - 0.1422i 
    0.2099 - 0.0812i -0.9004 + 1.4331i -0.2219 - 0.1422i 

>> Rinv 
Rinv = 
    -0.4061 - 0.5332i -0.3336 + 0.6109i 0.7017 - 0.0696i 
    0.7784 + 0.0140i 0.9824 - 1.0560i 0.4772 - 0.1422i 
    0.2099 - 0.0812i -0.9004 + 1.4331i -0.2219 - 0.1422i 

Мы восстанавливаем Rinv с повторным масштабированием. А так как Rinv представляет собой набор левых собственных векторов, то это Lp.


Что было потеряно при повторном масштабировании?

>> [diag(L*L'),diag(Lp*Lp')] 

ans = 

    1.0000 1.4310 
    1.0000 2.9343 
    1.0000 2.9846 

Собственные векторы больше не являются единичной длиной.

+0

Спасибо! Вероятно, вам нужно отредактировать первый абзац: Единственный раз, когда левые собственные векторы масштабируются до единичной длины, а матрица левых собственных векторов (в виде строк) гарантированно будет в точности обратным к матрице правых собственных векторов для эрмитовой 'A '. – Tarek

+0

@Tarek Это один из способов взглянуть на него. Но для меня это также проблема курица или яйца из-за присущей неединственности собственных векторов. Тот факт, что они масштабируются до единицы, как правило, является побочным продуктом метода решения или стандартным выбором удобства для решения, которое должно быть возвращено решателем. Я выбрал формулировку, поскольку только когда «А» является эрмитовым (или, в более общем смысле, «Нормальным»), выбор масштабирования не имеет значения, поскольку унитарный характер левой и правой матриц имеет присущее ортогональное (ортонормальное?) Масштабирование друг против друга , – TroyHaskin

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