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 25. 대칭행렬과 스펙트럼 정리

Symmetric Matrices and the Spectral Theorem — 서술

L21에서 우리는 벡터를 원 위에서 돌려 가며 고유벡터를 사냥했고, 앵커 행렬 A=[2112]A = \begin{bmatrix} 2 & 1 \\ 1 & 2\end{bmatrix} 의 두 고유벡터가 (1,1)(1,1)(1,1)(1,-1) 임을 확인했다. 두 벡터의 내적이 0이었다. 정확히 90도였다.

그때는 우연처럼 보였다. 우연이 아니었다.

S=STS = S^{\mathsf T}

이 단순한 조건 하나가 두 개의 선물을 준다. 첫째, 고윳값이 전부 실수이다. 둘째, 고유벡터를 서로 직교하게 고를 수 있다.

두 번째 선물이 특히 크다. 직교기저의 위력은 이미 L17에서 배웠다. 직교기저에서는 계수를 구하는 데 연립방정식을 풀 필요가 없고 내적 한 번이면 끝난다. 그러니까 대칭행렬은 자기 자신의 직교기저를 들고 태어나는 행렬이다.


1. 고윳값이 실수인 이유

L21에서 회전행렬 [0110]\begin{bmatrix} 0 & -1 \\ 1 & 0\end{bmatrix} 의 고윳값이 ±i\pm i 였다. 실수 성분만 있는 행렬인데도 고윳값이 복소수였다. 대칭행렬은 왜 그런 일이 없는가.

준비물 하나

복소벡터 x\vv{x} 에 대해 xˉTx\bar{\vv{x}}^{\mathsf T}\vv{x} 를 계산해 보자. xˉ\bar{\vv{x}} 는 성분마다 켤레를 취한 것이다. 성분이 xj=aj+bjix_j = a_j + b_j i 이면

xˉjxj=(ajbji)(aj+bji)=aj2+bj2=xj2\bar{x}_j\,x_j = (a_j - b_j i)(a_j + b_j i) = a_j^2 + b_j^2 = |x_j|^2

이므로 전부 더하면 다음이 된다.

xˉTx=jxj2>0(x0 일 때)\bar{\vv{x}}^{\mathsf T}\vv{x} = \sum_j |x_j|^2 > 0 \qquad (\vv{x} \neq \vv{0} \text{ 일 때})

복소수를 다루는데도 이 값은 반드시 양의 실수이다. 이것이 증명의 열쇠이다.

증명

Sx=λxS\vv{x} = \lambda\vv{x} 이고 x0\vv{x} \neq \vv{0} 이라 하자. λ\lambdax\vv{x} 가 복소수일 수도 있다고 열어 두고 시작한다.

첫째, 양변에 켤레를 취한다. SS 는 실수 행렬이라 Sˉ=S\bar{S} = S 이다.

Sx=λxSxˉ=λˉxˉ\overline{S\vv{x}} = \overline{\lambda\vv{x}} \qquad\Longrightarrow\qquad S\,\bar{\vv{x}} = \bar\lambda\,\bar{\vv{x}}

둘째, 이 식을 전치한다. 곱을 전치하면 순서가 뒤집힌다.

xˉTST=λˉxˉTxˉTS=λˉxˉT\bar{\vv{x}}^{\mathsf T}S^{\mathsf T} = \bar\lambda\,\bar{\vv{x}}^{\mathsf T} \qquad\Longrightarrow\qquad \bar{\vv{x}}^{\mathsf T}S = \bar\lambda\,\bar{\vv{x}}^{\mathsf T}

오른쪽으로 갈 때 ST=SS^{\mathsf T} = S 를 썼다. 대칭이라는 조건이 여기서 딱 한 번 쓰이고, 그것이 증명의 전부이다.

셋째, 양쪽에서 조여든다. xˉTSx\bar{\vv{x}}^{\mathsf T}S\vv{x} 라는 하나의 수를 두 가지로 계산해 보자. 오른쪽 두 개를 먼저 묶으면 Sx=λxS\vv{x} = \lambda\vv{x} 이므로

xˉT(Sx)=xˉT(λx)=λxˉTx\bar{\vv{x}}^{\mathsf T}\left(S\vv{x}\right) = \bar{\vv{x}}^{\mathsf T}\left(\lambda\vv{x}\right) = \lambda\,\bar{\vv{x}}^{\mathsf T}\vv{x}

이고, 왼쪽 두 개를 먼저 묶으면 (5)의 식에 의해

(xˉTS)x=(λˉxˉT)x=λˉxˉTx\left(\bar{\vv{x}}^{\mathsf T}S\right)\vv{x} = \left(\bar\lambda\,\bar{\vv{x}}^{\mathsf T}\right)\vv{x} = \bar\lambda\,\bar{\vv{x}}^{\mathsf T}\vv{x}

이다. 같은 수를 두 가지로 계산했으니 같아야 한다.

λxˉTx=λˉxˉTx(λλˉ)xˉTx=0\lambda\,\bar{\vv{x}}^{\mathsf T}\vv{x} = \bar\lambda\,\bar{\vv{x}}^{\mathsf T}\vv{x} \qquad\Longrightarrow\qquad \left(\lambda - \bar\lambda\right)\bar{\vv{x}}^{\mathsf T}\vv{x} = 0

(3)에 의해 xˉTx>0\bar{\vv{x}}^{\mathsf T}\vv{x} > 0 이므로 나눌 수 있다.

λ=λˉλ 는 실수\lambda = \bar\lambda \qquad\Longrightarrow\qquad \lambda \text{ 는 실수}

자기 켤레와 같은 복소수는 허수부가 0인 수뿐이다.

고유벡터도 실수로 고를 수 있다

λ\lambda 가 실수이면 SλIS - \lambda I 도 실수 행렬이고, 그것이 특이하므로 실수 성분만으로 된 영공간 벡터가 존재한다. 그러므로 고유벡터를 굳이 복소수로 쓸 이유가 없다. 앞으로는 실수 벡터로만 다룬다.


2. 고유벡터가 직교하는 이유

이번에는 세 줄이면 끝난다. 그런데 결론은 어마어마하다.

서로 다른 고윳값 λ1λ2\lambda_1 \neq \lambda_2 와 그에 딸린 고유벡터 x1,x2\vv{x}_1, \vv{x}_2 를 보자. 두 벡터의 내적 x1Tx2\vv{x}_1^{\mathsf T}\vv{x}_2 를 두 가지로 계산한다. 이번에도 하나의 수를 양쪽에서 조여드는 방식이다.

계산할 것은 x1TSx2\vv{x}_1^{\mathsf T}S\vv{x}_2 이다. 오른쪽부터 묶으면

x1T(Sx2)=x1T(λ2x2)=λ2(x1Tx2)\vv{x}_1^{\mathsf T}\left(S\vv{x}_2\right) = \vv{x}_1^{\mathsf T}\left(\lambda_2\vv{x}_2\right) = \lambda_2\left(\vv{x}_1^{\mathsf T}\vv{x}_2\right)

이다. 왼쪽부터 묶으려면 x1TS\vv{x}_1^{\mathsf T}S 를 알아야 한다. Sx1=λ1x1S\vv{x}_1 = \lambda_1\vv{x}_1 을 전치하면 나온다.

x1TST=λ1x1Tx1TS=λ1x1T\vv{x}_1^{\mathsf T}S^{\mathsf T} = \lambda_1\vv{x}_1^{\mathsf T} \qquad\Longrightarrow\qquad \vv{x}_1^{\mathsf T}S = \lambda_1\vv{x}_1^{\mathsf T}

여기서도 ST=SS^{\mathsf T} = S 가 한 번 쓰였다. 이제 왼쪽부터 묶는다.

(x1TS)x2=λ1(x1Tx2)\left(\vv{x}_1^{\mathsf T}S\right)\vv{x}_2 = \lambda_1\left(\vv{x}_1^{\mathsf T}\vv{x}_2\right)

두 결과가 같아야 한다.

λ1(x1Tx2)=λ2(x1Tx2)(λ1λ2)(x1Tx2)=0\lambda_1\left(\vv{x}_1^{\mathsf T}\vv{x}_2\right) = \lambda_2\left(\vv{x}_1^{\mathsf T}\vv{x}_2\right) \qquad\Longrightarrow\qquad \left(\lambda_1 - \lambda_2\right)\left(\vv{x}_1^{\mathsf T}\vv{x}_2\right) = 0

λ1λ2\lambda_1 \neq \lambda_2 라 했으므로 앞의 괄호가 0이 아니다. 따라서 뒤가 0이다.

x1Tx2=0\vv{x}_1^{\mathsf T}\vv{x}_2 = 0

직교한다. 세 줄이었다.

왼쪽이 대칭, 오른쪽이 아니다. 대칭이면 고유벡터가 정확히 90도이고, 단위원의 상인 타원의
축이 그 고유벡터 위에 놓인다. 비대칭이면 둘 다 어긋난다.

Figure 1:왼쪽이 대칭, 오른쪽이 아니다. 대칭이면 고유벡터가 정확히 90도이고, 단위원의 상인 타원의 축이 그 고유벡터 위에 놓인다. 비대칭이면 둘 다 어긋난다.

고윳값이 겹치면

증명에서 λ1λ2\lambda_1 \neq \lambda_2 를 썼으니, 같은 고윳값에 딸린 두 고유벡터에 대해서는 아무 말도 하지 못했다. 실제로 그런 둘은 직교하지 않을 수도 있다.

그런데 문제가 되지 않는다. 같은 λ\lambda 에 딸린 고유벡터들은 고유공간이라는 부분공간을 이루고(L21), 부분공간 안에서는 L17의 그람-슈미트로 직교기저를 언제든 만들 수 있기 때문이다. 그렇게 고른 것들도 여전히 고유벡터이다. 고유공간 안의 아무 벡터나 고유벡터이기 때문이다.

그러므로 고르기만 잘하면 늘 직교기저를 얻는다. 여기에 하나가 더 필요하다. 대칭행렬은 고윳값이 겹쳐도 고유벡터가 모자라는 법이 없다는 사실이다. L21의 결함 행렬 [3103]\begin{bmatrix} 3 & 1 \\ 0 & 3\end{bmatrix} 같은 일이 대칭행렬에서는 일어나지 않는다. 증명은 이 교재의 범위를 넘으므로 결론만 쓴다.


3. 스펙트럼 정리 — 역행렬이 전치가 된다

정리의 3번을 유도하자. 어려울 것이 없다. L22의 대각화에 2절의 결과를 얹으면 된다.

직교하는 고유벡터들을 길이 1로 맞춰 열에 세운 것을 QQ 라 하자. 열이 서로 직교하고 길이가 1이므로 QTQQ^{\mathsf T}Q(i,j)(i,j) 성분은 qiTqj\vv{q}_i^{\mathsf T}\vv{q}_j 이고, i=ji = j 이면 1이고 아니면 0이다.

QTQ=IQ1=QTQ^{\mathsf T}Q = I \qquad\Longrightarrow\qquad Q^{-1} = Q^{\mathsf T}

L17에서 배운 직교행렬의 성질 그대로이다.

L22의 대각화는 A=(고유벡터 행렬)Λ(고유벡터 행렬)1A = (\text{고유벡터 행렬})\Lambda(\text{고유벡터 행렬})^{-1} 이었다. 여기서 고유벡터 행렬이 QQ 이고, (16)에 의해 그 역이 QTQ^{\mathsf T} 이다.

S=QΛQ1=QΛQTS = Q\Lambda Q^{-1} = Q\Lambda Q^{\mathsf T}

역행렬 계산이 전치로 바뀌었다.

S\vv{x} = Q\Lambda Q^{\mathsf T}\vv{x} 를 오른쪽부터 읽은 것이다. L22의 세 단계와 같은데,
번역과 역번역이 회전이라는 점이 다르다. 길이를 바꾸지 않는 변환이다.

Figure 2:Sx=QΛQTxS\vv{x} = Q\Lambda Q^{\mathsf T}\vv{x} 를 오른쪽부터 읽은 것이다. L22의 세 단계와 같은데, 번역과 역번역이 회전이라는 점이 다르다. 길이를 바꾸지 않는 변환이다.

거꾸로도 성립한다

QΛQTQ\Lambda Q^{\mathsf T} 꼴로 쓸 수 있는 행렬은 반드시 대칭인가. 그렇다. 전치해 보면 된다.

(QΛQT)T=(QT)TΛTQT=QΛQT\left(Q\Lambda Q^{\mathsf T}\right)^{\mathsf T} = \left(Q^{\mathsf T}\right)^{\mathsf T}\Lambda^{\mathsf T}Q^{\mathsf T} = Q\Lambda Q^{\mathsf T}

가운데에서 오른쪽으로 갈 때 대각행렬이 자기 전치와 같다는 것을 썼다. 전치해도 그대로이니 대칭이다. 그러므로 (17)의 꼴과 대칭성은 완전히 같은 말이다.


4. 대칭행렬은 직교하는 투영들의 가중합이다

여기가 이번 강의의 심장이다.

QΛQTQ\Lambda Q^{\mathsf T} 를 풀어쓴다

곱셈을 열 곱하기 행으로 보는 관점이 L11에 있었다. 두 행렬의 곱은 랭크 1짜리들의 합으로 쪼개진다.

AB=i(A 의 i 열)(B 의 i 행)AB = \sum_i (A \text{ 의 } i \text{ 열})(B \text{ 의 } i \text{ 행})

A=QΛA = Q\Lambda 이고 B=QTB = Q^{\mathsf T} 라 놓고 쓰자. QΛQ\Lambdaii 열은 무엇인가. Λ\Lambda 가 대각행렬이라 ii 열에 λi\lambda_i 하나뿐이므로, QQii 열에 λi\lambda_i 를 곱한 것이다.

QΛ=[λ1q1λ2q2λnqn]Q\Lambda = \begin{bmatrix} \lambda_1\vv{q}_1 & \lambda_2\vv{q}_2 & \cdots & \lambda_n\vv{q}_n \end{bmatrix}

그리고 QTQ^{\mathsf T}ii 행은 QQii 열을 눕힌 qiT\vv{q}_i^{\mathsf T} 이다. 둘을 (19)에 넣는다.

S=λ1q1q1T+λ2q2q2T++λnqnqnTS = \lambda_1\vv{q}_1\vv{q}_1^{\mathsf T} + \lambda_2\vv{q}_2\vv{q}_2^{\mathsf T} + \cdots + \lambda_n\vv{q}_n\vv{q}_n^{\mathsf T}

qqT\vv{q}\vv{q}^{\mathsf T} 는 어디서 본 것인가

이 조각이 낯익어야 한다. L15에서 벡터 a\vv{a} 방향의 직선 위로 투영하는 행렬이 이것이었다.

P=aaTaTaP = \frac{\vv{a}\vv{a}^{\mathsf T}}{\vv{a}^{\mathsf T}\vv{a}}

q\vv{q} 는 길이가 1이라 qTq=1\vv{q}^{\mathsf T}\vv{q} = 1 이고, 분모가 사라진다.

Pi=qiqiT(qi 방향으로의 투영행렬)P_i = \vv{q}_i\vv{q}_i^{\mathsf T} \qquad (\vv{q}_i \text{ 방향으로의 투영행렬})

투영행렬이 맞는지 성질로 확인하자. 세 가지를 보면 된다.

대칭인가. (qqT)T=qqT\left(\vv{q}\vv{q}^{\mathsf T}\right)^{\mathsf T} = \vv{q}\vv{q}^{\mathsf T} 이다. 전치하면 두 조각의 순서가 뒤집히는데 원래 모양과 같다.

한 번 더 해도 같은가. 가운데의 qTq\vv{q}^{\mathsf T}\vv{q} 가 1이라 사라진다.

Pi2=qi(qiTqi)=1qiT=qiqiT=PiP_i^2 = \vv{q}_i\underbrace{\left(\vv{q}_i^{\mathsf T}\vv{q}_i\right)}_{=\,1}\vv{q}_i^{\mathsf T} = \vv{q}_i\vv{q}_i^{\mathsf T} = P_i

무엇을 어디로 보내는가. 자기 방향은 그대로 두고 직교하는 방향은 0으로 보낸다.

Piqi=qi(qiTqi)=qi,Piqj=qi(qiTqj)=0=0(ji)P_i\vv{q}_i = \vv{q}_i\left(\vv{q}_i^{\mathsf T}\vv{q}_i\right) = \vv{q}_i, \qquad P_i\vv{q}_j = \vv{q}_i\underbrace{\left(\vv{q}_i^{\mathsf T}\vv{q}_j\right)}_{=\,0} = \vv{0} \quad (j \neq i)

랭크도 1이다. 모든 열이 qi\vv{q}_i 의 배수이기 때문이다.

투영들을 다 더하면 항등행렬이다

λ\lambda 를 전부 1로 놓으면 Λ=I\Lambda = I 이므로 (21)의 왼쪽이 QIQT=QQT=IQIQ^{\mathsf T} = QQ^{\mathsf T} = I 가 된다.

i=1nqiqiT=I\sum_{i=1}^{n}\vv{q}_i\vv{q}_i^{\mathsf T} = I

투영들이 공간을 남김없이 나눠 갖는다는 뜻이다. 아무 벡터 x\vv{x} 에 이 식을 적용해 보면 분해가 눈에 보인다.

x=Ix=iqi(qiTx)=i(qiTx)qi\vv{x} = I\vv{x} = \sum_i \vv{q}_i\left(\vv{q}_i^{\mathsf T}\vv{x}\right) = \sum_i \left(\vv{q}_i^{\mathsf T}\vv{x}\right)\vv{q}_i

qiTx\vv{q}_i^{\mathsf T}\vv{x} 는 그냥 수이므로 앞으로 빼냈다. 좌표를 구하는 데 연립방정식을 풀 필요가 없고 내적 한 번이면 된다. L17에서 강조한 직교기저의 위력이다.

그래서 SxS\vv{x} 는 이렇게 읽힌다

(21)x\vv{x} 를 곱하면 세 단계가 한 줄로 압축된다.

Sx=iλi(qiTx)qiS\vv{x} = \sum_i \lambda_i\left(\vv{q}_i^{\mathsf T}\vv{x}\right)\vv{q}_i

말로 옮기면 이렇다. x\vv{x} 를 고유방향별로 쪼개고, 각 조각에 λi\lambda_i 를 곱하고, 도로 더한다. L22의 번역·계산·역번역인데, 번역이 내적이라 공짜이다.

앵커로 확인한다

L21의 S=[2112]S = \begin{bmatrix} 2 & 1 \\ 1 & 2\end{bmatrix}λ=3,1\lambda = 3, 1 이고 고유벡터가 (1,1),(1,1)(1,1), (1,-1) 이었다. 길이를 1로 맞추면 q1=12(1,1)\vv{q}_1 = \tfrac{1}{\sqrt2}(1,1), q2=12(1,1)\vv{q}_2 = \tfrac{1}{\sqrt2}(1,-1) 이다.

q1q1T=12[1111],q2q2T=12[1111]\vv{q}_1\vv{q}_1^{\mathsf T} = \frac12\begin{bmatrix} 1 & 1 \\ 1 & 1 \end{bmatrix}, \qquad \vv{q}_2\vv{q}_2^{\mathsf T} = \frac12\begin{bmatrix} 1 & -1 \\ -1 & 1 \end{bmatrix}

가중합을 계산하면 되돌아온다.

312[1111]+112[1111]=[2112]3 \cdot \frac12\begin{bmatrix} 1 & 1 \\ 1 & 1 \end{bmatrix} + 1 \cdot \frac12\begin{bmatrix} 1 & -1 \\ -1 & 1 \end{bmatrix} = \begin{bmatrix} 2 & 1 \\ 1 & 2 \end{bmatrix}

두 투영을 그냥 더하면(λ\lambda 를 전부 1로) II 가 되는 것도 눈으로 보인다.

3×33 \times 3 으로도 해 보자. 다음 행렬은 고윳값이 3,6,123, 6, 12 이고 고유벡터가 (1,1,1)(1,1,1), (1,1,0)(1,-1,0), (1,1,2)(1,1,-2) 이다. 셋이 서로 직교한다.

S=[603063339]S = \begin{bmatrix} 6 & 0 & -3 \\ 0 & 6 & -3 \\ -3 & -3 & 9 \end{bmatrix}

세 벽돌을 쌓으면 그대로 복원된다. 놀랍게도 벽돌이 전부 정수 행렬이다.

[111111111]3q1q1T+[330330000]6q2q2T+[224224448]12q3q3T=S\underbrace{\begin{bmatrix} 1 & 1 & 1 \\ 1 & 1 & 1 \\ 1 & 1 & 1 \end{bmatrix}}_{3\,\vv{q}_1\vv{q}_1^{\mathsf T}} + \underbrace{\begin{bmatrix} 3 & -3 & 0 \\ -3 & 3 & 0 \\ 0 & 0 & 0 \end{bmatrix}}_{6\,\vv{q}_2\vv{q}_2^{\mathsf T}} + \underbrace{\begin{bmatrix} 2 & 2 & -4 \\ 2 & 2 & -4 \\ -4 & -4 & 8 \end{bmatrix}}_{12\,\vv{q}_3\vv{q}_3^{\mathsf T}} = S
같은 계산을 그림으로 옮긴 것이다. 벽돌 하나하나가 랭크 1이고 투영행렬이며,
\lambda 가 그 벽돌의 볼륨이다.

Figure 3:같은 계산을 그림으로 옮긴 것이다. 벽돌 하나하나가 랭크 1이고 투영행렬이며, λ\lambda 가 그 벽돌의 볼륨이다.

이 형태를 기억해 두자

(21)의 꼴이 이 강의의 결론이고, 이 교재 후반부의 예고편이다. 네 강의 뒤에 거의 똑같이 생긴 식을 만난다.

대칭행렬 (L25)일반 행렬 (L29)
분해S=QΛQTS = Q\Lambda Q^{\mathsf T}A=UΣVTA = U\Sigma V^{\mathsf T}
랭크 1 합S=iλiqiqiTS = \sum_i \lambda_i\,\vv{q}_i\vv{q}_i^{\mathsf T}A=iσiuiviTA = \sum_i \sigma_i\,\vv{u}_i\vv{v}_i^{\mathsf T}
기저한 벌 — 들어갈 때도 나올 때도 q\vv{q}두 벌 — 들어갈 때 v\vv{v}, 나올 때 u\vv{u}
계수λi\lambda_i, 부호가 있을 수 있다σi0\sigma_i \ge 0, 늘 음이 아니다
되는 조건SS 가 대칭이어야아무 행렬이나. 정사각이 아니어도 된다
문장 구조가 같다. 다른 것은 기저가 한 벌이냐 두 벌이냐뿐이다.
대칭행렬은 들어가는 쪽과 나오는 쪽이 같은 좌표계를 쓸 수 있는 특권을 가진 행렬이었고,
일반 행렬은 그 특권이 없어 좌표계를 두 벌 들고 다녀야 한다.

Figure 4:문장 구조가 같다. 다른 것은 기저가 한 벌이냐 두 벌이냐뿐이다. 대칭행렬은 들어가는 쪽과 나오는 쪽이 같은 좌표계를 쓸 수 있는 특권을 가진 행렬이었고, 일반 행렬은 그 특권이 없어 좌표계를 두 벌 들고 다녀야 한다.


5. 부호는 피벗이 알려 준다

고윳값이 실수라는 것까지 알았다. 그러면 그 실수들의 부호는 어떻게 아는가.

고윳값을 다 구하면 되지만 비싸다. 특성방정식은 L19에서 본 대로 쓸 수 없고, 실제 알고리즘도 반복법이라 시간이 든다. 그런데 소거만 하면 부호 분포를 알 수 있다.

앵커로 확인하자. (31)SS 를 교환 없이 소거해 보자. 1열은 이미 (6,0,3)(6, 0, -3) 이라 2행은 건드릴 것이 없고, 3행에 1행의 12-\tfrac12 배를 빼면 된다.

[603063339]    [603063037.5]    [603063006]\begin{bmatrix} 6 & 0 & -3 \\ 0 & 6 & -3 \\ -3 & -3 & 9 \end{bmatrix} \;\longrightarrow\; \begin{bmatrix} 6 & 0 & -3 \\ 0 & 6 & -3 \\ 0 & -3 & 7.5 \end{bmatrix} \;\longrightarrow\; \begin{bmatrix} 6 & 0 & -3 \\ 0 & 6 & -3 \\ 0 & 0 & 6 \end{bmatrix}

피벗이 6,6,66, 6, 6 으로 전부 양수이다. 고윳값 3,6,123, 6, 12 도 전부 양수이니 개수가 맞는다.

대각합으로도 검산할 수 있다. 6+6+9=216 + 6 + 9 = 21 이고 3+6+12=213 + 6 + 12 = 21 이다.


6. 자주 하는 오해

모든 행렬의 고유벡터가 직교한다는 오해

2절의 증명 어디에서 대칭을 썼는지 다시 보면 알 수 있다. (11)에서 ST=SS^{\mathsf T} = S 를 썼다. 대칭이 아니면 그 줄이 무너지고 결론도 무너진다.

반례를 하나 보자. B=[1102]B = \begin{bmatrix} 1 & 1 \\ 0 & 2\end{bmatrix} 는 삼각행렬이라 고윳값이 대각인 12 이다. 고유벡터를 구하면

λ=1:  x=[10],λ=2:  x=[11]\lambda = 1 :\; \vv{x} = \begin{bmatrix} 1 \\ 0 \end{bmatrix}, \qquad \lambda = 2 :\; \vv{x} = \begin{bmatrix} 1 \\ 1 \end{bmatrix}

이고 둘의 내적이 101 \neq 0 이다. 사잇각이 45도이다. Figure 1의 오른쪽이 이 행렬이다.

대칭이면 양의 정부호라는 오해

전혀 다른 이야기이다. 대칭은 고윳값이 실수임을 보장할 뿐 부호는 말해 주지 않는다. [1221]\begin{bmatrix} 1 & 2 \\ 2 & 1\end{bmatrix} 은 완벽하게 대칭인데 고윳값이 3-1 이다. 부호까지 전부 양수인 경우를 따로 다루는 것이 L27이다.

QQ 가 유일하다는 오해

셋이나 되는 자유도가 있다.

그래서 소프트웨어마다 QQ 가 달라 보일 수 있다. SS 는 같은데 QQ 가 다르다고 해서 틀린 것이 아니다.

직교와 정규직교를 섞어 쓰는 것

QTQ=IQ^{\mathsf T}Q = I 가 되려면 서로 직교하는 것만으로는 부족하고 길이도 1이어야 한다. (1,1)(1,1)(1,1)(1,-1) 은 직교하지만 길이가 2\sqrt2 라 그대로 열에 세우면 QTQ=2IQ^{\mathsf T}Q = 2I 가 된다. 반드시 나눠 주어야 한다.


마치며...

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

대상내용
조건S=STS = S^{\mathsf T} 하나뿐
실수 고윳값켤레와 전치로 양쪽에서 조여든다. xˉTx>0\bar{\vv{x}}^{\mathsf T}\vv{x} > 0 이 열쇠
실수 고윳값 == 회전 성분이 없다. 늘이고 줄이기만
직교 고유벡터(λ1λ2)(x1Tx2)=0(\lambda_1 - \lambda_2)(\vv{x}_1^{\mathsf T}\vv{x}_2) = 0 — 세 줄
겹칠 때고유공간 안에서 그람-슈미트. 고유벡터가 모자라지 않는다
스펙트럼 정리S=QΛQTS = Q\Lambda Q^{\mathsf T}. 역행렬이 전치로 바뀐다
거꾸로QΛQTQ\Lambda Q^{\mathsf T} 꼴이면 반드시 대칭
랭크 1 합S=λiqiqiTS = \sum\lambda_i\vv{q}_i\vv{q}_i^{\mathsf T} — 직교하는 투영들의 가중합
완비성qiqiT=I\sum\vv{q}_i\vv{q}_i^{\mathsf T} = I
좌표내적 한 번. 연립방정식을 풀 필요가 없다
부호교환 없는 소거의 피벗 부호 == 고윳값 부호 (실베스터)

S=STS = S^{\mathsf T} 라는 조건 하나에서 고윳값이 실수이고 고유벡터가 직교한다는 두 결과가 나왔고, 그 결과 S=QΛQTS = Q\Lambda Q^{\mathsf T} 라는 분해를 얻었다. 역행렬이 전치로 바뀌었으니 계산도 훨씬 가벼워졌다.

무엇보다 중요한 것은 마지막에 얻은 형태이다. 대칭행렬은 서로 직교하는 투영들의 가중합이었다. 이 형태를 잘 기억해 두자. 네 강의 뒤에 거의 똑같이 생긴 식을 다시 만나게 되며, 그때 그 식의 이름은 특이값 분해일 것이다.

그리고 이번 강의에서 우리는 직교기저를 하나 손에 넣었다. 대칭행렬이 스스로 들고 온 기저였다. 직교기저의 위력은 L17에서 이미 보았고, 곧 그 위력이 극한까지 발휘되는 무대를 만난다.

다음 강의에서는 잠시 실수의 세계를 벗어난다. 복소수 위에서 직교를 어떻게 정의하는지부터 시작해서, 직교기저의 챔피언이라 할 만한 행렬을 만난다. 푸리에 행렬이다. 그 행렬의 열들은 서로 직교하는 데 그치지 않고, 곱셈을 n2n^2 에서 nlognn\log n 으로 줄여 주는 구조까지 갖추고 있다.

그다음 강의에서는 이번 강의에서 남겨 둔 물음에 답한다. 고윳값이 실수인 것까지는 알았는데, 그 실수들이 전부 양수라면 무슨 일이 벌어지는가.


이번 강의의 내용을 파이썬으로 확인해 보려면 L25 실습 노트북으로 넘어가면 된다. 대칭성을 슬라이더로 조금씩 깨뜨리며 고유벡터의 사잇각이 90도에서 어떻게 벗어나는지 보고, 랭크 1 벽돌을 하나씩 쌓아 행렬이 복원되는 것을 확인하며, eigeigh 가 왜 다른지 직접 재 볼 수 있다.