Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Lecture 21. 고윳값과 고유벡터

Eigenvalues and Eigenvectors — 서술

행렬 AA 를 벡터에 곱하면 그 벡터는 방향이 바뀐다. 대부분은 그렇다. 그런데 어떤 특별한 방향들은 곱해도 방향이 그대로이고 길이만 변한다. 식으로 쓰면 이렇다.

Ax=λxA\vv{x} = \lambda\vv{x}

왼쪽은 행렬 곱셈이고 오른쪽은 그냥 수 곱셈이다. 이 등호가 성립하는 x\vv{x} 를 찾을 수만 있다면 복잡한 행렬 연산을 단순한 수 연산으로 갈아치울 수 있다. 그 대가로 얻는 것이 크다. A100A^{100} 을 계산할 수 있게 되고, 미분방정식을 풀 수 있게 되고, 시스템이 안정한지 판정할 수 있게 된다.

여기서부터 이 교재의 주제가 바뀐다. L1부터 L17까지가 Ax=bA\vv{x} = \vv{b} 를 푸는 이야기였다면, 이제부터는 AA 자체를 이해하는 이야기이다.

그리고 지난 세 강의에 대한 답도 여기서 나온다. 행렬식을 배우며 "이걸 왜 하지"라고 생각했다면, 2절의 한 줄이 답이다.


1. 방향이 바뀌지 않는 방향

A=[2112]A = \begin{bmatrix} 2 & 1 \\ 1 & 2\end{bmatrix} 를 여러 방향에 곱해 보자.

\vv{x} 를 돌려 가며 A\vv{x} 와 비교하면, 대부분은 방향이 어긋나는데 두 방향만 그대로이다.

Figure 1:x\vv{x} 를 돌려 가며 AxA\vv{x} 와 비교하면, 대부분은 방향이 어긋나는데 두 방향만 그대로이다.

반면 λ\lambda 는 0이어도 된다. λ=0\lambda = 0 이면 식이 Ax=0A\vv{x} = \vv{0} 이 되는데, 이것은 L6의 영공간이다.

λ=0 인 고유벡터N(A) 의 0 아닌 원소\lambda = 0 \text{ 인 고유벡터} \quad\Longleftrightarrow\quad \Nul(A) \text{ 의 } \vv{0} \text{ 아닌 원소}

영공간을 처음 배울 때는 "AA 가 0으로 보내 버리는 방향"이었다. 이제 같은 것을 "배율이 0인 고유방향"으로도 읽을 수 있다.


2. 어떻게 찾는가 — 특성방정식

(1)에는 미지수가 둘이다. x\vv{x} 도 모르고 λ\lambda 도 모른다. 둘을 한꺼번에 풀 수는 없으니 하나를 먼저 몰아낸다. 오른쪽을 왼쪽으로 옮겨 보자.

Ax=λx(AλI)x=0A\vv{x} = \lambda\vv{x} \qquad\Longleftrightarrow\qquad (A - \lambda I)\,\vv{x} = \vv{0}

λx\lambda\vv{x}λIx\lambda I\vv{x} 로 써야 크기가 맞는다는 점만 주의하면 된다. 이제 세 단계로 간다.

첫째, 우리가 원하는 것은 x0\vv{x} \neq \vv{0} 인 해이다. 정의가 그것을 요구한다.

둘째, 그런 해가 있다는 것은 (AλI)(A - \lambda I)영공간이 원점보다 크다는 뜻이다. L6에서 영공간을 정의한 그대로이다.

셋째, 영공간이 원점보다 크다는 것은 그 행렬이 특이하다는 뜻이고, L18의 (23)에 의해 그것은 행렬식이 0이라는 뜻이다.

det(AλI)=0\det(A - \lambda I) = 0

이것을 특성방정식이라 한다. 미지수가 λ\lambda 하나뿐인 방정식이 되었다.

L20의 언어로 바꾸면 더 선명하다. 행렬식은 부피였다.

L20의 그림이다. \det = 0 은 도형이 납작하게 눌렸다는 뜻이었다.

Figure 2:L20의 그림이다. det=0\det = 0 은 도형이 납작하게 눌렸다는 뜻이었다.

λ\lambda 를 돌리면 AλIA - \lambda I 의 열들이 만드는 도형이 커졌다 작아졌다 하는데, 그 부피가 정확히 0이 되는 순간의 λ\lambda 가 고윳값이다.

왼쪽은 \lambda 에 따른 행렬식의 값이고, 오른쪽 셋은 그때 도형이 어떻게 되는지이다.
\lambda = 1 과 \lambda = 3 에서 납작해진다.

Figure 3:왼쪽은 λ\lambda 에 따른 행렬식의 값이고, 오른쪽 셋은 그때 도형이 어떻게 되는지이다. λ=1\lambda = 1λ=3\lambda = 3 에서 납작해진다.

예제

A=[2112]A = \begin{bmatrix} 2 & 1 \\ 1 & 2\end{bmatrix} 로 끝까지 해 보자.

det(AλI)=det[2λ112λ]=(2λ)21=λ24λ+3\det(A - \lambda I) = \det\begin{bmatrix} 2 - \lambda & 1 \\ 1 & 2 - \lambda \end{bmatrix} = (2-\lambda)^2 - 1 = \lambda^2 - 4\lambda + 3

인수분해하면 (λ1)(λ3)=0(\lambda - 1)(\lambda - 3) = 0 이므로 고윳값이 1과 3이다.

고유벡터는 각 λ\lambda 마다 (AλI)x=0(A - \lambda I)\vv{x} = \vv{0} 을 풀면 된다. 곧 영공간을 구하는 일이고, L7에서 배운 그대로이다. 새로운 기법이 필요한 것이 아니다.

λ=3\lambda = 3 부터 보자. AA 의 대각에서 3을 빼면 이렇게 된다.

A3I=[231123]=[1111]A - 3I = \begin{bmatrix} 2 - 3 & 1 \\ 1 & 2 - 3 \end{bmatrix} = \begin{bmatrix} -1 & 1 \\ 1 & -1 \end{bmatrix}

두 행이 서로의 -1 배라 소거하면 둘째 행이 통째로 사라진다. 랭크가 1이다. 남은 방정식은 하나뿐이다.

x1+x2=0x2=x1x=t[11]-x_1 + x_2 = 0 \qquad\Longrightarrow\qquad x_2 = x_1 \qquad\Longrightarrow\qquad \vv{x} = t\begin{bmatrix} 1 \\ 1 \end{bmatrix}

λ=1\lambda = 1 도 같은 방식이다.

AI=[1111]x1+x2=0x=t[11]A - I = \begin{bmatrix} 1 & 1 \\ 1 & 1 \end{bmatrix} \qquad\Longrightarrow\qquad x_1 + x_2 = 0 \qquad\Longrightarrow\qquad \vv{x} = t\begin{bmatrix} 1 \\ -1 \end{bmatrix}

두 행렬 모두 랭크가 1이라 영공간이 1차원이다. 특이해졌다는 것이 눈에 보인다. λ\lambda 를 다른 값으로 놓으면 이런 일이 벌어지지 않는다. 예를 들어 λ=2\lambda = 2 이면

A2I=[0110]A - 2I = \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix}

인데 이 행렬은 랭크가 2라 영공간이 원점뿐이다. x=0\vv{x} = \vv{0} 밖에 없으니 고유벡터가 아니다. 고윳값이 1과 3 뿐인 이유가 이것이다.

검산해 보자. 정의로 돌아가 곱해 보면 된다.

A[11]=[33]=3[11],A[11]=[11]=1[11]A\begin{bmatrix} 1 \\ 1 \end{bmatrix} = \begin{bmatrix} 3 \\ 3 \end{bmatrix} = 3\begin{bmatrix} 1 \\ 1 \end{bmatrix}, \qquad A\begin{bmatrix} 1 \\ -1 \end{bmatrix} = \begin{bmatrix} 1 \\ -1 \end{bmatrix} = 1\begin{bmatrix} 1 \\ -1 \end{bmatrix}

3. 검산 도구 두 개

고윳값을 구했으면 반드시 확인해야 할 것이 둘 있다.

λ1+λ2++λn=tr(A),λ1λ2λn=detA\lambda_1 + \lambda_2 + \cdots + \lambda_n = \operatorname{tr}(A), \qquad \lambda_1 \lambda_2 \cdots \lambda_n = \det A

여기서 tr(A)\operatorname{tr}(A) 는 대각 성분의 합이다.

2×22 \times 2 로 확인하자. 특성다항식을 전개하면

det[aλbcdλ]=λ2(a+d)λ+(adbc)\det\begin{bmatrix} a - \lambda & b \\ c & d - \lambda \end{bmatrix} = \lambda^2 - (a + d)\lambda + (ad - bc)

이다. 근과 계수의 관계로 두 근의 합이 a+d=tr(A)a + d = \operatorname{tr}(A) 이고 곱이 adbc=detAad - bc = \det A 이다.

일반적인 nn 에서도 같은 결론이 나온다. 다만 세 걸음이 필요하다.

첫째, 특성다항식이 정말 nn 차인가. L19의 빅 포뮬러로 보면 바로 보인다. det(AλI)\det(A - \lambda I) 의 각 항은 AλIA - \lambda I 의 성분 nn 개를 곱한 것인데, 그 성분은 대각에서 온 aiiλa_{ii} - \lambda 이거나 대각 밖에서 온 상수 aija_{ij} 이다. 곧 각 항이 λ\lambda 에 대해 많아야 nn이고, 합인 특성다항식도 그렇다.

둘째, λn\lambda^nλn1\lambda^{n-1} 은 어디서 오는가. 항등순열이 만드는 대각의 곱만 λ\lambdann 개 갖는다. 다른 순열은 대각을 적어도 둘 벗어나므로(σ(i)i\sigma(i) \neq iii 가 하나뿐일 수는 없다) λ\lambda 를 많아야 n2n-2 개 갖는다.

det(AλI)=(a11λ)(a22λ)(annλ)+(λn2 이하의 항)\det(A - \lambda I) = (a_{11} - \lambda)(a_{22} - \lambda)\cdots(a_{nn} - \lambda) + (\lambda^{n-2} \text{ 이하의 항})

앞의 곱을 전개할 때 λn\lambda^n 은 모든 괄호에서 λ-\lambda 를 고른 것이고, λn1\lambda^{n-1} 은 딱 한 괄호에서 aiia_{ii} 를 고르고 나머지에서 λ-\lambda 를 고른 것이다. 고르는 방법이 nn 가지이니 계수가 aiia_{ii} 들의 합, 곧 대각합이다.

det(AλI)=(1)nλn+(1)n1tr(A)λn1+\det(A - \lambda I) = (-1)^n \lambda^n + (-1)^{n-1}\operatorname{tr}(A)\,\lambda^{n-1} + \cdots

셋째, 근으로 인수분해한다. nn 차 다항식이고 근이 λ1,,λn\lambda_1, \dots, \lambda_n 이며 최고차 계수가 (1)n(-1)^n 이므로

det(AλI)=(λ1λ)(λ2λ)(λnλ)\det(A - \lambda I) = (\lambda_1 - \lambda)(\lambda_2 - \lambda)\cdots(\lambda_n - \lambda)

로 쓸 수 있다. 오른쪽을 전개해도 λn\lambda^n 의 계수가 (1)n(-1)^n 이라 앞뒤가 맞는다.

이제 두 결론을 뽑는다. 은 양변에 λ=0\lambda = 0 을 넣으면 나온다. 왼쪽은 det(A0I)=detA\det(A - 0 \cdot I) = \det A 이고 오른쪽은 근의 곱이다.

detA=λ1λ2λn\det A = \lambda_1 \lambda_2 \cdots \lambda_n

(15)의 오른쪽을 (14)의 방식대로 전개해 λn1\lambda^{n-1} 의 계수를 비교하면 나온다. 오른쪽에서 그 계수는 한 괄호에서 λi\lambda_i 를 고르고 나머지에서 λ-\lambda 를 고른 것들의 합이다.

(1)n1tr(A)=(1)n1(λ1++λn)(-1)^{n-1}\operatorname{tr}(A) = (-1)^{n-1}\left(\lambda_1 + \cdots + \lambda_n\right)

양변에서 (1)n1(-1)^{n-1} 을 지우면 대각합이 고윳값의 합이다.

앞의 예에서 tr(A)=2+2=4=1+3\operatorname{tr}(A) = 2 + 2 = 4 = 1 + 3 이고 detA=41=3=1×3\det A = 4 - 1 = 3 = 1 \times 3 이다.


4. 네 가지 사례

계산 절차보다 중요한 것이 사례이다. 네 개를 보면 감이 잡힌다.

단위원이 어디로 가는지, 그리고 안 움직이는 방향이 어디인지가 네 경우 모두 다르다.

Figure 4:단위원이 어디로 가는지, 그리고 안 움직이는 방향이 어디인지가 네 경우 모두 다르다.

투영행렬 — L15의 약속을 갚는다

y=xy = x 위로의 투영행렬은 P=12[1111]P = \frac12\begin{bmatrix}1&1\\1&1\end{bmatrix} 이다. 직선 위의 벡터는 투영해도 그대로이니 λ=1\lambda = 1 이고, 직선에 수직인 벡터는 그림자가 지지 않으니 λ=0\lambda = 0 이다.

P[11]=1[11],P[11]=0[11]P\begin{bmatrix}1\\1\end{bmatrix} = 1 \cdot \begin{bmatrix}1\\1\end{bmatrix}, \qquad P\begin{bmatrix}1\\-1\end{bmatrix} = 0 \cdot \begin{bmatrix}1\\-1\end{bmatrix}

L15에서 그린 그림이 사실 고유벡터의 그림이었다. 그리고 그때 미뤄 둔 약속도 여기서 갚을 수 있다. P2=PP^2 = P 하나만으로 고윳값이 0과 1뿐임이 나온다(L15의 (22)).

Px=λxP\vv{x} = \lambda\vv{x} 의 양변에 PP 를 한 번 더 곱하면

P2x=λPx=λ2xP^2\vv{x} = \lambda P\vv{x} = \lambda^2 \vv{x}

인데 P2=PP^2 = P 이므로 왼쪽이 Px=λxP\vv{x} = \lambda\vv{x} 이다. 따라서 λx=λ2x\lambda\vv{x} = \lambda^2\vv{x} 이고, x0\vv{x} \neq \vv{0} 이므로

λ2=λλ=0 또는 1\lambda^2 = \lambda \qquad\Longrightarrow\qquad \lambda = 0 \text{ 또는 } 1

이다. 계산을 한 줄도 하지 않고 고윳값을 알아냈다. 행렬이 만족하는 등식이 곧 고윳값이 만족하는 등식이 된다.

삼각행렬 — 대각을 읽으면 끝

A=[3102]A = \begin{bmatrix} 3 & 1 \\ 0 & 2\end{bmatrix} 에서 AλIA - \lambda I 도 삼각행렬이다. 삼각행렬의 행렬식은 대각의 곱이었으므로(L18의 (8))

det(AλI)=(3λ)(2λ)=0\det(A - \lambda I) = (3 - \lambda)(2 - \lambda) = 0

이고 고윳값이 3과 2이다. 삼각행렬은 대각을 읽으면 그것이 고윳값이다.

그렇다면 아무 행렬이나 소거해서 삼각행렬 UU 로 만든 다음 UU 의 대각을 읽으면 고윳값을 공짜로 얻는 것이 아닌가. 그렇지 않다. 소거는 행렬식을 보존하지만 고윳값은 보존하지 않는다. 이 절에서 쓰던 행렬로 확인해 보자.

A=[2112]  2행121행  U=[21032]A = \begin{bmatrix} 2 & 1 \\ 1 & 2 \end{bmatrix} \qquad\xrightarrow{\;\text{2행} - \tfrac12 \text{1행}\;}\qquad U = \begin{bmatrix} 2 & 1 \\ 0 & \tfrac32 \end{bmatrix}

AA 의 고윳값은 1과 3이었는데 UU 의 대각은 232\tfrac32 이다. 전혀 다르다.

고윳값대각합행렬식
AA1,  31,\;343
UU2,  322,\;\tfrac3272\tfrac723

행렬식만 3으로 살아남았다. 소거가 보존하는 것은 행렬식이지 고윳값이 아니다.

이유는 (4)의 식을 보면 알 수 있다. 고윳값은 AA 가 아니라 AλIA - \lambda I 의 성질이다. AA 에 소거를 하면 AλIA - \lambda I 에는 같은 소거가 적용되지 않는다. 대각에서 λ\lambda 를 뺀 뒤에는 피벗의 자리와 크기가 달라져 소거의 배수 자체가 λ\lambda 에 따라 바뀌기 때문이다.

회전행렬 — 실수 고유벡터가 없다

90도 회전행렬 Q=[0110]Q = \begin{bmatrix} 0 & -1 \\ 1 & 0\end{bmatrix} 를 보자.

det(QλI)=det[λ11λ]=λ2+1=0\det(Q - \lambda I) = \det\begin{bmatrix} -\lambda & -1 \\ 1 & -\lambda \end{bmatrix} = \lambda^2 + 1 = 0

실수 해가 없다. λ=±i\lambda = \pm i 이다.

당연한 결과이다. 모든 것을 돌리는 변환에 안 돌아가는 방향이 있을 리 없다. 회전목마 위에 가만히 있는 자리는 없다.

검산 도구는 복소수에서도 통한다. tr(Q)=0=i+(i)\operatorname{tr}(Q) = 0 = i + (-i) 이고 detQ=1=i(i)\det Q = 1 = i \cdot (-i) 이다.

결함 행렬 — 고윳값은 둘인데 고유벡터는 하나

B=[3103]B = \begin{bmatrix} 3 & 1 \\ 0 & 3\end{bmatrix} 은 삼각행렬이므로 고윳값이 3, 3 이다. 같은 값이 두 번 나왔다. 고유벡터를 구해 보자.

B3I=[0100]B - 3I = \begin{bmatrix} 0 & 1 \\ 0 & 0 \end{bmatrix}

이 행렬의 랭크가 1이므로 영공간이 1차원뿐이다. 고윳값은 두 개인데 독립인 고유벡터는 (1,0)(1, 0) 하나밖에 없다.

지금은 이상해 보인다. 답은 미뤄 두자. 다음 강의에서 이것이 왜 문제가 되는지 보고, L28에서 어떻게 다루는지 배운다.


5. 고유벡터에는 정해진 길이가 없다

Ax=λxA\vv{x} = \lambda\vv{x} 이면 아무 수 c0c \neq 0 에 대해

A(cx)=cAx=cλx=λ(cx)A(c\vv{x}) = c\,A\vv{x} = c\lambda\vv{x} = \lambda(c\vv{x})

이므로 cxc\vv{x} 도 같은 고윳값의 고유벡터이다. 고유벡터는 방향이지 특정한 벡터가 아니다.

한 걸음 더 가면, 같은 λ\lambda 에 딸린 고유벡터를 전부 모으고 영벡터를 더한 것이 N(AλI)\Nul(A - \lambda I) 이고 이것은 부분공간이다. 이를 고유공간이라 한다.


6. 자주 하는 오해

고윳값이 서로 달라야 대각화된다는 오해

정확한 조건은 고윳값이 서로 다른 것이 아니라 독립인 고유벡터가 nn 개 있는 것이다. 고윳값이 서로 다르면 그것이 보장되지만, 같아도 괜찮은 경우가 있다. II 는 고윳값이 전부 1인데도 고유벡터가 nn 개 있다. 다음 강의에서 정면으로 다룬다.

특성방정식으로 실제로 고윳값을 구한다는 오해

2×22 \times 23×33 \times 3 에서는 그렇게 한다. 그러나 5차 이상의 다항식에는 근의 공식이 없고, 있다 해도 계수에서 근을 구하는 일은 수치적으로 매우 불안정하다. 실제 소프트웨어는 특성방정식을 세우지 않고 QRQR 알고리즘 같은 반복법을 쓴다.

L19에서 만난 태도가 또 나온다. 옳은 공식과 쓰는 방법은 다르다.

복소 고윳값이 나오면 틀렸다는 오해

회전행렬에서 본 대로 실수 행렬의 고윳값이 복소수인 것은 정상이다.

고유벡터가 유일하다는 오해

5절에서 본 대로 스케일이 자유이다.


마치며...

이번 강의에서 다룬 것을 정리하면 다음과 같다.

대상내용
정의Ax=λxA\vv{x} = \lambda\vv{x}, x0\vv{x} \neq \vv{0}
λ=0\lambda = 0그 고유벡터가 곧 영공간의 원소
특성방정식det(AλI)=0\det(A - \lambda I) = 0 — 행렬을 특이하게 만드는 λ\lambda
부피의 언어λ\lambda 를 돌려 부피를 0으로 만드는 순간
검산합은 대각의 합, 곱은 행렬식 — λn1\lambda^{n-1}λ0\lambda^0 의 계수 비교
소거행렬식은 보존하지만 고윳값은 보존하지 않는다
투영행렬P2=PP^2 = P 하나로 λ{0,1}\lambda \in \{0, 1\}
삼각행렬대각이 곧 고윳값
회전행렬실수 고유벡터가 없다
결함 행렬고윳값은 둘인데 고유벡터는 하나
스케일고유벡터는 방향이지 특정 벡터가 아니다

L18부터 L20까지 세 강의 동안 행렬식을 배웠고, 그때는 왜 배우는지 말하지 않았다. 이제 답이 나왔다. det(AλI)=0\det(A - \lambda I) = 0 이 그 답이다. 행렬식이 없었다면 이 방정식은 외워야 할 공식이었을 것이고, 부피를 몰랐다면 "왜 행렬식이 0이어야 하는가"에 답할 수 없었을 것이다.

몇 가지 흥미로운 사례도 보았다. 투영행렬의 고윳값은 0과 1뿐이었고, 회전행렬에는 실수 고유벡터가 아예 없었으며, 어떤 행렬은 고윳값이 두 개인데 고유벡터는 하나뿐이었다. 마지막 것은 잠시 미뤄 두자.

다음 강의에서는 이 특별한 방향들을 아예 기저로 삼아 버리면 어떤 일이 벌어지는지 본다. 좌표계를 고유벡터에 맞춰 갈아끼우는 순간 행렬 곱셈이 수 곱셈으로 바뀌고, 그때 A100A^{100} 같은 계산이 우스워진다.


이번 강의의 내용을 파이썬으로 확인해 보려면 L21 실습 노트북으로 넘어가면 된다. 특성다항식을 직접 세워 근을 구하고, np.linalg.eig 와 대조하며, 네 가지 사례에서 단위원이 어떻게 옮겨 가는지 회전시켜 볼 수 있다.