MATLAB의 고유값
-
18-09-2020 - |
문제
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.
. 제휴하지 않습니다 StackOverflow