문제

MATLAB에서 명령을 실행하면 [V,D] = eig(a) 대칭 행렬의 경우 가장 큰 고유값(및 관련 벡터)은 마지막 열에 있습니다.그러나 비대칭 행렬로 실행하면 가장 큰 고유값이 첫 번째 열에 있습니다.

가장 큰 고유값과 관련된 고유벡터를 계산해야 하는 고유벡터 중심성을 계산하려고 합니다.따라서 가장 큰 고유값이 두 개의 별도 장소에 나타난다는 사실로 인해 해를 찾기가 어렵습니다.

도움이 되었습니까?

해결책

가장 큰 고유값의 인덱스를 찾으면 됩니다. D, 이는 함수를 사용하여 쉽게 수행할 수 있습니다. 진단 주대각선과 함수를 추출하려면 최대 최대 고유값과 그것이 발생하는 인덱스를 얻으려면 다음을 수행하십시오.

[V,D] = eig(a);
[maxValue,index] = max(diag(D));  %# The maximum eigenvalue and its index
maxVector = V(:,index);           %# The associated eigenvector in V

메모: 처럼 우드칩스는 다음과 같이 지적한다., 비대칭 행렬에 대한 복소 고유값을 가질 수 있습니다.복잡한 입력을 조작하는 경우 X, 최대 함수는 복소수의 크기를 사용합니다. 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는 정렬 된 고유 값을 명시 적으로 반환하지 않습니다 (기본 알고리즘은 eigenvalue의 크기에 따라 거의 정렬 된 순서로 생성되는 경향이 있음).복잡한 벡터에서 정렬은 어떻게 작동합니다.

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
.

복잡한 입력에 적용될 때 복소수의 크기에 작동합니다.

가장 큰 고유 값과 관련된 고유 벡터 만 신경 쓰면 eigs ?

[V, D] = eigs( a, 1, 'lm' ); %// get first eigenvector with largest eigenvalue magnitude.
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top