В MATLAB, когда я выполняю команду [V,D] = eig(a)
для симметрической матрицы самое большое собственное значение (и его связанный вектор) расположено в последнем столбце. Однако, когда я выполняю его с несимметрической матрицей, самое большое собственное значение находится в первом столбце.
Я пытаюсь вычислить центрированность собственного вектора, которая требует, чтобы я взял вычисление собственного вектора, связанного с самым большим собственным значением. Так то, что самое большое собственное значение появляется в двух отдельных местах, оно мешает мне находить решение.
Вам просто нужно найти индекс наибольшего собственного значения в D
, что можно легко сделать, используя функцию DIAG для извлечения главной диагонали и функцию MAX для получения максимального собственного значения и индекса, где оно встречается:
[V,D] = eig(a);
[maxValue,index] = max(diag(D)); %# The maximum eigenvalue and its index
maxVector = V(:,index); %# The associated eigenvector in V
ПРИМЕЧАНИЕ: Как указывает woodchips, для несимметричных матриц можно иметь комплексные собственные значения. При работе с комплексным входом X
функция MAX использует величину комплексного числа max(abs(X))
. В случае одинаковых по величине элементов используется фазовый угол max(angle(X))
.
Обычно я делаю так:
[V D] = eig(a);
[D order] = sort(diag(D),'descend'); %# sort eigenvalues in descending order
V = V(:,order);
Обратите внимание, что несимметричные матрицы имеют тенденцию иметь комплексные собственные значения.
eig(rand(7))
ans =
3.2957
-0.22966 + 0.58374i
-0.22966 - 0.58374i
-0.38576
0.49064
0.17144 + 0.27968i
0.17144 - 0.27968i
Также обратите внимание, что eig явно не возвращает отсортированные собственные значения (хотя основной алгоритм имеет тенденцию выдавать их в почти отсортированном порядке, основанном на величине собственного значения), но даже если вы выполняете сортировку, вам нужно понять, как сортировка работает на комплексных векторах.
sort(rand(5,1) + i*rand(5,1))
ans =
0.42343 + 0.51539i
0.0098208 + 0.76145i
0.20348 + 0.88695i
0.43595 + 0.83893i
0.8225 + 0.91264i
Сортировка, когда применяется к комплексным входам, работает по величине комплексного числа.