Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

eigs

고유값(Eigenvalue)과 고유벡터(Eigenvector)의 부분 집합

설명

예제

d = eigs(A)는 행렬 A에서 가장 큰 고유값 여섯 개로 구성된 벡터를 반환합니다. 이는 eig를 사용하여 모든 고유값을 계산할 때 많은 계산이 필요한 경우(예: 큰 희소 행렬을 사용하는 경우)에 가장 유용합니다.

예제

d = eigs(A,k)는 가장 큰 고유값 k개를 반환합니다.

예제

d = eigs(A,k,sigma)sigma 값에 따른 고유값 k개를 반환합니다. 예를 들어 eigs(A,k,'smallestabs')은 가장 작은 고유값 k개를 반환합니다.

d = eigs(A,k,sigma,Name,Value)는 하나 이상의 이름-값 쌍의 인수로 추가 옵션을 지정합니다. 예를 들어, eigs(A,k,sigma,'Tolerance',1e-3)은 알고리즘에 대한 수렴 허용오차를 조정합니다.

예제

d = eigs(A,k,sigma,opts)는 구조체를 사용하여 옵션을 지정합니다.

예제

d = eigs(A,B,___)는 일반 고유값 문제 A*V = B*V*D의 해를 구합니다. 선택적으로 k, sigma, opts 또는 이름-값 쌍을 추가 입력 인수로 지정할 수 있습니다.

d = eigs(Afun,n,___)은 행렬 대신 함수 핸들 Afun을 지정합니다. 두 번째 입력 인수 nAfun에 사용된 행렬 A의 크기를 지정합니다. 선택적으로 B, k, sigma, opts 또는 이름-값 쌍을 추가 입력 인수로 지정할 수 있습니다.

예제

[V,D] = eigs(___)는 주대각선상에 고유값이 있는 대각 행렬 D를 반환하고 행렬의 열이 이 고유값에 대응하는 고유벡터인 행렬 V를 반환합니다. 위에 열거된 구문에 나와 있는 입력 인수를 원하는 대로 조합하여 사용할 수 있습니다.

예제

[V,D,flag] = eigs(___)는 수렴 플래그도 반환합니다. flag0이면 모든 고유값이 수렴됩니다.

예제

모두 축소

행렬 A = delsq(numgrid('C',15))는 (0 8) 구간에 적절히 분산된 고유값을 갖는 양의 정부호 대칭 행렬입니다. 가장 큰 고유값 여섯 개를 계산합니다.

A = delsq(numgrid('C',15));
d = eigs(A)
d = 6×1

    7.8666
    7.7324
    7.6531
    7.5213
    7.4480
    7.3517

특정 개수의 가장 큰 고유값을 계산하려면 두 번째 입력값을 지정하십시오.

d = eigs(A,3)
d = 3×1

    7.8666
    7.7324
    7.6531

행렬 A = delsq(numgrid('C',15))는 (0 8) 구간에 적절히 분산된 고유값을 갖는 양의 정부호 대칭 행렬입니다. 가장 작은 고유값 다섯 개를 계산합니다.

A = delsq(numgrid('C',15));  
d = eigs(A,5,'smallestabs')
d = 5×1

    0.1334
    0.2676
    0.3469
    0.4787
    0.5520

0이 아닌 요소의 밀도가 25% 정도인 희소 형식의 1500×1500 확률 행렬을 만듭니다.

n = 1500;
A = sprand(n,n,0.25);

행렬의 LU 분해를 수행하여 A(p,:) = L*U를 충족하는 치환 벡터 p를 반환합니다.

[L,U,p] = lu(A,'vector');

벡터 입력값 x를 받고 LU 분해의 결과를 사용하여 사실상 A\x를 반환하는 함수 핸들 Afun을 만듭니다.

Afun = @(x) U\(L\(x(p)));

eigs와 함께 함수 핸들 Afun을 사용하여 가장 작은 고유값 여섯 개를 계산합니다. 두 번째 입력값은 A의 크기입니다.

d = eigs(Afun,1500,6,'smallestabs')
d = 6×1 complex

   0.1423 + 0.0000i
   0.4859 + 0.0000i
  -0.3323 - 0.3881i
  -0.3323 + 0.3881i
   0.1019 - 0.5381i
   0.1019 + 0.5381i

west0479는 켤레 고유값의 실수 쌍과 복소수 쌍을 모두 포함한 실수 값의 479×479 희소 행렬입니다.

west0479 행렬을 불러온 후 eig를 사용하여 모든 고유값을 계산하고 플로팅하십시오. 고유값이 복소수이므로 plot에서는 실수부를 x 좌표로, 허수부를 y 좌표로 각각 자동으로 사용합니다.

load west0479
A = west0479;
d = eig(full(A));
plot(d,'+')

고유값은 실수 선(x축)을 따라 특히 원점 근처에 모여 있습니다.

eigs에는 각기 다른 유형의 최대 고유값이나 최소 고유값을 선택할 수 있는 sigma에 대한 여러 가지 옵션이 있습니다. sigma에서 사용할 수 있는 각각의 옵션에 대해 고유값을 계산하고 플로팅합니다.

figure
plot(d, '+')
hold on
la = eigs(A,6,'largestabs');
plot(la,'ro')
sa = eigs(A,6,'smallestabs');
plot(sa,'go')
hold off
legend('All eigenvalues','Largest magnitude','Smallest magnitude')
xlabel('Real axis')
ylabel('Imaginary axis')

figure
plot(d, '+')
hold on
ber = eigs(A,4,'bothendsreal');
plot(ber,'r^')
bei = eigs(A,4,'bothendsimag');
plot(bei,'g^')
hold off
legend('All eigenvalues','Both ends real','Both ends imaginary')
xlabel('Real axis')
ylabel('Imaginary axis')

figure
plot(d, '+')
hold on
lr = eigs(A,3,'largestreal');
plot(lr,'ro')
sr = eigs(A,3,'smallestreal');
plot(sr,'go')
li = eigs(A,3,'largestimag','SubspaceDimension',45);
plot(li,'m^')
si = eigs(A,3,'smallestimag','SubspaceDimension',45);
plot(si,'c^')
hold off
legend('All eigenvalues','Largest real','Smallest real','Largest imaginary','Smallest imaginary')
xlabel('Real axis')
ylabel('Imaginary axis')

양의 정부호 대칭 희소 행렬을 생성합니다.

A = delsq(numgrid('C', 150));

A를 이용한 크릴로프(Krylov) 방법을 차용하는 'smallestreal'로 실수부 기준으로 최소 고유값 여섯 개를 계산합니다.

tic
d = eigs(A, 6, 'smallestreal')
d = 6×1

    0.0013
    0.0025
    0.0033
    0.0045
    0.0052
    0.0063

toc
Elapsed time is 3.043174 seconds.

A의 역행렬을 이용한 크릴로프 방법을 차용하는 'smallestabs'로 동일한 고유값을 계산합니다.

tic
dsm = eigs(A, 6, 'smallestabs')
dsm = 6×1

    0.0013
    0.0025
    0.0033
    0.0045
    0.0052
    0.0063

toc
Elapsed time is 0.443565 seconds.

고유값은 0 근처에 모여 있습니다. 'smallestreal' 계산에서는 고유값 간 간격이 너무 작아 A를 사용하여 수렴하는 것이 쉽지 않습니다. 반대로, 'smallestabs' 옵션에서는 A의 역행렬을 사용하는데, A의 고유값의 역은 고유값 간 간격이 훨씬 더 크기 때문에 계산하기가 더욱 쉽습니다. 이러한 성능 향상은 'smallestreal'에서는 불필요한 과정인 A 분해에 드는 계산 과정이 생략되기에 일어납니다.

고유값과 거의 같은 숫자형 sigma 값에 가까운 고유값을 계산합니다.

행렬 A = delsq(numgrid('C',30))은 632 크기의 양의 정부호 대칭 행렬로, (0 8) 구간에 적절히 분산된 고유값을 갖지만 18개의 고유값이 4.0에서 반복됩니다. 4.0에 가까운 고유값을 계산하려면 함수 호출 eigs(A,20,4.0)을 시도하는 것이 합리적입니다. 그러나 이 호출은 A - 4.0*I의 역행렬에서 가장 큰 고유값을 계산합니다. 여기서 I는 단위 행렬입니다. 4.0이 A의 고유값이기 때문에 이 행렬은 특이 행렬이며, 따라서 역행렬을 갖지 않습니다. eigs는 실패하고 오류 메시지를 만듭니다. sigma의 숫자형 값은 고유값과 정확히 같을 수 없습니다. 대신, 이 고유값을 구하기 위해서는 4.0에 가깝지만 4와 동일하지 않은 sigma 값을 사용해야 합니다.

먼저 eig를 사용하여 모든 고유값을 계산하고, 이후 eigs를 사용하여 4 - 1e-6에 가장 가까운 고유값 20개를 계산한 후, 두 계산 결과를 비교합니다. 각 방법으로 계산된 고유값을 플로팅합니다.

A = delsq(numgrid('C',30)); 
sigma = 4 - 1e-6;
d = eig(A);
D = sort(eigs(A,20,sigma));
plot(d(307:326),'ks')
hold on
plot(D,'k+')
hold off
legend('eig(A)','eigs(A,20,sigma)') 
title('18 Repeated Eigenvalues of A')

0이 아닌 요소의 비율이 적은 희소 형식의 확률 행렬 A B를 만듭니다.

B = sprandn(1e3,1e3,0.001) + speye(1e3); 
B = B'*B; 
A = sprandn(1e3,1e3,0.005); 
A = A+A';

세 개의 출력값을 사용해 행렬 B의 촐레스키 분해(Cholesky Decomposition)를 수행하여 치환 벡터 s와 테스트 값 p를 반환합니다.

[R,p,s] = chol(B,'vector');
p
p = 0

p가 0이므로 BB(s,s) = R'*R을 충족하는 양의 정부호 대칭 행렬입니다.

AR을 포함하는 일반 고유값 문제의 최대 고유값과 고유벡터 여섯 개를 각각 계산합니다. RB의 촐레스키 인수(Cholesky Factor)이므로 'IsCholesky'true로 지정하십시오. 또한 B(s,s) = R'*R이며, 고로 R = chol(B(s,s))이므로 치환 벡터 s'CholeskyPermutation'의 값으로 사용하십시오.

[V,D,flag] = eigs(A,R,6,'largestabs','IsCholesky',true,'CholeskyPermutation',s);
flag
flag = 0

flag가 0이므로 모든 고유값이 수렴됩니다.

입력 인수

모두 축소

입력 행렬로, 정사각 행렬로 지정됩니다. A는 항상 그렇지는 않지만 일반적으로 큰 희소 행렬입니다.

A가 대칭 행렬이면 eigs는 그에 특화된 알고리즘을 사용합니다. A거의 대칭에 가까우면 eigs를 호출하기 전에 A = (A+A')/2를 사용하여 A를 대칭 행렬로 만드는 것을 고려해 보십시오. 이렇게 하면 eigs가 복소수 고유값 대신 실수 고유값을 계산합니다.

데이터형: double
복소수 지원 여부:

입력 행렬로, A와 같은 크기의 정사각 행렬로 지정됩니다. B가 지정된 경우 eigs는 일반 고유값 문제 A*V = B*V*D의 해를 구합니다.

B가 양의 정부호 대칭 행렬이면 eigs는 그에 특화된 알고리즘을 사용합니다. B거의 양의 정부호 대칭 행렬에 가까우면 eigs를 호출하기 전에 B = (B+B')/2를 사용하여 B를 대칭 행렬로 만드는 것을 고려해 보십시오.

A가 스칼라인 경우 B를 빈 행렬 eigs(A,[],k)로 지정하여 표준 고유값 문제의 해를 구하고 Bk를 구별할 수 있습니다.

데이터형: double
복소수 지원 여부:

계산할 고유값 개수로, 양의 정수 스칼라로 지정됩니다.

예: eigs(A,2)A에서 가장 큰 고유값 두 개를 반환합니다.

고유값의 유형으로, 다음 표에 있는 값 중 하나로 지정됩니다.

sigma

설명

sigma(R2017a 이하)

스칼라(실수 또는 복소수, 0 포함)

숫자 sigma에 가장 가까운 고유값입니다.

변경 없음

'largestabs'(디폴트 값)

최대 크기의 고유값입니다.

'lm'

'smallestabs'

최소 크기의 고유값입니다. sigma = 0인 경우와 동일합니다.

'sm'

'largestreal'

실수부 기준 최대 고유값입니다.

'lr', 'la'

'smallestreal'

실수부 기준 최소 고유값입니다.

'sr', 'sa'

'bothendsreal'

실수부 기준으로 최대 및 최소 고유값 k/2개를 각각 표시합니다. (k 값이 홀수인 경우는 실수부가 최대인 고유값이 하나 더 표시됩니다.)

'be'

비대칭 문제의 경우, sigma는 다음과 같습니다.

sigma

설명

sigma(R2017a 이하)

'largestimag'

허수부 기준 최대 고유값입니다.

A가 복소수이면 'li'.

'smallestimag'

허수부 기준 최소 고유값입니다.

A가 복소수이면 'si'.

'bothendsimag'

허수부 기준으로 최대 및 최소 고유값 k/2개를 각각 표시합니다. (k 값이 홀수인 경우는 허수부가 최대인 고유값이 하나 더 표시됩니다.)

A가 실수 행렬인 경우 'li'.

예: eigs(A,k,1)은 1에 가장 가까운 고유값 k개를 반환합니다.

예: eigs(A,k,'smallestabs')은 가장 작은 고유값 k개를 반환합니다.

데이터형: double | char | string

options 구조체로, 다음 표의 필드 중 하나 이상을 포함하는 구조체로 지정됩니다.

참고

옵션을 지정하는 데 options 구조체를 사용하는 것은 권장되지 않습니다. 대신 이름-값 쌍을 사용하십시오.

옵션 필드설명이름-값 쌍
issym

Afun 행렬의 대칭.

'IsFunctionSymmetric'
tol

수렴 허용오차.

'Tolerance'
maxit

최대 반복 횟수입니다.

'MaxIterations'
p

Lanczos 기저 벡터 개수입니다.

'SubspaceDimension'
v0

시작 벡터입니다.

'StartVector'
disp

진단 정보 표시 수준.

'Display'
fail출력값에서 수렴되지 않은 고유값 처리.'FailureTreatment'
spdBB가 양의 정부호 대칭 행렬입니까?'IsSymmetricDefinite'
cholB

B가 촐레스키 인수 chol(B)입니까?

'IsCholesky'
permB

희소 B가 실제로 chol(B(permB,permB))인 경우 치환 벡터 permB를 지정합니다.

'CholeskyPermutation'

예: opts.issym = 1, opts.tol = 1e-10은 필드 issymtol의 값이 설정된 구조체를 생성합니다.

데이터형: struct

행렬 함수로, 함수 핸들로 지정됩니다. 함수 y = Afun(x)는 다음 sigma 입력값에 따라 적절한 값을 반환해야 합니다.

  • A*xsigma가 지정되지 않거나 'smallestabs' 이외의 텍스트 옵션인 경우.

  • A\xsigma0이거나 'smallestabs'인 경우

  • (A-sigma*I)\xsigma가 0이 아닌 스칼라인 경우(표준 고유값 문제)

  • (A-sigma*B)\xsigma가 0이 아닌 스칼라인 경우(일반 고유값 문제)

예를 들어, 다음 Afunsigma = 'smallestabs'을 사용하여 eigs를 호출할 때 동작합니다.

[L,U,p] = lu(A,'vector');
Afun = @(x) U\(L\(x(p)));
d = eigs(Afun,100,6,'smallestabs')

일반 고유값 문제의 경우에는 다음과 같이 행렬 B를 추가하십시오(B는 함수 핸들로 나타낼 수 없음).

d = eigs(Afun,100,B,6,'smallestabs')

'IsFunctionSymmetric'(또는 opts.issym)이 지정되지 않으면 A가 비대칭 행렬로 가정됩니다. 'IsFunctionSymmetric'true로 설정하면 eigs가 복소수 고유값 대신 실수 고유값을 계산합니다.

Afun 함수에 추가 파라미터를 제공하는 방법에 대한 자세한 내용은 함수를 파라미터화하기 항목을 참조하십시오.

eigs 호출에 'Display' 옵션을 설정하여 Afun에서 예상되는 출력값을 확인할 수 있습니다.

Afun으로 표현된 정사각 행렬 A의 크기로, 양의 정수 스칼라로 지정됩니다.

이름-값 쌍의 인수

선택적으로 Name,Value 인수가 쉼표로 구분되어 지정됩니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. Name은 따옴표 안에 표시해야 합니다. Name1,Value1,...,NameN,ValueN과 같이 여러 개의 이름-값 쌍의 인수를 어떤 순서로든 지정할 수 있습니다.

예: d = eigs(A,k,sigma,'Tolerance',1e-10,'MaxIterations',100)은 수렴 허용오차를 완화하고 더 적은 반복 횟수를 사용합니다.
일반 옵션

모두 축소

수렴 허용오차로, 'Tolerance'과 함께 양의 실수 숫자형 스칼라가 쉼표로 구분되어 지정됩니다.

예: s = eigs(A,k,sigma,'Tolerance',1e-3)

최대 알고리즘 반복 횟수로, 'MaxIterations'와 함께 양의 정수가 쉼표로 구분되어 지정됩니다.

예: d = eigs(A,k,sigma,'MaxIterations',350)

크릴로프 부분공간의 최대 크기로, 'SubspaceDimension'과 함께 음이 아닌 정수가 쉼표로 구분되어 지정됩니다. 'SubspaceDimension' 값은 실수 대칭 문제의 경우 k + 1보다 크거나 같아야 하고, 그렇지 않으면 k + 2보다 크거나 같아야 합니다. k는 고유값 개수입니다.

권장되는 값은 p >= 2*k이거나, 실수 비대칭형 문제의 경우 p >= 2*k+1입니다. 'SubspaceDimension' 값을 지정하지 않으면 디폴트 알고리즘은 적어도 20개의 Lanczos 벡터를 사용합니다.

eigs가 수렴에 실패하는 문제의 경우에는 'SubspaceDimension' 값을 증가시키면 수렴 동작이 개선될 수 있습니다. 그러나, 값을 너무 많이 늘리면 메모리 문제를 초래할 수 있습니다.

예: d = eigs(A,k,sigma,'SubspaceDimension',25)

초기 시작 벡터로, 'StartVector'와 함께 숫자형 벡터가 쉼표로 구분되어 지정됩니다.

다른 확률 시작 벡터를 지정하는 1차적인 이유는 벡터를 생성하는 데 사용되는 난수 스트림을 제어해야 할 때입니다.

참고

eigs는 프라이빗 난수 스트림을 사용하여 재현 가능한 방식으로 시작 벡터를 선택합니다. 난수 시드값을 변경해도 시작 벡터에는 영향을 주지 않습니다.

예: d = eigs(A,k,sigma,'StartVector',randn(m,1))에서는 전역 난수 스트림에서 값을 도출하는 난수 시작 벡터를 사용합니다.

데이터형: double

수렴되지 않는 고유값의 처리 방식으로, 'FailureTreatment'와 함께 'replacenan', 'keep' 또는 'drop' 옵션 중 하나가 쉼표로 구분되어 지정됩니다.

'FailureTreatment'의 값에 따라 eigs 함수가 출력값에 수렴되지 않는 고유값을 표시하는 방식이 결정됩니다.

옵션

출력값에 미치는 영향

'replacenan'

수렴되지 않은 고유값을 NaN 값으로 대체합니다.

'keep'

출력값에 수렴되지 않은 고유값을 포함합니다.

'drop'

출력값에서 수렴되지 않은 고유값을 제거합니다. 이 옵션을 설정하면 eigs 함수는 요청한 개수보다 적은 고유값을 반환할 수 있습니다.

예: d = eigs(A,k,sigma,'FailureTreatment','drop')은 출력값에서 수렴되지 않은 고유값을 제거합니다.

데이터형: char | string

진단 정보 표시에 대한 토글로, 'Display'와 함께 숫자형 또는 논리값 1(true)이나 0(false)이 쉼표로 구분되어 지정됩니다. true 또는 1 값을 지정하면 계산 중에 진단 정보가 표시됩니다.

Afun에 대한 옵션

모두 축소

Afun 행렬의 대칭 여부로, 'IsFunctionSymmetric'과 함께 숫자형 또는 논리값 1(true)이나 0(false)이 쉼표로 구분되어 지정됩니다.

이 옵션은 Afun이 입력 벡터에 적용하는 행렬이 대칭 행렬인지 여부를 지정합니다. eigs가 대칭 행렬에 대해 특화된 알고리즘을 사용하고 실수 고유값을 반환하도록 하려면 true 또는 1로 값을 지정하십시오.

일반 고유값 문제 A*V = B*V*D에 대한 옵션

모두 축소

B에 대한 촐레스키 분해 여부 토글로, 'IsCholesky'와 함께 숫자형 또는 논리값 1(true)이나 0(false)이 쉼표로 구분되어 지정됩니다.

이 옵션은 호출 eigs(A,B,___)에 있는 행렬 B의 입력값이 실제로 R = chol(B)에서 생성된 촐레스키 인수 R인지 여부를 지정합니다.

참고

sigma'smallestabs' 또는 숫자형 스칼라인 경우에는 이 옵션을 사용하지 마십시오.

촐레스키 치환 벡터로, 'CholeskyPermutation'과 함께 숫자형 벡터가 쉼표로 구분되어 지정됩니다. chol(B(permB,permB))에 따라 인수분해하기 전에 희소 행렬 B가 다시 정렬된 경우 치환 벡터 permB를 지정하십시오.

[R,p,permB] = chol(B,'vector')와 같이 희소 행렬에 출력값을 3개 갖는 chol 구문을 사용하여 permB를 직접 얻을 수도 있습니다.

참고

sigma'smallestabs' 또는 숫자형 스칼라인 경우에는 이 옵션을 사용하지 마십시오.

B의 양의 정부호 대칭 행렬 여부를 전환하는 토글로, 'IsSymmetricDefinite'와 함께 숫자형 또는 논리값 1(true)이나 0(false)이 쉼표로 구분되어 지정됩니다. B가 양의 정부호 대칭 행렬임을 즉, 이것이 순양수 고유값으로 구성된 대칭 행렬임을 알고 있으면 true 또는 1을 지정하십시오.

B가 양의 준정부호 행렬이면(일부 고유값은 0임) 'IsSymmetricDefinite'true 또는 1로 지정할 때 eigs 함수는 B가 양의 정부호 대칭 행렬일 때 사용하는 전문 알고리즘과 같은 알고리즘을 사용하게 됩니다.

참고

이 옵션을 사용하려면 sigma의 값이 숫자형이거나 'smallestabs'여야 합니다.

출력 인수

모두 축소

고유값으로, 열 벡터로 반환됩니다. dsigma의 값에 따라 다르게 정렬됩니다.

sigma의 값

출력값 정렬

'largestabs'

크기 기준 내림차순 정렬

'largestreal'

실수부 기준 내림차순 정렬

'largestimag'

허수부 기준 내림차순 정렬

'smallestabs'

크기 기준 오름차순 정렬

'smallestreal'

'bothendsreal'

실수부 기준 오름차순 정렬

'smallestimag'

허수부 기준 오름차순 정렬

'bothendsimag'

허수부의 절댓값 기준 내림차순 정렬

고유벡터로, 행렬로 반환됩니다. V의 열은 D의 주대각선상에 있는 고유값에 대응합니다. V의 형식과 정규화는 다음과 같이 입력 인수의 조합에 따라 달라집니다.

  • [V,D] = eigs(A)는 행렬 V를 반환합니다. 행렬의 각 열은 A*V = V*D를 충족하는 A의 우고유벡터입니다. V 내 고유벡터는 각각의 2-노름이 1이 되도록 정규화됩니다.

    A가 대칭 행렬이면 고유벡터 V는 정규 직교 벡터입니다.

  • [V,D] = eigs(A,B)는 각 열이 A*V = B*V*D를 충족하는 일반화된 우고유벡터인 행렬, V를 반환합니다. 각 고유벡터의 2-노름은 반드시 1일 필요가 없습니다.

    B가 양의 정부호 대칭 행렬이면 V의 고유벡터는 각각의 B-노름이 1이 되도록 정규화됩니다. A도 대칭 행렬이면 고유벡터는 B-정규 벡터입니다.

컴퓨터, MATLAB® 릴리스 또는 파라미터(예: 시작 벡터 및 부분공간 차원)가 다르면, 같지는 않지만 수치적으로는 정확한 고유벡터가 생성될 수 있습니다.

  • 실수 고유벡터의 경우, 고유벡터의 기호가 달라질 수 있습니다.

  • 복소수 고유벡터의 경우, 크기가 1인 복소수와 고유벡터를 곱할 수 있습니다.

  • 중복 고유값의 경우, 일차 결합을 통해 고유벡터를 다시 결합할 수 있습니다. 예를 들어, Ax = λx이고 Ay = λy인 경우 A(x+y) = λ(x+y)이므로, x+y도 A의 고유벡터입니다.

고유값 행렬로, 주대각선에 고유값이 있는 대각 행렬로 반환됩니다.

수렴 플래그로, 0 또는 1로 반환됩니다. 값이 0이면 모든 고유값이 수렴되었음을 나타냅니다. 그렇지 않으면 일부 고유값이 수렴되지 않았음을 나타냅니다.

이 수렴 플래그 출력값을 사용하면 실패한 수렴에 대한 경고가 표시되지 않습니다.

  • eigs는 프라이빗 난수 스트림을 사용하는 디폴트 시작 벡터를 생성하여 매 실행마다 같은 결과를 재현할 수 있게 합니다. eigs를 호출하기 전에 rng를 사용하여 난수 생성기 상태를 설정해도 출력값에는 영향을 주지 않습니다.

  • 작고 조밀한 행렬의 고유값 몇 개를 구하자고자 한다면 eigs를 사용하는 것이 그렇게 효율적인 방법은 아닙니다. 이러한 문제에는 eig(full(A))를 사용하는 것이 더 빠를 수 있습니다. 예를 들어, 500×500 행렬에서 고유값 세 개를 구하는 것은 비교적 작은 문제이며 eig를 사용하여 쉽게 처리할 수 있습니다.

  • eigs가 어떤 행렬에 대해 수렴하지 않는 경우 'SubspaceDimension' 값을 늘려 Lanczos 기저 벡터의 개수를 늘려보십시오. 부차적인 옵션으로 최대 반복 횟수, 'MaxIterations', 수렴 허용오차 'Tolerance'를 조정하는 것도 수렴 동작에 도움이 될 수 있습니다.

호환성 관련 고려 사항

모두 확장

R2017b에서 동작이 변경됨

참고 문헌

[1] Stewart, G.W. "A Krylov-Schur Algorithm for Large Eigenproblems." SIAM Journal of Matrix Analysis and Applications. Vol. 23, Issue 3, 2001, pp. 601–614.

[2] Lehoucq, R.B., D.C. Sorenson, and C. Yang. ARPACK Users' Guide. Philadelphia, PA: SIAM, 1998.

확장 기능

참고 항목

| |

R2006a 이전에 개발됨