Lecture 25. 대칭행렬과 스펙트럼 정리 Symmetric Matrices and the Spectral Theorem — 서술
L21에서 우리는 벡터를 원 위에서 돌려 가며 고유벡터를 사냥했고, 앵커 행렬
A = [ 2 1 1 2 ] A = \begin{bmatrix} 2 & 1 \\ 1 & 2\end{bmatrix} A = [ 2 1 1 2 ] 의 두 고유벡터가 ( 1 , 1 ) (1,1) ( 1 , 1 ) 과 ( 1 , − 1 ) (1,-1) ( 1 , − 1 ) 임을
확인했다. 두 벡터의 내적이 0이었다. 정확히 90도였다.
그때는 우연처럼 보였다. 우연이 아니었다.
S = S T S = S^{\mathsf T} S = S T 이 단순한 조건 하나가 두 개의 선물을 준다. 첫째, 고윳값이 전부 실수이다.
둘째, 고유벡터를 서로 직교하게 고를 수 있다.
두 번째 선물이 특히 크다. 직교기저의 위력은 이미 L17에서 배웠다. 직교기저에서는 계수를
구하는 데 연립방정식을 풀 필요가 없고 내적 한 번이면 끝난다. 그러니까 대칭행렬은
자기 자신의 직교기저를 들고 태어나는 행렬 이다.
1. 고윳값이 실수인 이유 ¶ L21에서 회전행렬 [ 0 − 1 1 0 ] \begin{bmatrix} 0 & -1 \\ 1 & 0\end{bmatrix} [ 0 1 − 1 0 ] 의 고윳값이 ± i \pm i ± i 였다.
실수 성분만 있는 행렬인데도 고윳값이 복소수였다. 대칭행렬은 왜 그런 일이 없는가.
준비물 하나 ¶ 복소벡터 x \vv{x} x 에 대해 x ˉ T x \bar{\vv{x}}^{\mathsf T}\vv{x} x ˉ T x 를 계산해 보자.
x ˉ \bar{\vv{x}} x ˉ 는 성분마다 켤레를 취한 것이다. 성분이 x j = a j + b j i x_j = a_j + b_j i x j = a j + b j i 이면
x ˉ j x j = ( a j − b j i ) ( a j + b j i ) = a j 2 + b j 2 = ∣ x j ∣ 2 \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 ˉ j x j = ( a j − b j i ) ( a j + b j i ) = a j 2 + b j 2 = ∣ x j ∣ 2 이므로 전부 더하면 다음이 된다.
x ˉ T x = ∑ j ∣ x j ∣ 2 > 0 ( x ≠ 0 일 때 ) \bar{\vv{x}}^{\mathsf T}\vv{x} = \sum_j |x_j|^2 > 0
\qquad (\vv{x} \neq \vv{0} \text{ 일 때}) x ˉ T x = j ∑ ∣ x j ∣ 2 > 0 ( x = 0 일 때 ) 복소수를 다루는데도 이 값은 반드시 양의 실수이다. 이것이 증명의 열쇠이다.
S x = λ x S\vv{x} = \lambda\vv{x} S x = λ x 이고 x ≠ 0 \vv{x} \neq \vv{0} x = 0 이라 하자. λ \lambda λ 와 x \vv{x} x 가
복소수일 수도 있다고 열어 두고 시작한다.
첫째, 양변에 켤레를 취한다. S S S 는 실수 행렬이라 S ˉ = S \bar{S} = S S ˉ = S 이다.
S x ‾ = λ x ‾ ⟹ S x ˉ = λ ˉ x ˉ \overline{S\vv{x}} = \overline{\lambda\vv{x}}
\qquad\Longrightarrow\qquad
S\,\bar{\vv{x}} = \bar\lambda\,\bar{\vv{x}} S x = λ x ⟹ S x ˉ = λ ˉ x ˉ 둘째, 이 식을 전치한다. 곱을 전치하면 순서가 뒤집힌다.
x ˉ T S T = λ ˉ x ˉ T ⟹ x ˉ T S = λ ˉ 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} x ˉ T S T = λ ˉ x ˉ T ⟹ x ˉ T S = λ ˉ x ˉ T 오른쪽으로 갈 때 S T = S S^{\mathsf T} = S S T = S 를 썼다. 대칭이라는 조건이 여기서 딱 한 번
쓰이고, 그것이 증명의 전부이다.
셋째, 양쪽에서 조여든다. x ˉ T S x \bar{\vv{x}}^{\mathsf T}S\vv{x} x ˉ T S x 라는 하나의 수를 두 가지로
계산해 보자. 오른쪽 두 개를 먼저 묶으면 S x = λ x S\vv{x} = \lambda\vv{x} S x = λ x 이므로
x ˉ T ( S x ) = x ˉ T ( λ x ) = λ x ˉ T x \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} x ˉ T ( S x ) = x ˉ T ( λ x ) = λ x ˉ T x 이고, 왼쪽 두 개를 먼저 묶으면 (5) 의 식에 의해
( x ˉ T S ) x = ( λ ˉ x ˉ T ) x = λ ˉ x ˉ T x \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 ˉ T S ) x = ( λ ˉ x ˉ T ) x = λ ˉ x ˉ T x 이다. 같은 수를 두 가지로 계산했으니 같아야 한다.
λ x ˉ T x = λ ˉ x ˉ T x ⟹ ( λ − λ ˉ ) x ˉ T x = 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 λ x ˉ T x = λ ˉ x ˉ T x ⟹ ( λ − λ ˉ ) x ˉ T x = 0 (3) 에 의해 x ˉ T x > 0 \bar{\vv{x}}^{\mathsf T}\vv{x} > 0 x ˉ T x > 0 이므로 나눌 수 있다.
λ = λ ˉ ⟹ λ 는 실수 \lambda = \bar\lambda
\qquad\Longrightarrow\qquad
\lambda \text{ 는 실수} λ = λ ˉ ⟹ λ 는 실수 자기 켤레와 같은 복소수는 허수부가 0인 수뿐이다.
고유벡터도 실수로 고를 수 있다 ¶ λ \lambda λ 가 실수이면 S − λ I S - \lambda I S − λ I 도 실수 행렬이고, 그것이 특이하므로 실수 성분만으로
된 영공간 벡터가 존재한다. 그러므로 고유벡터를 굳이 복소수로 쓸 이유가 없다.
앞으로는 실수 벡터로만 다룬다.
2. 고유벡터가 직교하는 이유 ¶ 이번에는 세 줄이면 끝난다. 그런데 결론은 어마어마하다.
서로 다른 고윳값 λ 1 ≠ λ 2 \lambda_1 \neq \lambda_2 λ 1 = λ 2 와 그에 딸린 고유벡터
x 1 , x 2 \vv{x}_1, \vv{x}_2 x 1 , x 2 를 보자. 두 벡터의 내적 x 1 T x 2 \vv{x}_1^{\mathsf T}\vv{x}_2 x 1 T x 2 를
두 가지로 계산한다. 이번에도 하나의 수를 양쪽에서 조여드는 방식이다.
계산할 것은 x 1 T S x 2 \vv{x}_1^{\mathsf T}S\vv{x}_2 x 1 T S x 2 이다. 오른쪽부터 묶으면
x 1 T ( S x 2 ) = x 1 T ( λ 2 x 2 ) = λ 2 ( x 1 T x 2 ) \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) x 1 T ( S x 2 ) = x 1 T ( λ 2 x 2 ) = λ 2 ( x 1 T x 2 ) 이다. 왼쪽부터 묶으려면 x 1 T S \vv{x}_1^{\mathsf T}S x 1 T S 를 알아야 한다.
S x 1 = λ 1 x 1 S\vv{x}_1 = \lambda_1\vv{x}_1 S x 1 = λ 1 x 1 을 전치하면 나온다.
x 1 T S T = λ 1 x 1 T ⟹ x 1 T S = λ 1 x 1 T \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} x 1 T S T = λ 1 x 1 T ⟹ x 1 T S = λ 1 x 1 T 여기서도 S T = S S^{\mathsf T} = S S T = S 가 한 번 쓰였다. 이제 왼쪽부터 묶는다.
( x 1 T S ) x 2 = λ 1 ( x 1 T x 2 ) \left(\vv{x}_1^{\mathsf T}S\right)\vv{x}_2
= \lambda_1\left(\vv{x}_1^{\mathsf T}\vv{x}_2\right) ( x 1 T S ) x 2 = λ 1 ( x 1 T x 2 ) 두 결과가 같아야 한다.
λ 1 ( x 1 T x 2 ) = λ 2 ( x 1 T x 2 ) ⟹ ( λ 1 − λ 2 ) ( x 1 T x 2 ) = 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 ( x 1 T x 2 ) = λ 2 ( x 1 T x 2 ) ⟹ ( λ 1 − λ 2 ) ( x 1 T x 2 ) = 0 λ 1 ≠ λ 2 \lambda_1 \neq \lambda_2 λ 1 = λ 2 라 했으므로 앞의 괄호가 0이 아니다. 따라서 뒤가 0이다.
x 1 T x 2 = 0 \vv{x}_1^{\mathsf T}\vv{x}_2 = 0 x 1 T x 2 = 0 직교한다. 세 줄이었다.
Figure 1: 왼쪽이 대칭, 오른쪽이 아니다. 대칭이면 고유벡터가 정확히 90도이고, 단위원의 상인 타원의
축이 그 고유벡터 위에 놓인다. 비대칭이면 둘 다 어긋난다.
고윳값이 겹치면 ¶ 증명에서 λ 1 ≠ λ 2 \lambda_1 \neq \lambda_2 λ 1 = λ 2 를 썼으니, 같은 고윳값에 딸린 두 고유벡터에 대해서는
아무 말도 하지 못했다. 실제로 그런 둘은 직교하지 않을 수도 있다.
그런데 문제가 되지 않는다. 같은 λ \lambda λ 에 딸린 고유벡터들은 고유공간 이라는
부분공간을 이루고(L21), 부분공간 안에서는 L17의 그람-슈미트로 직교기저를 언제든 만들 수
있기 때문이다. 그렇게 고른 것들도 여전히 고유벡터이다. 고유공간 안의 아무 벡터나
고유벡터이기 때문이다.
그러므로 고르기만 잘하면 늘 직교기저를 얻는다. 여기에 하나가 더 필요하다.
대칭행렬은 고윳값이 겹쳐도 고유벡터가 모자라는 법이 없다는 사실이다. L21의 결함 행렬
[ 3 1 0 3 ] \begin{bmatrix} 3 & 1 \\ 0 & 3\end{bmatrix} [ 3 0 1 3 ] 같은 일이 대칭행렬에서는 일어나지 않는다.
증명은 이 교재의 범위를 넘으므로 결론만 쓴다.
3. 스펙트럼 정리 — 역행렬이 전치가 된다 ¶ 정리의 3번을 유도하자. 어려울 것이 없다. L22의 대각화에 2절의 결과를 얹으면 된다.
직교하는 고유벡터들을 길이 1로 맞춰 열에 세운 것을 Q Q Q 라 하자. 열이 서로 직교하고
길이가 1이므로 Q T Q Q^{\mathsf T}Q Q T Q 의 ( i , j ) (i,j) ( i , j ) 성분은 q i T q j \vv{q}_i^{\mathsf T}\vv{q}_j q i T q j 이고,
i = j i = j i = j 이면 1이고 아니면 0이다.
Q T Q = I ⟹ Q − 1 = Q T Q^{\mathsf T}Q = I
\qquad\Longrightarrow\qquad
Q^{-1} = Q^{\mathsf T} Q T Q = I ⟹ Q − 1 = Q T L17에서 배운 직교행렬의 성질 그대로이다.
L22의 대각화는 A = ( 고유벡터 행렬 ) Λ ( 고유벡터 행렬 ) − 1 A = (\text{고유벡터 행렬})\Lambda(\text{고유벡터 행렬})^{-1} A = ( 고유벡터 행렬 ) Λ ( 고유벡터 행렬 ) − 1 이었다.
여기서 고유벡터 행렬이 Q Q Q 이고, (16) 에 의해 그 역이
Q T Q^{\mathsf T} Q T 이다.
S = Q Λ Q − 1 = Q Λ Q T S = Q\Lambda Q^{-1} = Q\Lambda Q^{\mathsf T} S = Q Λ Q − 1 = Q Λ Q T 역행렬 계산이 전치로 바뀌었다.
Figure 2: S x = Q Λ Q T x S\vv{x} = Q\Lambda Q^{\mathsf T}\vv{x} S x = Q Λ Q T x 를 오른쪽부터 읽은 것이다. L22의 세 단계와 같은데,
번역과 역번역이 회전 이라는 점이 다르다. 길이를 바꾸지 않는 변환이다.
거꾸로도 성립한다 ¶ Q Λ Q T Q\Lambda Q^{\mathsf T} Q Λ Q T 꼴로 쓸 수 있는 행렬은 반드시 대칭인가. 그렇다. 전치해 보면 된다.
( Q Λ Q T ) T = ( Q T ) T Λ T Q T = Q Λ Q T \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} ( Q Λ Q T ) T = ( Q T ) T Λ T Q T = Q Λ Q T 가운데에서 오른쪽으로 갈 때 대각행렬이 자기 전치와 같다는 것을 썼다.
전치해도 그대로이니 대칭이다. 그러므로 (17) 의 꼴과 대칭성은
완전히 같은 말이다.
4. 대칭행렬은 직교하는 투영들의 가중합이다 ¶ 여기가 이번 강의의 심장이다.
Q Λ Q T Q\Lambda Q^{\mathsf T} Q Λ Q T 를 풀어쓴다¶ 곱셈을 열 곱하기 행 으로 보는 관점이 L11에 있었다. 두 행렬의 곱은 랭크 1짜리들의
합으로 쪼개진다.
A B = ∑ i ( A 의 i 열 ) ( B 의 i 행 ) AB = \sum_i (A \text{ 의 } i \text{ 열})(B \text{ 의 } i \text{ 행}) A B = i ∑ ( A 의 i 열 ) ( B 의 i 행 ) A = Q Λ A = Q\Lambda A = Q Λ 이고 B = Q T B = Q^{\mathsf T} B = Q T 라 놓고 쓰자. Q Λ Q\Lambda Q Λ 의 i i i 열은 무엇인가.
Λ \Lambda Λ 가 대각행렬이라 i i i 열에 λ i \lambda_i λ i 하나뿐이므로, Q Q Q 의 i i i 열에
λ i \lambda_i λ i 를 곱한 것이다.
Q Λ = [ λ 1 q 1 λ 2 q 2 ⋯ λ n q n ] Q\Lambda = \begin{bmatrix}
\lambda_1\vv{q}_1 & \lambda_2\vv{q}_2 & \cdots & \lambda_n\vv{q}_n
\end{bmatrix} Q Λ = [ λ 1 q 1 λ 2 q 2 ⋯ λ n q n ] 그리고 Q T Q^{\mathsf T} Q T 의 i i i 행은 Q Q Q 의 i i i 열을 눕힌 q i T \vv{q}_i^{\mathsf T} q i T 이다.
둘을 (19) 에 넣는다.
S = λ 1 q 1 q 1 T + λ 2 q 2 q 2 T + ⋯ + λ n q n q n T S = \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} S = λ 1 q 1 q 1 T + λ 2 q 2 q 2 T + ⋯ + λ n q n q n T q q T \vv{q}\vv{q}^{\mathsf T} q q T 는 어디서 본 것인가¶ 이 조각이 낯익어야 한다. L15에서 벡터 a \vv{a} a 방향의 직선 위로 투영하는 행렬이
이것이었다.
P = a a T a T a P = \frac{\vv{a}\vv{a}^{\mathsf T}}{\vv{a}^{\mathsf T}\vv{a}} P = a T a a a T q \vv{q} q 는 길이가 1이라 q T q = 1 \vv{q}^{\mathsf T}\vv{q} = 1 q T q = 1 이고, 분모가 사라진다.
P i = q i q i T ( q i 방향으로의 투영행렬 ) P_i = \vv{q}_i\vv{q}_i^{\mathsf T}
\qquad (\vv{q}_i \text{ 방향으로의 투영행렬}) P i = q i q i T ( q i 방향으로의 투영행렬 ) 투영행렬이 맞는지 성질로 확인하자. 세 가지를 보면 된다.
대칭인가. ( q q T ) T = q q T \left(\vv{q}\vv{q}^{\mathsf T}\right)^{\mathsf T}
= \vv{q}\vv{q}^{\mathsf T} ( q q T ) T = q q T 이다. 전치하면 두 조각의 순서가 뒤집히는데 원래 모양과 같다.
한 번 더 해도 같은가. 가운데의 q T q \vv{q}^{\mathsf T}\vv{q} q T q 가 1이라 사라진다.
P i 2 = q i ( q i T q i ) ⏟ = 1 q i T = q i q i T = P i P_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 P i 2 = q i = 1 ( q i T q i ) q i T = q i q i T = P i 무엇을 어디로 보내는가. 자기 방향은 그대로 두고 직교하는 방향은 0으로 보낸다.
P i q i = q i ( q i T q i ) = q i , P i q j = q i ( q i T q j ) ⏟ = 0 = 0 ( j ≠ i ) 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) P i q i = q i ( q i T q i ) = q i , P i q j = q i = 0 ( q i T q j ) = 0 ( j = i ) 랭크도 1이다. 모든 열이 q i \vv{q}_i q i 의 배수이기 때문이다.
투영들을 다 더하면 항등행렬이다 ¶ λ \lambda λ 를 전부 1로 놓으면 Λ = I \Lambda = I Λ = I 이므로 (21) 의 왼쪽이
Q I Q T = Q Q T = I QIQ^{\mathsf T} = QQ^{\mathsf T} = I Q I Q T = Q Q T = I 가 된다.
∑ i = 1 n q i q i T = I \sum_{i=1}^{n}\vv{q}_i\vv{q}_i^{\mathsf T} = I i = 1 ∑ n q i q i T = I 투영들이 공간을 남김없이 나눠 갖는다 는 뜻이다. 아무 벡터 x \vv{x} x 에 이 식을
적용해 보면 분해가 눈에 보인다.
x = I x = ∑ i q i ( q i T x ) = ∑ i ( q i T x ) q i \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 x = I x = i ∑ q i ( q i T x ) = i ∑ ( q i T x ) q i q i T x \vv{q}_i^{\mathsf T}\vv{x} q i T x 는 그냥 수이므로 앞으로 빼냈다. 좌표를 구하는 데
연립방정식을 풀 필요가 없고 내적 한 번이면 된다. L17에서 강조한 직교기저의 위력이다.
그래서 S x S\vv{x} S x 는 이렇게 읽힌다 ¶ (21) 에 x \vv{x} x 를 곱하면 세 단계가 한 줄로 압축된다.
S x = ∑ i λ i ( q i T x ) q i S\vv{x} = \sum_i \lambda_i\left(\vv{q}_i^{\mathsf T}\vv{x}\right)\vv{q}_i S x = i ∑ λ i ( q i T x ) q i 말로 옮기면 이렇다. x \vv{x} x 를 고유방향별로 쪼개고, 각 조각에 λ i \lambda_i λ i 를 곱하고,
도로 더한다. L22의 번역·계산·역번역인데, 번역이 내적이라 공짜이다.
앵커로 확인한다 ¶ L21의 S = [ 2 1 1 2 ] S = \begin{bmatrix} 2 & 1 \\ 1 & 2\end{bmatrix} S = [ 2 1 1 2 ] 는 λ = 3 , 1 \lambda = 3, 1 λ = 3 , 1 이고
고유벡터가 ( 1 , 1 ) , ( 1 , − 1 ) (1,1), (1,-1) ( 1 , 1 ) , ( 1 , − 1 ) 이었다. 길이를 1로 맞추면
q 1 = 1 2 ( 1 , 1 ) \vv{q}_1 = \tfrac{1}{\sqrt2}(1,1) q 1 = 2 1 ( 1 , 1 ) , q 2 = 1 2 ( 1 , − 1 ) \vv{q}_2 = \tfrac{1}{\sqrt2}(1,-1) q 2 = 2 1 ( 1 , − 1 ) 이다.
q 1 q 1 T = 1 2 [ 1 1 1 1 ] , q 2 q 2 T = 1 2 [ 1 − 1 − 1 1 ] \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} q 1 q 1 T = 2 1 [ 1 1 1 1 ] , q 2 q 2 T = 2 1 [ 1 − 1 − 1 1 ] 가중합을 계산하면 되돌아온다.
3 ⋅ 1 2 [ 1 1 1 1 ] + 1 ⋅ 1 2 [ 1 − 1 − 1 1 ] = [ 2 1 1 2 ] 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} 3 ⋅ 2 1 [ 1 1 1 1 ] + 1 ⋅ 2 1 [ 1 − 1 − 1 1 ] = [ 2 1 1 2 ] 두 투영을 그냥 더하면(λ \lambda λ 를 전부 1로) I I I 가 되는 것도 눈으로 보인다.
3 × 3 3 \times 3 3 × 3 으로도 해 보자. 다음 행렬은 고윳값이 3 , 6 , 12 3, 6, 12 3 , 6 , 12 이고 고유벡터가
( 1 , 1 , 1 ) (1,1,1) ( 1 , 1 , 1 ) , ( 1 , − 1 , 0 ) (1,-1,0) ( 1 , − 1 , 0 ) , ( 1 , 1 , − 2 ) (1,1,-2) ( 1 , 1 , − 2 ) 이다. 셋이 서로 직교한다.
S = [ 6 0 − 3 0 6 − 3 − 3 − 3 9 ] S = \begin{bmatrix} 6 & 0 & -3 \\ 0 & 6 & -3 \\ -3 & -3 & 9 \end{bmatrix} S = ⎣ ⎡ 6 0 − 3 0 6 − 3 − 3 − 3 9 ⎦ ⎤ 세 벽돌을 쌓으면 그대로 복원된다. 놀랍게도 벽돌이 전부 정수 행렬이다.
[ 1 1 1 1 1 1 1 1 1 ] ⏟ 3 q 1 q 1 T + [ 3 − 3 0 − 3 3 0 0 0 0 ] ⏟ 6 q 2 q 2 T + [ 2 2 − 4 2 2 − 4 − 4 − 4 8 ] ⏟ 12 q 3 q 3 T = 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 3 q 1 q 1 T ⎣ ⎡ 1 1 1 1 1 1 1 1 1 ⎦ ⎤ + 6 q 2 q 2 T ⎣ ⎡ 3 − 3 0 − 3 3 0 0 0 0 ⎦ ⎤ + 12 q 3 q 3 T ⎣ ⎡ 2 2 − 4 2 2 − 4 − 4 − 4 8 ⎦ ⎤ = S Figure 3: 같은 계산을 그림으로 옮긴 것이다. 벽돌 하나하나가 랭크 1이고 투영행렬이며,
λ \lambda λ 가 그 벽돌의 볼륨이다.
이 형태를 기억해 두자 ¶ (21) 의 꼴이 이 강의의 결론이고, 이 교재 후반부의 예고편이다.
네 강의 뒤에 거의 똑같이 생긴 식을 만난다.
대칭행렬 (L25) 일반 행렬 (L29) 분해 S = Q Λ Q T S = Q\Lambda Q^{\mathsf T} S = Q Λ Q T A = U Σ V T A = U\Sigma V^{\mathsf T} A = U Σ V T 랭크 1 합 S = ∑ i λ i q i q i T S = \sum_i \lambda_i\,\vv{q}_i\vv{q}_i^{\mathsf T} S = ∑ i λ i q i q i T A = ∑ i σ i u i v i T A = \sum_i \sigma_i\,\vv{u}_i\vv{v}_i^{\mathsf T} A = ∑ i σ i u i v i T 기저 한 벌 — 들어갈 때도 나올 때도 q \vv{q} q 두 벌 — 들어갈 때 v \vv{v} v , 나올 때 u \vv{u} u 계수 λ i \lambda_i λ i , 부호가 있을 수 있다σ i ≥ 0 \sigma_i \ge 0 σ i ≥ 0 , 늘 음이 아니다되는 조건 S S S 가 대칭이어야아무 행렬이나. 정사각이 아니어도 된다
Figure 4: 문장 구조가 같다. 다른 것은 기저가 한 벌이냐 두 벌이냐뿐이다.
대칭행렬은 들어가는 쪽과 나오는 쪽이 같은 좌표계를 쓸 수 있는 특권을 가진 행렬이었고,
일반 행렬은 그 특권이 없어 좌표계를 두 벌 들고 다녀야 한다.
5. 부호는 피벗이 알려 준다 ¶ 고윳값이 실수라는 것까지 알았다. 그러면 그 실수들의 부호 는 어떻게 아는가.
고윳값을 다 구하면 되지만 비싸다. 특성방정식은 L19에서 본 대로 쓸 수 없고, 실제
알고리즘도 반복법이라 시간이 든다. 그런데 소거만 하면 부호 분포를 알 수 있다.
L4에서 소거할 때 피벗이 0이면 행을 바꿨다. 여기서는 그러면 안 된다.
행을 바꾸면 대칭이 깨져 피벗의 부호와 고윳값의 부호가 어긋난다.
예를 들어 [ 1 2 2 1 ] \begin{bmatrix} 1 & 2 \\ 2 & 1\end{bmatrix} [ 1 2 2 1 ] 은 고윳값이 -1 과 3 이라
양수가 하나이다. 교환 없이 소거하면 피벗이 1 과 1 − 4 = − 3 1 - 4 = -3 1 − 4 = − 3 이라 양수가 하나로
맞는다. 그런데 큰 성분을 위로 올리는 흔한 방식으로 행을 바꿔 소거하면 피벗이
2 와 1.5 가 되어 양수가 둘이 된다. 틀린 답이다.
앵커로 확인하자. (31) 의 S S S 를 교환 없이 소거해 보자. 1열은 이미
( 6 , 0 , − 3 ) (6, 0, -3) ( 6 , 0 , − 3 ) 이라 2행은 건드릴 것이 없고, 3행에 1행의 − 1 2 -\tfrac12 − 2 1 배를 빼면 된다.
[ 6 0 − 3 0 6 − 3 − 3 − 3 9 ] ⟶ [ 6 0 − 3 0 6 − 3 0 − 3 7.5 ] ⟶ [ 6 0 − 3 0 6 − 3 0 0 6 ] \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 0 − 3 0 6 − 3 − 3 − 3 9 ⎦ ⎤ ⟶ ⎣ ⎡ 6 0 0 0 6 − 3 − 3 − 3 7.5 ⎦ ⎤ ⟶ ⎣ ⎡ 6 0 0 0 6 0 − 3 − 3 6 ⎦ ⎤ 피벗이 6 , 6 , 6 6, 6, 6 6 , 6 , 6 으로 전부 양수이다. 고윳값 3 , 6 , 12 3, 6, 12 3 , 6 , 12 도 전부 양수이니 개수가 맞는다.
피벗의 곱은 6 × 6 × 6 = 216 6 \times 6 \times 6 = 216 6 × 6 × 6 = 216 이고, 고윳값의 곱도
3 × 6 × 12 = 216 3 \times 6 \times 12 = 216 3 × 6 × 12 = 216 이다. L18의 det = ± ( 피벗의 곱 ) \det = \pm(\text{피벗의 곱}) det = ± ( 피벗의 곱 ) 과
L21의 det = ∏ λ i \det = \prod\lambda_i det = ∏ λ i 가 만나는 자리이다.
다만 곱만 같지 하나하나가 같지는 않다. 피벗은 6 , 6 , 6 6,6,6 6 , 6 , 6 이고 고윳값은 3 , 6 , 12 3,6,12 3 , 6 , 12 이다.
대각합으로도 검산할 수 있다. 6 + 6 + 9 = 21 6 + 6 + 9 = 21 6 + 6 + 9 = 21 이고 3 + 6 + 12 = 21 3 + 6 + 12 = 21 3 + 6 + 12 = 21 이다.
6. 자주 하는 오해 ¶ 모든 행렬의 고유벡터가 직교한다는 오해 ¶ 2절의 증명 어디에서 대칭을 썼는지 다시 보면 알 수 있다.
(11) 에서 S T = S S^{\mathsf T} = S S T = S 를 썼다. 대칭이 아니면 그 줄이
무너지고 결론도 무너진다.
반례를 하나 보자. B = [ 1 1 0 2 ] B = \begin{bmatrix} 1 & 1 \\ 0 & 2\end{bmatrix} B = [ 1 0 1 2 ] 는 삼각행렬이라
고윳값이 대각인 1 과 2 이다. 고유벡터를 구하면
λ = 1 : x = [ 1 0 ] , λ = 2 : x = [ 1 1 ] \lambda = 1 :\; \vv{x} = \begin{bmatrix} 1 \\ 0 \end{bmatrix},
\qquad
\lambda = 2 :\; \vv{x} = \begin{bmatrix} 1 \\ 1 \end{bmatrix} λ = 1 : x = [ 1 0 ] , λ = 2 : x = [ 1 1 ] 이고 둘의 내적이 1 ≠ 0 1 \neq 0 1 = 0 이다. 사잇각이 45도이다.
Figure 1 의 오른쪽이 이 행렬이다.
대칭이면 양의 정부호라는 오해 ¶ 전혀 다른 이야기이다. 대칭은 고윳값이 실수 임을 보장할 뿐 부호는 말해 주지 않는다.
[ 1 2 2 1 ] \begin{bmatrix} 1 & 2 \\ 2 & 1\end{bmatrix} [ 1 2 2 1 ] 은 완벽하게 대칭인데 고윳값이 3 과
-1 이다. 부호까지 전부 양수인 경우를 따로 다루는 것이 L27이다.
Q Q Q 가 유일하다는 오해¶ 셋이나 되는 자유도가 있다.
부호. q i \vv{q}_i q i 를 − q i -\vv{q}_i − q i 로 바꿔도 여전히 길이 1인 고유벡터이다.
순서. 열의 순서를 바꾸고 Λ \Lambda Λ 의 대각도 함께 바꾸면 여전히 성립한다(L22).
회전. 고윳값이 겹치면 그 고유공간 안에서 직교기저를 아무렇게나 돌려 잡아도 된다.
그래서 소프트웨어마다 Q Q Q 가 달라 보일 수 있다. S S S 는 같은데 Q Q Q 가 다르다고 해서
틀린 것이 아니다.
직교와 정규직교를 섞어 쓰는 것 ¶ Q T Q = I Q^{\mathsf T}Q = I Q T Q = I 가 되려면 서로 직교하는 것만으로는 부족하고 길이도 1 이어야 한다.
( 1 , 1 ) (1,1) ( 1 , 1 ) 과 ( 1 , − 1 ) (1,-1) ( 1 , − 1 ) 은 직교하지만 길이가 2 \sqrt2 2 라 그대로 열에 세우면
Q T Q = 2 I Q^{\mathsf T}Q = 2I Q T Q = 2 I 가 된다. 반드시 나눠 주어야 한다.
마치며... ¶ 이번 강의에서 다룬 것을 정리하면 다음과 같다.
대상 내용 조건 S = S T S = S^{\mathsf T} S = S T 하나뿐실수 고윳값 켤레와 전치로 양쪽에서 조여든다. x ˉ T x > 0 \bar{\vv{x}}^{\mathsf T}\vv{x} > 0 x ˉ T x > 0 이 열쇠 뜻 실수 고윳값 = = = 회전 성분이 없다. 늘이고 줄이기만 직교 고유벡터 ( λ 1 − λ 2 ) ( x 1 T x 2 ) = 0 (\lambda_1 - \lambda_2)(\vv{x}_1^{\mathsf T}\vv{x}_2) = 0 ( λ 1 − λ 2 ) ( x 1 T x 2 ) = 0 — 세 줄겹칠 때 고유공간 안에서 그람-슈미트. 고유벡터가 모자라지 않는다 스펙트럼 정리 S = Q Λ Q T S = Q\Lambda Q^{\mathsf T} S = Q Λ Q T . 역행렬이 전치로 바뀐다거꾸로 Q Λ Q T Q\Lambda Q^{\mathsf T} Q Λ Q T 꼴이면 반드시 대칭랭크 1 합 S = ∑ λ i q i q i T S = \sum\lambda_i\vv{q}_i\vv{q}_i^{\mathsf T} S = ∑ λ i q i q i T — 직교하는 투영들의 가중합완비성 ∑ q i q i T = I \sum\vv{q}_i\vv{q}_i^{\mathsf T} = I ∑ q i q i T = I 좌표 내적 한 번. 연립방정식을 풀 필요가 없다 부호 교환 없는 소거의 피벗 부호 = = = 고윳값 부호 (실베스터)
S = S T S = S^{\mathsf T} S = S T 라는 조건 하나에서 고윳값이 실수이고 고유벡터가 직교한다는 두 결과가
나왔고, 그 결과 S = Q Λ Q T S = Q\Lambda Q^{\mathsf T} S = Q Λ Q T 라는 분해를 얻었다. 역행렬이 전치로 바뀌었으니
계산도 훨씬 가벼워졌다.
무엇보다 중요한 것은 마지막에 얻은 형태이다. 대칭행렬은 서로 직교하는 투영들의
가중합이었다. 이 형태를 잘 기억해 두자. 네 강의 뒤에 거의 똑같이 생긴 식을 다시
만나게 되며, 그때 그 식의 이름은 특이값 분해 일 것이다.
그리고 이번 강의에서 우리는 직교기저를 하나 손에 넣었다. 대칭행렬이 스스로 들고 온
기저였다. 직교기저의 위력은 L17에서 이미 보았고, 곧 그 위력이 극한까지 발휘되는
무대를 만난다.
다음 강의에서는 잠시 실수의 세계를 벗어난다. 복소수 위에서 직교를 어떻게 정의하는지부터
시작해서, 직교기저의 챔피언이라 할 만한 행렬을 만난다. 푸리에 행렬이다.
그 행렬의 열들은 서로 직교하는 데 그치지 않고, 곱셈을 n 2 n^2 n 2 에서 n log n n\log n n log n 으로
줄여 주는 구조까지 갖추고 있다.
그다음 강의에서는 이번 강의에서 남겨 둔 물음에 답한다. 고윳값이 실수인 것까지는
알았는데, 그 실수들이 전부 양수라면 무슨 일이 벌어지는가.
이번 강의의 내용을 파이썬으로 확인해 보려면 L25 실습 노트북 으로 넘어가면 된다.
대칭성을 슬라이더로 조금씩 깨뜨리며 고유벡터의 사잇각이 90도에서 어떻게 벗어나는지 보고,
랭크 1 벽돌을 하나씩 쌓아 행렬이 복원되는 것을 확인하며, eig 와 eigh 가 왜 다른지
직접 재 볼 수 있다.