Это не проблема точности, а одно из масштабирования и тот факт, что собственные векторы 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
Собственные векторы больше не являются единичной длиной.
Я не знаю, почему mathjax не является рендерингом! – Tarek
Поскольку он не включен в StackOverflow ... – Jommy
Хорошо, я отредактировал вопрос соответствующим образом. – Tarek