제 6 장 고유값 (Eigenvalues)

 

행렬 A가 차 정사각행렬이고, 영벡터가 아닌 임의의 벡터 가 적당한 스칼라 에 대하여 를 만족할 때  를 행렬 의 고유값, 에 대응하는 행렬의 고유벡터라는 것은 이미 알고 있다. 이장에서는 그러한  고유값의 의미를 MATLAB을 이용하여 눈으로 보고 그 위치를 그려보는 것을 시도해 보고자 한다.

 

      § 6.1 고유값

 

행렬 의 고유값과 고유벡터를 Matlab을 이용하여 그림으로 구해 보자. 행렬 A의 고유값과 고유벡터를 그림으로 보여주는 명령어는 eigshow(A)이다.

      »A=[1 -3;-3 1]

          A =

             1    -3

            -3     1

         »eigshow(A)

아래의 두 그림은 마우스를 이용하여 움직임으로써 나타내어지는 그림이며 원은 단위 원이고 원에 닿은 벡터는 단위벡터 이며 긴 벡터는 이다. 벡터를 회전 시킬 때 와 방향이 겹치거나 방향이 반대인 경우가 생기는 데, 이때의 값이 고유 벡터와 그에 대응하는 고유값임을 그림은 잘 나타내 주고 있다. 즉,  가 겹치는 경우 가 되고 그 크기 는 고유값이 되는 것이며 그 값이 norm로서 오른쪽 위에 나타난다. 이것이 고유값이 되는 것이다. 따라서 고유값은 4와 -2임을 알 수 있다.

    

 

이번에는 행렬의 고유값을 다른 방법으로 얻어보자. 행렬 를 입력한 다음에 명령어는 eigplot(B)를 이용하면 행렬 B의 고유값을 좌표평면위에서 그 위치를 알 수 있게 된다.

B =

    2.0000         0

    1.5000    0.5000

          »eigplot(B)

 

그 M-file을 보면 다음과 같다.

 

» ea=eig(a);

» plot(real(ea),imag(ea),'x')

» v=axis;

» v(1)=min(v(1),-1);

» v(2)=max(v(2),1);

» v(3)=min(v(3),-1);

» v(4)=max(v(4),1);

» axis=v;

» xd=(v(2)-v(1))/40;

» yd=(v(4)-v(3))/20;

» xpos=v(2)+xd;

» ypos=v(4)+yd;

» text('Position',[xpos 0],'String','Re')

» text('Position',[-xd,ypos],'String','Im')    

» hold on

» plot([v(1),v(2)],[0,0],'r',[0,0],[v(3),v(4)],'r')

 

이와 같이 명령어 eigplot(B)는 행렬 의 고유값의 위치를 그림으로 보여 준다. 행렬의 고유값과 고유벡터를 연구하는데 있어서 흥미를 주는 gallery 행렬이 있다. 이제 5차 gallery 행렬의 고유값에 대하여 알아보자.

 

A=gallery(5)

A =

          -9          11         -21          63        -252

          70         -69         141        -421        1684

        -575         575       -1149        3451      -13801

        3891       -3891        7782      -23345       93365

        1024       -1024        2048       -6144       24572

 

 위의 5차 gallery 행렬 의 고유값은 아래 5개이다. 이는 아래와 같이 고유값을 구하는 명령어 "eig" 으로도 쉽게 구할 수 있다. 이 경우 복소수 고유값이 4개가 있다. 그림은 나타나지 않아 시각화는 안되지만 실용적인 명령어이다.

» e=eig(A)

e =

  -0.0157 + 0.0116i

  -0.0157 - 0.0116i

   0.0061 + 0.0183i

   0.0061 - 0.0183i

   0.0192          

 

이 때 p=poly(A)는 행렬 A의 특성방정식의 계수를 구해줌으로써 특성방정식의 형태를 알게 해 준다. 아래의 수의 배열은 다항식 P의 각항의 계수들을 나타낸다.

 

          »P=poly(A)

p =

    1.0000    0.0000    0.0000    0.0000    0.0000    0.0000

 

roots(p) 은 특성방정식의 근을 구하여 주며 그 근이 바로 위와 같은 고유값임을 알게 해 준다.

» roots(p)

ans =

  -0.0157 + 0.0116i

  -0.0157 - 0.0116i

   0.0061 + 0.0183i

   0.0061 - 0.0183i

   0.0192    

 

다음에는 부호행렬의 고유값을 생각해 보자.

 

 »S =signmat(5)

 S=    1    -1     1    -1     1

      -1     1    -1     1    -1

       1    -1     1    -1     1

      -1     1    -1     1    -1

       1    -1     1    -1     1

 

의 고유값은 아래와 같음을 알 수 있다.

 

»eig(S)

ans =

     0

     0

     0

     5

     0

 

위와 같은 방법으로 Hadamard 행렬의 고유값을 구해보자.

»H=hadamard(4)/2

H =

    0.5000    0.5000    0.5000    0.5000

    0.5000   -0.5000    0.5000   -0.5000

    0.5000    0.5000   -0.5000   -0.5000

    0.5000   -0.5000   -0.5000    0.5000

eig(H)은 위의 행렬의 고유값을 준다.

»eig(H)

ans =

    1.0000

    1.0000

   -1.0000

   -1.0000

 

A=randint(3) 로 임의의 행렬을 만들자.

 

A =

    -6     6     0

    -7    -9     9

     1     1     5

 

p=round(poly(A))는 행렬 의  특성다항식을 나타내 주며  Matlab에서는 다음과 같이 다항식의 계수만을 나타내 준다. 따라서 행렬 의 특성다항식은   이다.

          »P=round(poly(A))

 

p =

     1    10    12  -588

» e=eig(A)

e =

  -7.8712 + 6.3594i

  -7.8712 - 6.3594i

   5.7423          

 

한편 위의 특성방정식을 행렬에 대한 특성방정식으로 만들어 주는 명령어  로는 polyvalm(p,A)이 있으며 이는 p(A)= A^3 + 10 A^2 +12A -588 I를 의미한다. 또한 이것은  Cayley-Hamilton 정리에 의해   0행렬이 됨을 쉽게 확인할 수 있다.

»polyvalm(P,A)

ans =

     0     0     0

     0     0     0

     0     0     0

따라서 Cayley-Hamilton 정리가  성립함을 쉽게 알아 볼 수 있으며. 이와같이 Cayley-Hamilton 정리가 언제나 실제로 성립하는 것을 Matlab은 어렵지 않게 보여주는 것이다. 이것이 바로 Matlab을 이용하여 하는 교육의 열쇠인 것이다. 이런 접근 방법은 주요 정리의 의미가 무엇인지를 마음속에 분명히 심어 준다.

 

§6.2 고유값에 대한 conjecture 만들기

 

이 절에서는 여러 개의 자 모양의 차 행렬을 만들고 명령어 eig()로 고유값을 구하여  차의  행렬의 고유값이 일반적으로 어떻게 추정되는지를 알아보기로 한다.

» N3=nmatrix(3)

N3 =

     1     0     1

     1     1     1

     1     0     1

» eig(N3)

ans =

     1

     2

     0

» N5=nmatrix(5)

N5 =

     1     0     0     0     1

     1     1     0     0     1

     1     0     1     0     1

     1     0     0     1     1

     1     0     0     0     1

» eig(N5)

ans =

     1

     1

     1

     2

     0

 

 이와 같이 이런 실험을 여러번 반복함으로써  N자 모양의 n 차 행렬에 대한 conjecture를 만들 수 있다.

conjecture : n차의 N행렬은 1이 n-2개, 2가, 1개, 0이 한 개인 고유값들을 갖는다고 추측할 수 있다. 물론 이것을 보이는 것도 어렵지 않다.

 

Hermitian 행렬과 Skew Hermitian 행렬의 고유값에 대하여 연구해 보자.

 

N =

     1     0     0     0     1

     1     1     0     0     1

     1     0     1     0     1

     1     0     0     1     1

     1     0     0     0     1

» h=N'*N

h =

     5     1     1     1     5

     1     1     0     0     1

     1     0     1     0     1

     1     0     0     1     1

     5     1     1     1     5

» eig(h)

ans =

    1.0000

    1.0000

    0.3765

    0.0000

   10.6235

 

 

보다싶이 h는 Hermitian행렬이고 이런 행렬의 고유값은 언제나 모두 실수임을 확인 할 수 있었다. 이제 임의의 5차 정사각행렬을 만들고 이를 이용하여 Hermitian 행렬과 Skew Hermitian 행렬의 고유값에 대하여 연구해 보자

 

 

» A=randint(5)은 임의 5차 행렬을 만들어 준다.

A =

     1    -5    -9    -5    -7

     7     4    -2    -6     3

     2    -7    -9    -3    -2

     6    -8     4     7    -2

    -6    -4     8     3     0

 

 

 

» B=A+A'은 당영히 Hermitian 행렬이 된다.

B =

     2     2    -7     1   -13

     2     8    -9   -14    -1

    -7    -9   -18     1     6

     1   -14     1    14     1

   -13    -1     6     1     0

 

» eig(B)는 고유값을 아래와 같이 준다.

ans =

  -12.2516

   -1.9744

  -22.8912

   16.1528

   26.9644

보았다시피 Hermition행렬 B의 고유값은 모두 실수임을 알 수 있다..

» C=A-A'  (Skew Hermitian)

C =

     0   -12   -11   -11    -1

    12     0     5     2     7

    11    -5     0    -7   -10

    11    -2     7     0    -5

     1    -7    10     5     0

» eig(C)

ans =

   0.0000 +22.7468i

   0.0000 -22.7468i

   0.0000 +11.0266i

   0.0000 -11.0266i

   0.0000         

또, SkewHermition 행렬 C의 고유값이 모두 0 또는 순허수임도 Matlab이 확인해 주었다.

 

    §6.3 Gerschgorin Circle 정리

 

1931년에 발견된 Gerschgorin Circle의 정리는 복잡한 차 정사각행렬의 고유값을 계산에 의하지 않고 단지 행렬의 성분들을 이용하여 그려지는 원들을 이용하여 고유값이 존재하는 영역과 그의 위치를 복소평면 위에 나타낼 수 있은 근거를 준다. 이 절에서는  Gerschgorin Circle 정리를 MATLAB을 이용하여 고유값이 존재하는 영역과 그의 위치를 복소평면 위에 그림으로 나타냄으로써 시각화 하고자 한다.

제1 Gerschgorin Circle 정리

  차 정사각행렬의  모든 고유값은 중심

  반지름인 원들중 적어도 한 개

  이상의 원내부에 존재한다.

 

 즉 Gerschgorin Circle정리는 행렬의 주대각선 성분에서 대각선 성분들 의 크기의 합을 반지름으로 하는 원들안에 그 행렬의 고유값이 모두 놓인다는 정리로서 ATLAST M-file 인  gersch는 Gerschgorin Circle들의 영역을그림으로 나타내 준다.

 

제 2 Gerschgorin Circle 정리

 차 정사각행렬 의 Gershigorin Circle들 중에서 서로 소가 아닌

 개의 의Gershigorin Circle이 있으면 이런 원 개들의 합집합   내부에 개의 의 고유값이 존재한다.

 

이제 여러 가지 다양한 행렬을 가지고 ATLAST M-file 인 gersch를 이용하여 Gerschgorin Circle정리를 시각화 해 보도록 한다. 먼저, N자형의 5차 정사각행렬의 고유값을 명령어 eig를 이용하여 구한 다음에 명령어 gersch로  Gerschgorin Circle을 만들어 비교해 보자.

 »N=nmatrix(5)

 

 N =

 

    1     0     0     0     1

    1     1     0     0     1

    1     0     1     0     1

    1     0     0     1     1

    1     0     0     0     1

 

 »e=eig(N)

 

 e =

    1

    1

    1

    2

    0

 »gersch(N)

 »gersch(N,1)

             

               (gersch(N)                          (gersch(N,1))

 

gersch(N) 은 위의 행렬 의  Gershigorin Circle 들은 복소평면위에 그림으로 나타내어 주었으며 gersch(N,1)은 Gershigorin Circle 로 주어진 원의 내부에 고유값 0, 1, 2들을 실수축 위에 점으로 나타내 주었다. 다음의 행렬은  그 고유값이 실수와 허수를 모두 갖는 경우를 예로 든 것이다.

 

 »A=randint(5,5,6)

 

 A =

    -4    -2     0    -1     0

    -6     0     2     2    -5

     2     4    -6     1     2

     2    -6    -2     6    -1

     6    -6    -6     5     3

 

 »e=eig(A)

 

 e =

    8.5126          

   -5.2720 + 1.3596i

   -5.2720 - 1.3596i

   -1.2324          

    2.2639          

 »gersch(A)

 »gersch(A,1)

        

                (gersch(A))                        (gersch(A,1))

 

이제 제 2 Gerschgorin Circle 정리를 쉽게 이해하기 위하여 행렬를 만든 다음에 명령어 gersch를 이용하여 아래와 같이 Gerschgorin Circle을 만들어 보았다.

 

 

 »B=[-15 -2 0 1 3;0 10 2 4 -1;-1 -2 -10 0 -7;1 -1 0 15 3;0 0 -1 2 -20]

 

 B =

    -15    -2     0     1     3

      0    10     2     4    -1

     -1    -2   -10     0    -7

      1    -1     0    15     3

      0     0    -1     2   -20

 

 »e=eig(B)

 

 e =

    -9.1358

   -15.1345

    14.2857

    10.7284

   -20.7438

 

 »gersch(B,1)

 

위의 그림은 5차 정사각행렬 의 Gershigorin Circle들 중에서 서로소가 아닌 3개의 원의 합집합과 2개의 원의 합집합의 내부에 행렬 의 고유값들이 각각 3개와 2개씩 존재하고 있음을 보여 주는 것이며, 이것이 바로 제2 Gerschgorin Circle 정리를 의미하는 것이다. 이와 같이 Matlab은 정리의 깊은 이해와 계산능력 그리고 시각화를 통하여 새로운 정리를 만드는 수학내용을 학습하고 방법을 크게 바꿀 수 있는 수학적 도구로 성장해 오고 있는 깃이다.