Lecture 34. 전체 정리 — 다섯 개의 분해 Five Decompositions, and the Map They Draw — 서술
서른세 편이 지났다.
우리는 연립방정식 하나에서 출발했다. 그것을 푸는 법을 배웠고, 해가 사는 공간의 모양을
배웠고, 해가 없을 때 가장 가까운 답을 찾는 법을 배웠다. 그다음에는 방향을 돌려 행렬
자체를 들여다보았다. 변하지 않는 방향을 찾았고, 시간의 흐름을 예측했고, 마침내 어떤
행렬이든 조건 없이 쪼갤 수 있는 도구에 닿았다.
그런데 이 많은 것이 결국 무엇이었는가. 한 장에 담을 수 있는가.
담을 수 있다. 다섯 개의 분해 다. 이번 강의에서는 새로 배우는 것이 하나도 없다.
지금까지 만든 연장을 전부 꺼내 늘어놓고, 각각이 무엇을 요구하고 무엇을 돌려주는지
마지막으로 확인한다. 그리고 L10에서 뼈대만 그렸던 그림 한 장을 끝까지 채운다.
다섯 개의 분해는 사다리가 아니라 연장통 이다.
한 층씩 올라가며 조건이 느슨해지는 사다리라면 맨 아래 연장 하나만 챙기면 된다.
그런데 실제로는 그렇지 않다. 어떤 행렬은 L U LU LU 를 통과하고 대각화에서 걸리며, 어떤
행렬은 그 반대다. 상황을 보고 맞는 연장을 꺼내는 수밖에 없다.
다만 연장통 바닥에 무엇에나 물리는 것이 하나 들어 있다. 그것이 SVD다.
1. 다섯 개의 분해 ¶ 후반부에서 만든 것을 한 표에 넣는다. 각 줄은 무엇을 요구하고 무엇을 돌려주는가 로
읽으면 된다.
분해 요구하는 것 돌려주는 것 강의 파이썬 A = L U A = LU A = LU 교환 없이 소거가 될 것 피벗, 빠른 풀이, 행렬식 L4 scipy.linalg.luA = Q R A = QR A = QR 열이 독립일 것 정규직교기저, 안정적인 최소제곱 L17 numpy.linalg.qrS = Q Λ Q T S = Q\Lambda Q^{\mathsf T} S = Q Λ Q T 대칭일 것 실수 고윳값, 직교 고유벡터, 부호 판정 L25, L27 numpy.linalg.eighA = S Λ S − 1 A = S\Lambda S^{-1} A = S Λ S − 1 독립인 고유벡터가 n n n 개일 것 거듭제곱, e A t e^{At} e A t , 장기 거동 L22~L24 numpy.linalg.eigA = U Σ V T A = U\Sigma V^{\mathsf T} A = U Σ V T 아무것도 없다 랭크, 노름, 조건수, 최적 근사, A + A^{+} A + L29, L33 numpy.linalg.svd
A = L U A = LU A = LU — 소거를 받아 적은 것¶ 첫 줄은 L4의 것이다. 소거를 하며 쓴 곱수를 아래삼각행렬에 모으고, 소거가 끝난 모습을
위삼각행렬에 두면 그대로 분해가 된다.
A = L U , det A = ∏ k = 1 n u k k A = LU,
\qquad
\det A = \prod_{k=1}^{n} u_{kk} A = LU , det A = k = 1 ∏ n u kk (1) 의 오른쪽 등식이 이 분해의 부산물이다. L L L 의 대각선이 전부 1이므로
det L = 1 \det L = 1 det L = 1 이고, 삼각행렬의 행렬식은 대각선의 곱이므로(L18) 피벗을 곱하면 행렬식이
나온다. 한 번의 소거로 해와 행렬식을 동시에 얻는 셈이다. 그리고 L L L 과 U U U 를
쥐고 있으면 우변이 바뀔 때마다 n 3 / 3 n^3/3 n 3 /3 을 다시 치를 필요 없이 n 2 n^2 n 2 으로 풀 수 있다.
A = Q R A = QR A = QR — 열을 직각으로 세운 것¶ 둘째 줄은 L17의 것이다. 그람-슈미트로 열을 하나씩 직교화하면 Q Q Q 가 나오고, 그 과정에서
쓴 계수가 R R R 에 남는다.
A = Q R , Q T Q = I , R 는 위삼각 A = QR,
\qquad
Q^{\mathsf T}Q = I,
\qquad
R \ \text{는 위삼각} A = QR , Q T Q = I , R 는 위삼각 (2) 의 세 조건이 함께 있으면 최소제곱이 쉬워진다. 정규방정식에 A = Q R A = QR A = QR 을
그대로 넣어 보자.
R T Q T Q ⏟ = I R x ^ = R T Q T b ⟹ R x ^ = Q T b R^{\mathsf T}\underbrace{Q^{\mathsf T}Q}_{=\,I}R\,\hat{\vv{x}}
= R^{\mathsf T}Q^{\mathsf T}\vv{b}
\qquad\Longrightarrow\qquad
R\,\hat{\vv{x}} = Q^{\mathsf T}\vv{b} R T = I Q T Q R x ^ = R T Q T b ⟹ R x ^ = Q T b (3) 의 화살표를 건너려면 양변 앞의 R T R^{\mathsf T} R T 를 지워야 하는데,
열이 독립이면 R R R 이 가역이라 지울 수 있다. 남는 것은 후진 대입 한 번 이다.
A T A A^{\mathsf T}A A T A 를 아예 만들지 않는다는 점이 L33에서 본 그 차이를 만든다.
S = Q Λ Q T S = Q\Lambda Q^{\mathsf T} S = Q Λ Q T — 대칭이 받는 상¶ 셋째 줄은 L25의 스펙트럼 정리다. 대칭이기만 하면 고윳값이 전부 실수이고 고유벡터를
직교로 고를 수 있다. 그래서 S − 1 S^{-1} S − 1 이 S T S^{\mathsf T} S T 가 된다.
S = Q Λ Q T = ∑ i = 1 n λ i q i q i T S = Q\Lambda Q^{\mathsf T}
= \sum_{i=1}^{n} \lambda_i \, \vv{q}_i \vv{q}_i^{\mathsf T} S = Q Λ Q T = i = 1 ∑ n λ i q i q i T (4) 의 오른쪽은 이 분해를 다르게 읽은 것이다. q i q i T \vv{q}_i\vv{q}_i^{\mathsf T} q i q i T
는 q i \vv{q}_i q i 방향으로의 투영행렬이므로(L15), 대칭행렬은 서로 직교하는 투영들을
λ i \lambda_i λ i 로 가중해 더한 것 이 된다. 여기에 고윳값의 부호만 얹으면 L27의 양정치
판정이 그대로 나온다. 전부 양수면 그릇이고 섞이면 안장이다.
A = S Λ S − 1 A = S\Lambda S^{-1} A = S Λ S − 1 — 좋은 좌표계로 갈아타는 것¶ 넷째 줄은 L22의 대각화다. 고유벡터를 열에 세워 S S S 를 만들면, 그 좌표계에서는 행렬이
대각행렬이 된다. 거듭제곱이 곧바로 따라온다.
A k = S Λ k S − 1 , Λ k = diag ( λ 1 k , … , λ n k ) A^{k} = S\Lambda^{k}S^{-1},
\qquad
\Lambda^{k} = \diag\!\left(\lambda_1^{k}, \dots, \lambda_n^{k}\right) A k = S Λ k S − 1 , Λ k = diag ( λ 1 k , … , λ n k ) (5) 의 가운데에서 S − 1 S S^{-1}S S − 1 S 가 k − 1 k-1 k − 1 번 사라진 것이 계산의 전부다.
그런데 이 식의 값어치는 속도가 아니다. k k k 가 커질 때 무슨 일이 벌어지는지를
λ i \lambda_i λ i 만 보고 알 수 있다는 것 이 값어치다. ∣ λ ∣ < 1 \lvert\lambda\rvert < 1 ∣ λ ∣ < 1 이면 0으로
가라앉고 ∣ λ ∣ > 1 \lvert\lambda\rvert > 1 ∣ λ ∣ > 1 이면 터진다. L23의 미분방정식과 L24의 마코브 행렬이
전부 이 한 줄에서 나왔다.
A = U Σ V T A = U\Sigma V^{\mathsf T} A = U Σ V T — 조건이 하나도 없는 것¶ 다섯째 줄이 L29다. 정사각이 아니어도 되고, 대칭이 아니어도 되고, 랭크가 모자라도 된다.
A = U Σ V T = ∑ i = 1 r σ i u i v i T , σ 1 ≥ ⋯ ≥ σ r > 0 A = U\Sigma V^{\mathsf T}
= \sum_{i=1}^{r} \sigma_i \, \vv{u}_i \vv{v}_i^{\mathsf T},
\qquad
\sigma_1 \ge \dots \ge \sigma_r > 0 A = U Σ V T = i = 1 ∑ r σ i u i v i T , σ 1 ≥ ⋯ ≥ σ r > 0 (6) 의 오른쪽 합은 (4) 의 합과 모양이 닮았지만 결정적으로
다른 데가 있다. 대칭행렬은 q i \vv{q}_i q i 한 벌 로 자기 자신을 적었고, 여기서는
u i \vv{u}_i u i 와 v i \vv{v}_i v i 두 벌 을 쓴다. 들어가는 공간과 나오는 공간이 다르니
기저도 두 벌이어야 하는 것이다. 그 대가로 조건이 사라졌다.
2. 조건은 사슬이 아니다 ¶ 다섯 줄을 늘어놓으면 자연스럽게 이런 문장을 쓰고 싶어진다.
대칭 ⊂ 대각화 가능 ⊂ 열 독립 ⊂ 소거 가능 ⊂ 모든 행렬 \text{대칭} \ \subset\ \text{대각화 가능} \ \subset\ \text{열 독립}
\ \subset\ \text{소거 가능} \ \subset\ \text{모든 행렬} 대칭 ⊂ 대각화 가능 ⊂ 열 독립 ⊂ 소거 가능 ⊂ 모든 행렬 (7) 의 포함 사슬은 틀렸다. 맨 오른쪽 고리는 무엇이든 모든 행렬 안에
들어가니 따질 것이 없고, 맨 왼쪽 고리는 참이다. 그런데 가운데 두 고리가 거짓이다.
L32에서도 같은 경고를 했으니, 이미 배운 행렬로 반례를 직접 세워 보자.
대칭인데 L U LU LU 가 없다 ¶ L2에서 피벗이 0이 되는 경우를 보았다. 가장 작은 예가 이것이다.
P = [ 0 1 1 0 ] , P = P T , det [ 0 ] = 0 P = \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix},
\qquad
P = P^{\mathsf T},
\qquad
\det\begin{bmatrix} 0 \end{bmatrix} = 0 P = [ 0 1 1 0 ] , P = P T , det [ 0 ] = 0 (8) 의 행렬은 대칭이므로 스펙트럼 정리가 무조건 적용된다.
고윳값은 1 과 -1 이고 고유벡터는 ( 1 , 1 ) (1,1) ( 1 , 1 ) 과 ( 1 , − 1 ) (1,-1) ( 1 , − 1 ) 로 직교한다. 그런데 왼쪽 위
성분이 0이라 첫 피벗이 잡히지 않는다. 행을 바꾸지 않고는 소거를 시작조차 할 수 없다.
대칭이 L U LU LU 를 보장하지 않는다.
L U LU LU 는 있는데 대각화가 안 된다¶ L28의 결함 행렬을 가져오면 반대 방향의 반례가 된다.
J = [ 3 1 0 3 ] , J = I ⋅ J 가 곧 L U , rank ( J − 3 I ) = 1 J = \begin{bmatrix} 3 & 1 \\ 0 & 3 \end{bmatrix},
\qquad
J = I \cdot J \ \text{ 가 곧 } LU,
\qquad
\rank(J - 3I) = 1 J = [ 3 0 1 3 ] , J = I ⋅ J 가 곧 LU , rank ( J − 3 I ) = 1 (9) 의 J J J 는 이미 위삼각이므로 L = I L = I L = I 로 두면 소거가 끝나 있다.
L U LU LU 가 있고 열도 독립이다. 그런데 고윳값 3의 대수적 중복도가 2인데
rank ( J − 3 I ) = 1 \rank(J - 3I) = 1 rank ( J − 3 I ) = 1 이라 기하적 중복도가 2 − 1 = 1 2 - 1 = 1 2 − 1 = 1 이다. 고유벡터가 하나뿐이니
대각화는 불가능하다.
대각화는 되는데 Q R QR QR 이 없다 ¶ 세 번째 반례는 이 강의에서 계속 쓸 행렬이다.
A = [ 1 1 2 1 0 1 0 1 1 ] , a 3 = a 1 + a 2 A = \begin{bmatrix} 1 & 1 & 2 \\ 1 & 0 & 1 \\ 0 & 1 & 1 \end{bmatrix},
\qquad
\vv{a}_3 = \vv{a}_1 + \vv{a}_2 A = ⎣ ⎡ 1 1 0 1 0 1 2 1 1 ⎦ ⎤ , a 3 = a 1 + a 2 (10) 의 셋째 열이 앞의 두 열의 합이므로 열이 종속이고, 따라서 Q R QR QR 에서 R R R 의
마지막 대각 성분이 0이 된다. 그런데 고윳값을 구해 보면 이야기가 달라진다. 대각합이 2,
행렬식이 0, 2차 주소행렬식의 합이 -1 이므로 특성다항식이
λ 3 − 2 λ 2 − λ = λ ( λ 2 − 2 λ − 1 ) = 0 ⟹ λ = 0 , 1 ± 2 \lambda^{3} - 2\lambda^{2} - \lambda
= \lambda\left(\lambda^{2} - 2\lambda - 1\right) = 0
\qquad\Longrightarrow\qquad
\lambda = 0,\ 1 \pm \sqrt2 λ 3 − 2 λ 2 − λ = λ ( λ 2 − 2 λ − 1 ) = 0 ⟹ λ = 0 , 1 ± 2 이 된다. (11) 의 세 근이 서로 다르므로 고유벡터가 세 개 나오고
대각화가 된다. 랭크가 모자란 것과 결함인 것은 전혀 다른 이야기라는 뜻이다.
참인 포함은 양 끝뿐이다 ¶ 반례 셋이 사슬의 가운데를 끊었다. 그러면 남는 것은 무엇인가.
대칭 ⊂ 대각화 가능 , 소거 가능 ⊂ 모든 행렬 , 가운데 둘은 거짓 \text{대칭} \ \subset\ \text{대각화 가능},
\qquad
\text{소거 가능} \ \subset\ \text{모든 행렬},
\qquad
\text{가운데 둘은 거짓} 대칭 ⊂ 대각화 가능 , 소거 가능 ⊂ 모든 행렬 , 가운데 둘은 거짓 (12) 의 왼쪽 포함은 스펙트럼 정리 그 자체다. 대칭이면 고유벡터를 정규직교로
고를 수 있으니 n n n 개가 반드시 나온다. 반대 방향은 거짓이다.
( 2 1 0 3 ) \begin{pmatrix}2&1\\0&3\end{pmatrix} ( 2 0 1 3 ) 는 고윳값이 2와 3으로 달라 대각화되지만
대칭이 아니다. 오른쪽 포함은 사정이 다르다. 어떤 행렬이든 SVD를 가지므로 마지막 칸에는
조건이랄 것이 없고, 그래서 이 고리는 참일 수밖에 없다.
Figure 1: 왼쪽은 이 책에 나온 행렬 여덟 개를 다섯 분해에 통과시킨 결과다. 포개지는 줄은 둘뿐이다.
셋째 줄이 넷째 줄에 담기고, 맨 아랫줄이 나머지를 전부 담는다. 그 밖에는 어느 줄도 다른
줄을 품지 않는다. 오른쪽은 다섯 종류의 무작위 행렬 2000개로 같은 것을 잰 것이다.
L U LU LU 와 Q R QR QR 의 막대가 똑같이 80%인데도 걸리는 족이 서로 다르다. 강의 번호는 그 행렬이
처음 나온 자리를 가리킨다.
Figure 1 의 그림에서 확실한 것은 두 가지뿐이다.
대칭이면 반드시 대각화된다. 스펙트럼 정리가 그것을 보장한다.
그리고 맨 아랫줄은 언제나 통과한다.
나머지는 방향에 따라 깨진다. L U LU LU 줄이 묻는 것은 소거가 교환 없이 끝나느냐 하나뿐이라
랭크가 모자란 (10) 의 A A A 도 통과하는데, 그때는 마지막 피벗이 0이라
후진 대입은 못 한다. 통과가 곧 쓸모는 아니다.
3. 같은 행렬 하나에 다섯을 다 걸어 본다 ¶ 그러면 다섯을 전부 통과하는 행렬은 어떤 것인가. 대칭이면서 소거가 되고 랭크가 꽉 차야
한다. L27의 삼중대각행렬이 바로 그것이다.
T = [ 2 − 1 0 − 1 2 − 1 0 − 1 2 ] T = \begin{bmatrix}
2 & -1 & 0 \\ -1 & 2 & -1 \\ 0 & -1 & 2
\end{bmatrix} T = ⎣ ⎡ 2 − 1 0 − 1 2 − 1 0 − 1 2 ⎦ ⎤ (13) 의 T T T 는 대칭이고, 선행 주소행렬식이 2 , 3 , 4 2, 3, 4 2 , 3 , 4 로 전부 0이 아니며,
가역이다. 다섯 줄이 전부 걸린다. 하나씩 걸어 보자.
소거하면 피벗이 규칙적으로 나온다.
피벗 = 2 , 3 2 , 4 3 , 2 × 3 2 × 4 3 = 4 = det T \text{피벗} = 2,\ \tfrac32,\ \tfrac43,
\qquad
2 \times \tfrac32 \times \tfrac43 = 4 = \det T 피벗 = 2 , 2 3 , 3 4 , 2 × 2 3 × 3 4 = 4 = det T (14) 의 곱이 (1) 의 등식을 그대로 확인해 준다. 행 교환이 한 번도
필요하지 않으므로 순열행렬 없이 T = L U T = LU T = LU 가 된다. Q R QR QR 로 가면 Q Q Q 의 열이 T T T 의 열을
직교화한 것이 되고, R R R 의 대각 성분 절댓값의 곱이 다시 4가 된다. 직교행렬은 부피를
바꾸지 않기 때문이다(L20).
고윳값을 구하면 이렇게 나온다.
λ = 2 + 2 ≈ 3.414 , λ = 2 , λ = 2 − 2 ≈ 0.586 \lambda = 2 + \sqrt2 \approx 3.414,
\qquad
\lambda = 2,
\qquad
\lambda = 2 - \sqrt2 \approx 0.586 λ = 2 + 2 ≈ 3.414 , λ = 2 , λ = 2 − 2 ≈ 0.586 (15) 의 셋이 전부 실수이고 전부 양수다. 실수인 것은 대칭이기
때문이고(L25), 양수인 것은 피벗이 전부 양수이기 때문이다(L27). 곱하면
( 2 + 2 ) ⋅ 2 ⋅ ( 2 − 2 ) = 2 ( 4 − 2 ) = 4 (2+\sqrt2)\cdot 2\cdot(2-\sqrt2) = 2(4-2) = 4 ( 2 + 2 ) ⋅ 2 ⋅ ( 2 − 2 ) = 2 ( 4 − 2 ) = 4 로 역시 행렬식이다.
이제 마지막 세 줄을 나란히 세워 보자. 여기서 재미있는 일이 벌어진다.
Q = S = U = V , Λ = Σ , S − 1 = Q T = V T Q = S = U = V,
\qquad
\Lambda = \Sigma,
\qquad
S^{-1} = Q^{\mathsf T} = V^{\mathsf T} Q = S = U = V , Λ = Σ , S − 1 = Q T = V T (16) 의 등식들이 뜻하는 바는 세 분해가 같은 것으로 무너졌다 는
것이다. 대칭이라 고유벡터가 직교하니 S S S 를 굳이 비직교로 고를 이유가 없고,
고윳값이 전부 양수라 σ i = ∣ λ i ∣ = λ i \sigma_i = \lvert\lambda_i\rvert = \lambda_i σ i = ∣ λ i ∣ = λ i 이며,
A T A = T 2 A^{\mathsf T}A = T^2 A T A = T 2 의 고유벡터가 T T T 의 고유벡터와 같기 때문이다.
∏ i σ i = 4 = ∣ det T ∣ , κ ( T ) = σ 1 σ 3 = 2 + 2 2 − 2 = 3 + 2 2 ≈ 5.83 \prod_{i} \sigma_i = 4 = \lvert\det T\rvert,
\qquad
\kappa(T) = \frac{\sigma_1}{\sigma_3}
= \frac{2 + \sqrt2}{2 - \sqrt2} = 3 + 2\sqrt2 \approx 5.83 i ∏ σ i = 4 = ∣ det T ∣ , κ ( T ) = σ 3 σ 1 = 2 − 2 2 + 2 = 3 + 2 2 ≈ 5.83 (17) 의 왼쪽은 L29에서 확인한 등식이고 오른쪽은 L32의 조건수다.
분모와 분자에 2 + 2 2+\sqrt2 2 + 2 를 곱하면 ( 2 + 2 ) 2 4 − 2 = 6 + 4 2 2 \frac{(2+\sqrt2)^2}{4-2} = \frac{6+4\sqrt2}{2} 4 − 2 ( 2 + 2 ) 2 = 2 6 + 4 2
이 되어 3 + 2 2 3 + 2\sqrt2 3 + 2 2 가 나온다. 5.83이면 아주 얌전한 행렬이다.
Figure 2: T T T 하나를 다섯 방식으로 쪼갠 것이다. 아래 세 줄의 숫자가 글자 하나까지 같다.
Figure 2 의 아래 세 줄이 같아진 것은 T T T 가 좋은 행렬이어서가 아니라
아주 특별한 행렬이어서 다.
다섯 조건을 전부 만족하려면 대칭이어야 하는데, 실무에서 마주치는 행렬 중 대칭인 것은
Figure 1 의 인구조사에서 보듯 소수다. 대부분은 몇 줄이 그냥 걸리고,
그때 남는 것이 맨 아랫줄이다.
4. 네 부분공간 최종본 ¶ 이제 이 강의의 결론이다. L10에서 네 개의 기본 부분공간을 그렸고, 그때는 상자 네 개와
차원만 있었다. L29에서 그 상자에 정규직교기저를 채웠다. L33에서 되돌아오는 화살표를
그렸다. 셋을 합치면 이런 정리가 된다.
A A A 가 m × n m \times n m × n , 랭크 r r r , A = U Σ V T A = U\Sigma V^{\mathsf T} A = U Σ V T 라 하자. 그러면
v 1 , … , v r \vv{v}_1, \dots, \vv{v}_r v 1 , … , v r 은 행공간의, v r + 1 , … , v n \vv{v}_{r+1}, \dots, \vv{v}_n v r + 1 , … , v n 은 영공간의,
u 1 , … , u r \vv{u}_1, \dots, \vv{u}_r u 1 , … , u r 은 열공간의, u r + 1 , … , u m \vv{u}_{r+1}, \dots, \vv{u}_m u r + 1 , … , u m 은 좌영공간의
정규직교기저다. 그리고 i ≤ r i \le r i ≤ r 이면
A v i = σ i u i , A + u i = 1 σ i v i A\vv{v}_i = \sigma_i \vv{u}_i,
\qquad
A^{+}\vv{u}_i = \frac{1}{\sigma_i}\vv{v}_i A v i = σ i u i , A + u i = σ i 1 v i 이고, i > r i > r i > r 이면 양쪽 모두 0 \vv{0} 0 으로 간다.
Theorem 1 의 정리를 (10) 의 행렬로 끝까지 확인해 보자.
랭크가 2이고 3 × 3 3 \times 3 3 × 3 이므로 네 칸이 전부 비어 있지 않다.
v \vv{v} v 를 구한다¶ L29의 절차대로 A T A A^{\mathsf T}A A T A 부터 만든다.
A T A = [ 2 1 3 1 2 3 3 3 6 ] A^{\mathsf T}A = \begin{bmatrix} 2 & 1 & 3 \\ 1 & 2 & 3 \\ 3 & 3 & 6 \end{bmatrix} A T A = ⎣ ⎡ 2 1 3 1 2 3 3 3 6 ⎦ ⎤ (19) 의 행렬은 대칭이고 셋째 열이 앞 두 열의 합이라 랭크가 2다.
고유벡터를 눈으로 찾을 수 있다. ( 1 , 1 , 2 ) (1,1,2) ( 1 , 1 , 2 ) 를 곱하면 ( 2 + 1 + 6 , 1 + 2 + 6 , 3 + 3 + 12 ) = ( 9 , 9 , 18 ) (2+1+6,\ 1+2+6,\ 3+3+12) = (9,9,18) ( 2 + 1 + 6 , 1 + 2 + 6 , 3 + 3 + 12 ) = ( 9 , 9 , 18 )
이라 정확히 9배이고, ( 1 , − 1 , 0 ) (1,-1,0) ( 1 , − 1 , 0 ) 을 곱하면 ( 2 − 1 , 1 − 2 , 3 − 3 ) = ( 1 , − 1 , 0 ) (2-1,\ 1-2,\ 3-3) = (1,-1,0) ( 2 − 1 , 1 − 2 , 3 − 3 ) = ( 1 , − 1 , 0 ) 이라 1배다.
그리고 ( 1 , 1 , − 1 ) (1,1,-1) ( 1 , 1 , − 1 ) 을 곱하면 ( 2 + 1 − 3 , 1 + 2 − 3 , 3 + 3 − 6 ) = ( 0 , 0 , 0 ) (2+1-3,\ 1+2-3,\ 3+3-6) = (0,0,0) ( 2 + 1 − 3 , 1 + 2 − 3 , 3 + 3 − 6 ) = ( 0 , 0 , 0 ) 이다.
σ 1 = 9 = 3 , σ 2 = 1 = 1 , σ 3 = 0 \sigma_1 = \sqrt9 = 3,
\qquad
\sigma_2 = \sqrt1 = 1,
\qquad
\sigma_3 = 0 σ 1 = 9 = 3 , σ 2 = 1 = 1 , σ 3 = 0 (20) 의 세 값이 A T A A^{\mathsf T}A A T A 의 고윳값에 제곱근을 씌운 것이다.
0이 아닌 것이 둘이므로 랭크가 2라는 사실이 여기서도 확인된다. 대응하는 고유벡터를
길이 1로 맞추면 다음과 같다.
v 1 = 1 6 [ 1 1 2 ] , v 2 = 1 2 [ 1 − 1 0 ] , v 3 = 1 3 [ 1 1 − 1 ] \vv{v}_1 = \frac{1}{\sqrt6}\begin{bmatrix} 1 \\ 1 \\ 2 \end{bmatrix},
\qquad
\vv{v}_2 = \frac{1}{\sqrt2}\begin{bmatrix} 1 \\ -1 \\ 0 \end{bmatrix},
\qquad
\vv{v}_3 = \frac{1}{\sqrt3}\begin{bmatrix} 1 \\ 1 \\ -1 \end{bmatrix} v 1 = 6 1 ⎣ ⎡ 1 1 2 ⎦ ⎤ , v 2 = 2 1 ⎣ ⎡ 1 − 1 0 ⎦ ⎤ , v 3 = 3 1 ⎣ ⎡ 1 1 − 1 ⎦ ⎤ (21) 의 앞 둘이 행공간의 정규직교기저 이고 셋째가 영공간의 기저 다.
서로 직교하는지는 내적을 재 보면 된다. v 1 ⋅ v 2 = 1 − 1 + 0 = 0 \vv{v}_1 \cdot \vv{v}_2 = 1 - 1 + 0 = 0 v 1 ⋅ v 2 = 1 − 1 + 0 = 0 이고
v 1 ⋅ v 3 = 1 + 1 − 2 = 0 \vv{v}_1 \cdot \vv{v}_3 = 1 + 1 - 2 = 0 v 1 ⋅ v 3 = 1 + 1 − 2 = 0 이며 v 2 ⋅ v 3 = 1 − 1 + 0 = 0 \vv{v}_2\cdot\vv{v}_3 = 1 - 1 + 0 = 0 v 2 ⋅ v 3 = 1 − 1 + 0 = 0 이다.
u \vv{u} u 를 구한다¶ u i \vv{u}_i u i 는 따로 구하는 것이 아니라 A v i A\vv{v}_i A v i 를 σ i \sigma_i σ i 로 나눠 얻는다.
L29에서 이 순서를 어기면 부호가 어긋난다고 경고했던 그 자리다.
u 1 = A v 1 3 = 1 3 6 [ 6 3 3 ] = 1 6 [ 2 1 1 ] \vv{u}_1 = \frac{A\vv{v}_1}{3}
= \frac{1}{3\sqrt6}\begin{bmatrix} 6 \\ 3 \\ 3 \end{bmatrix}
= \frac{1}{\sqrt6}\begin{bmatrix} 2 \\ 1 \\ 1 \end{bmatrix} u 1 = 3 A v 1 = 3 6 1 ⎣ ⎡ 6 3 3 ⎦ ⎤ = 6 1 ⎣ ⎡ 2 1 1 ⎦ ⎤ (22) 의 가운데 벡터는 A ( 1 , 1 , 2 ) = ( 1 + 1 + 4 , 1 + 0 + 2 , 0 + 1 + 2 ) A(1,1,2) = (1+1+4,\ 1+0+2,\ 0+1+2) A ( 1 , 1 , 2 ) = ( 1 + 1 + 4 , 1 + 0 + 2 , 0 + 1 + 2 ) 를 계산한 것이다.
분모의 3이 ( 6 , 3 , 3 ) (6,3,3) ( 6 , 3 , 3 ) 을 ( 2 , 1 , 1 ) (2,1,1) ( 2 , 1 , 1 ) 로 줄여 준다. 둘째도 같은 방식으로 나온다.
u 2 = A v 2 1 = 1 2 [ 0 1 − 1 ] , u 3 = 1 3 [ − 1 1 1 ] \vv{u}_2 = \frac{A\vv{v}_2}{1}
= \frac{1}{\sqrt2}\begin{bmatrix} 0 \\ 1 \\ -1 \end{bmatrix},
\qquad
\vv{u}_3 = \frac{1}{\sqrt3}\begin{bmatrix} -1 \\ 1 \\ 1 \end{bmatrix} u 2 = 1 A v 2 = 2 1 ⎣ ⎡ 0 1 − 1 ⎦ ⎤ , u 3 = 3 1 ⎣ ⎡ − 1 1 1 ⎦ ⎤ (23) 의 u 2 \vv{u}_2 u 2 는 A ( 1 , − 1 , 0 ) = ( 1 − 1 , 1 − 0 , 0 − 1 ) A(1,-1,0) = (1-1,\ 1-0,\ 0-1) A ( 1 , − 1 , 0 ) = ( 1 − 1 , 1 − 0 , 0 − 1 ) 에서 나왔고,
u 3 \vv{u}_3 u 3 은 앞의 둘에 직교하도록 고른 것이다. 이 셋이 L29의 앵커 C C C 에서 나온
u \vv{u} u 와 똑같다. A A A 의 앞 두 열이 바로 그 C C C 이기 때문이다.
A v 3 = 0 , A T u 3 = 0 A\vv{v}_3 = \vv{0},
\qquad
A^{\mathsf T}\vv{u}_3 = \vv{0} A v 3 = 0 , A T u 3 = 0 (24) 의 두 등식이 아래 두 칸의 정체를 확정한다. v 3 \vv{v}_3 v 3 이 영공간에
있고 u 3 \vv{u}_3 u 3 이 좌영공간에 있다. 네 칸의 차원을 세면 이렇게 맞아떨어진다.
2 ⏟ dim C ( A T ) + 1 ⏟ dim N ( A ) = 3 = n , 2 ⏟ dim C ( A ) + 1 ⏟ dim N ( A T ) = 3 = m \underbrace{2}_{\dim\Col(A^{\mathsf T})} + \underbrace{1}_{\dim\Nul(A)} = 3 = n,
\qquad
\underbrace{2}_{\dim\Col(A)} + \underbrace{1}_{\dim\Nul(A^{\mathsf T})} = 3 = m d i m C ( A T ) 2 + d i m N ( A ) 1 = 3 = n , d i m C ( A ) 2 + d i m N ( A T ) 1 = 3 = m (25) 의 두 등식이 L10의 차원의 기본정리다. 왼쪽은 정의역 쪽 R 3 \R^3 R 3 을 두
조각으로 나눈 것이고 오른쪽은 치역 쪽 R 3 \R^3 R 3 을 나눈 것이며, 두 조각은 직교한다(L14).
화살표를 양쪽으로 그린다 ¶ Theorem 1 의 두 화살표를 이 행렬에서 숫자로 적으면 이렇게 된다.
A v 1 = 3 u 1 , A + u 1 = 1 3 v 1 , A v 2 = u 2 , A + u 2 = v 2 A\vv{v}_1 = 3\vv{u}_1,
\quad
A^{+}\vv{u}_1 = \tfrac13\vv{v}_1,
\qquad
A\vv{v}_2 = \vv{u}_2,
\quad
A^{+}\vv{u}_2 = \vv{v}_2 A v 1 = 3 u 1 , A + u 1 = 3 1 v 1 , A v 2 = u 2 , A + u 2 = v 2 (26) 의 두 쌍이 서로를 되돌린다. v 1 \vv{v}_1 v 1 은 3배로 늘어나
u 1 \vv{u}_1 u 1 이 되고, u 1 \vv{u}_1 u 1 은 3으로 나뉘어 v 1 \vv{v}_1 v 1 로 돌아온다. v 2 \vv{v}_2 v 2 는
1배이므로 길이가 그대로다. 행공간과 열공간 사이는 왕복이 된다.
아래 두 칸은 사정이 다르다.
A v 3 = 0 , A + u 3 = 0 , σ 3 = 0 ⇒ 1 σ 3 는 없다 A\vv{v}_3 = \vv{0},
\qquad
A^{+}\vv{u}_3 = \vv{0},
\qquad
\sigma_3 = 0 \ \Rightarrow\ \frac{1}{\sigma_3} \ \text{는 없다} A v 3 = 0 , A + u 3 = 0 , σ 3 = 0 ⇒ σ 3 1 는 없다 (27) 의 마지막 조각이 편도인 이유다. 1 / σ 3 1/\sigma_3 1/ σ 3 을 쓸 수 없으니
Σ + \Sigma^{+} Σ + 의 그 자리에 0을 넣을 수밖에 없었다(L33). 그래서 v 3 \vv{v}_3 v 3 방향으로
들어 있던 정보는 0으로 눌린 뒤 어떤 행렬로도 되찾을 수 없다.
실제로 만들어 보면 이렇게 생겼다.
A + = V Σ + U T = 1 9 [ 1 5 − 4 1 − 4 5 2 1 1 ] A^{+} = V\Sigma^{+}U^{\mathsf T}
= \frac{1}{9}\begin{bmatrix}
1 & 5 & -4 \\ 1 & -4 & 5 \\ 2 & 1 & 1
\end{bmatrix} A + = V Σ + U T = 9 1 ⎣ ⎡ 1 1 2 5 − 4 1 − 4 5 1 ⎦ ⎤ (28) 의 행렬에 A A A 를 곱해 보면 단위행렬이 나오지 않는다. 나올 수가 없다.
A A A 가 3차원을 2차원으로 눌렀으니 그 손실을 메울 방법이 없기 때문이다.
대신 이런 것이 나온다.
A + A = I − v 3 v 3 T , A A + = I − u 3 u 3 T A^{+}A = I - \vv{v}_3\vv{v}_3^{\mathsf T},
\qquad
AA^{+} = I - \vv{u}_3\vv{u}_3^{\mathsf T} A + A = I − v 3 v 3 T , A A + = I − u 3 u 3 T (29) 의 두 행렬은 각각 행공간으로의 투영 과 열공간으로의
투영 이다. I I I 에서 한 방향의 투영을 뺐으니 남는 것은 그 방향의 직교여공간으로의
투영이다(L15). 숫자로 적으면 둘 다 대각선이 2 3 \tfrac23 3 2 인 행렬이고, 고윳값은
1 , 1 , 0 1, 1, 0 1 , 1 , 0 이다. 살렸다, 살렸다, 죽였다.
Figure 3: 위쪽 두 그림이 실제 기하다. 왼쪽에서 v 1 , v 2 \vv{v}_1, \vv{v}_2 v 1 , v 2 가 평면을 이루고 v 3 \vv{v}_3 v 3 이
그 평면에 수직인 직선을 이룬다. 오른쪽에서 그 평면이 u 1 , u 2 \vv{u}_1, \vv{u}_2 u 1 , u 2 의 평면으로
옮겨 가는데, v 1 \vv{v}_1 v 1 방향만 3배로 늘어난다. 아래 지도가 그 일을 네 칸으로 정리한
것이다.
랭크는 위쪽 두 칸의 차원이고, 해의 존재는 b \vv{b} b 가 오른쪽 위 칸에 있느냐이며,
해의 유일성은 왼쪽 아래 칸이 비었느냐다. 최소제곱은 b \vv{b} b 를 오른쪽 위로 투영하는
일이고, 최소노름 해는 왼쪽 위 칸에서 답을 고르는 일이다. 조건수는 위쪽을 오가는
배율의 최대와 최소의 비다.
서른네 편이 이 네 칸과 그 사이의 화살표를 그리는 일이었다.
5. 세 개의 태도 ¶ 공식은 잊어도 좋다. 그러나 다음 셋은 이 교재가 남기고 싶은 것이다.
옳은 공식과 쓰는 공식은 다르다 ¶ 첫째 태도다. 후반부에서 이 교훈을 네 번 만났다.
크래머(L20) : ( n + 1 ) n ! 대 소거(L4) : 1 3 n 3 \text{크래머(L20)}:\ (n+1)\,n!
\qquad\text{대}\qquad
\text{소거(L4)}:\ \tfrac13 n^{3} 크래머 (L20) : ( n + 1 ) n ! 대 소거 (L4) : 3 1 n 3 (30) 의 두 값은 n = 20 n = 20 n = 20 에서 각각 약 5.1 × 1 0 19 5.1\times10^{19} 5.1 × 1 0 19 와 2 , 667 2{,}667 2 , 667 이다.
크래머 공식은 해를 행렬식의 비로 아름답게 적어 주지만, 그 아름다움을 계산하려면
우주의 나이가 필요하다. 여인수 전개(L19)도 n ! n! n ! 이라 사정이 같다.
J ( ϵ ) = [ 3 1 ϵ 3 ] ⟹ κ ( S ) ∼ 1 ϵ J(\epsilon) = \begin{bmatrix} 3 & 1 \\ \epsilon & 3 \end{bmatrix}
\qquad\Longrightarrow\qquad
\kappa(S) \sim \frac{1}{\sqrt\epsilon} J ( ϵ ) = [ 3 ϵ 1 3 ] ⟹ κ ( S ) ∼ ϵ 1 (31) 의 관계가 L28의 결론이었다. ϵ \epsilon ϵ 을 10-8 만 흔들어도
고윳값이 3 ± 1 0 − 4 3 \pm 10^{-4} 3 ± 1 0 − 4 로 갈라지고 고유벡터 행렬의 조건수가 104 이 된다.
조르당 형은 존재하지만 수치적으로는 존재하지 않는다.
κ ( A T A ) = κ ( A ) 2 \kappa\!\left(A^{\mathsf T}A\right) = \kappa(A)^{2} κ ( A T A ) = κ ( A ) 2 (32) 의 등식이 L33의 결론이었다. 정규방정식을 그대로 코드로 옮기면
조건수가 제곱되어 유효자릿수가 절반으로 준다. 네 번 다 이유가 같다.
답이 있다는 것과 그 답을 손에 쥘 수 있다는 것은 다르다.
좋은 기저를 고르면 어려운 문제가 쉬워진다 ¶ 둘째 태도다. 대각화가 그 첫 사례였다.
A k x 0 = ∑ i c i λ i k s i , x 0 = ∑ i c i s i A^{k}\vv{x}_0 = \sum_{i} c_i \lambda_i^{k}\, \vv{s}_i,
\qquad
\vv{x}_0 = \sum_i c_i \vv{s}_i A k x 0 = i ∑ c i λ i k s i , x 0 = i ∑ c i s i (33) 의 왼쪽은 고유벡터 기저에서 적은 것이다. 표준기저에서는 행렬을
k k k 번 곱해야 알 수 있는 것이, 좋은 기저에서는 스칼라를 k k k 제곱하는 것 으로
바뀐다. 기저를 바꿨을 뿐인데 문제의 난이도가 달라졌다.
직접 DFT : N 2 대 FFT(L26) : N log 2 N \text{직접 DFT}:\ N^{2}
\qquad\text{대}\qquad
\text{FFT(L26)}:\ N\log_2 N 직접 DFT : N 2 대 FFT(L26) : N log 2 N (34) 의 두 값은 N = 2 20 N = 2^{20} N = 2 20 에서 52 , 429 52{,}429 52 , 429 배 차이가 난다. 푸리에 행렬을
반씩 쪼개는 요령 하나가 신호처리 전체를 실용 가능하게 만들었다. L31의 DCT도, L29의
SVD도 같은 이야기의 다른 판본이다. 어느 좌표계에서 보느냐가 문제의 크기를 정한다.
조건이 없는 도구가 가장 강하다 ¶ 셋째 태도다. 앞의 둘이 요령이라면 이것은 원칙에 가깝다.
λ ∈ C 일 수 있고, 정사각이 아니면 아예 없다 대 σ i ≥ 0 는 언제나 있다 \lambda \in \C \ \text{일 수 있고, 정사각이 아니면 아예 없다}
\qquad\text{대}\qquad
\sigma_i \ge 0 \ \text{는 언제나 있다} λ ∈ C 일 수 있고 , 정사각이 아니면 아예 없다 대 σ i ≥ 0 는 언제나 있다 (35) 의 대비가 SVD의 값어치다. 무작위 4 × 4 4\times4 4 × 4 실행렬 400개를 만들어
보면 그중 88%가 복소 고윳값을 갖는다. 4 × 3 4\times3 4 × 3 이면 고윳값이라는 개념 자체가 없다.
그런데 특이값은 어느 쪽에서도 음이 아닌 실수로 존재한다.
Figure 4: 왼쪽은 n n n 이 커질 때 세 방법의 연산 횟수, 가운데는 기저를 바꿨을 때의 값어치,
오른쪽은 고윳값이 복소평면 어디로든 흩어지는 동안 특이값은 늘 실수축의 오른쪽에만
있다는 사실이다.
Figure 4 의 오른쪽 그림은 SVD가 늘 더 낫다는 뜻이 아니다.
다만 실패하지 않는다는 성질은 그 자체로 값어치가 있다. 랭크가 떨어지면 L U LU LU 는
0으로 나누고 Q R QR QR 은 대각선에 0을 내놓지만, SVD는 σ r \sigma_r σ r 이 얼마나 작은지를
숫자로 알려준다. 고장 나는 대신 진단서를 쓰는 것이다.
6. 전체 역인덱스 ¶ 찾아볼 수 있게 개념과 강의 번호를 붙여 둔다.
전반부 — A x = b A\vv{x} = \vv{b} A x = b 를 푸는 문제 ¶ 개념 강의 행 그림과 열 그림 L1 소거법, 피벗, 치환행렬 L2 행렬 곱셈의 네 관점, 역행렬, 가우스-조르당 L3 L U LU LU 분해, L D U LDU L D U , P A = L U PA = LU P A = LU L4 순열행렬, 전치, 벡터공간, 부분공간 L5 열공간, 영공간 L6 사다리꼴, 기약 사다리꼴, 특수해, 자유변수 L7 완전해, 랭크에 따른 네 경우 L8 선형독립, 생성, 기저, 차원 L9 네 개의 기본 부분공간, 차원의 기본정리 L10 행렬공간, 랭크 1 행렬, 함수공간 L11 결합행렬, 키르히호프 법칙, A T C A A^{\mathsf T}CA A T C A L12 A = C R A = CR A = CR , 행렬 해부 절차L13 직교 부분공간, 직교여공간, A T A A^{\mathsf T}A A T A L14 투영, 투영행렬, I − P I - P I − P L15 정규방정식, 최소제곱 L16 정규직교, 직교행렬, 그람-슈미트, Q R QR QR L17
후반부 — 행렬 A A A 자체를 쪼개는 문제 ¶ 개념 강의 행렬식의 세 공리, 부피 L18 빅 포뮬러, 여인수 전개 L19 크래머 공식, 여인수 역행렬, 야코비안 L20 고윳값, 고유벡터, 특성방정식 L21 대각화, 거듭제곱, 피보나치 L22 미분방정식, e A t e^{At} e A t , 안정성 L23 마코브 행렬, 정상상태 L24 스펙트럼 정리, 실베스터 관성 법칙 L25 복소 내적, 에르미트, 유니타리, 푸리에 행렬, FFT L26 양의 정부호 다섯 조건, 에너지, 촐레스키 L27 유사 행렬, 조르당 표준형, ϵ \sqrt\epsilon ϵ 법칙 L28 특이값 분해, 네 부분공간의 기저, 에카르트-영 L29 선형변환, 기저와 행렬, M − 1 A M M^{-1}AM M − 1 A M L30 기저 변환, DCT, 웨이블릿, 파세발 L31 진단 흐름도, 조건수, 헷갈리는 여섯 쌍 L32 좌·우 역행렬, 의사역행렬, 무어-펜로즈, 능형회귀 L33 다섯 분해, 네 부분공간 최종본 L34
파이썬 색인 ¶ 함수 처음 쓴 강의 무엇에 numpy.linalg.solveL1 A x = b A\vv{x} = \vv{b} A x = b numpy.linalg.matrix_rankL1 랭크 numpy.linalg.detL1 행렬식 numpy.linalg.invL3 역행렬 (되도록 쓰지 마라) numpy.linalg.condL3 조건수 scipy.linalg.luL4 P A = L U PA = LU P A = LU scipy.linalg.null_spaceL6 영공간의 정규직교기저 numpy.linalg.lstsqL6 최소제곱 scipy.linalg.orthL9 열공간의 정규직교기저 numpy.linalg.qrL17 A = Q R A = QR A = QR numpy.linalg.eigL21 일반 고윳값 numpy.linalg.matrix_powerL22 A k A^{k} A k scipy.linalg.expmL23 e A t e^{At} e A t numpy.linalg.eighL25 대칭 고윳값 numpy.fft.fftL26 FFT numpy.linalg.choleskyL27 양정치 판정 scipy.linalg.schurL28 조르당 대신 쓰는 것 numpy.linalg.svdL29 A = U Σ V T A = U\Sigma V^{\mathsf T} A = U Σ V T numpy.linalg.pinvL30 A + A^{+} A + scipy.fft.dctL31 코사인 변환
7. 다음 여정 ¶ Figure 5: 일곱 개의 막과 그 위에 놓인 다섯 개의 별. 아래 두 줄은 되풀이해 나타난 두 개의 태도가
어느 강의에서 나왔는지 표시한 것이다.
Figure 5 의 지도에서 오른쪽 끝의 점선이 여기서부터다. 세 편을 준비해 두었다.
보강 1 — 주성분분석과 SVD. 공분산행렬은 대칭이고 양의 준정부호라 L25와 L27이
그대로 통한다. 그런데 실무 라이브러리는 공분산행렬을 만들지 않고 데이터 행렬에 직접
SVD를 건다. 이유는 (32) 의 등식 하나다.
보강 2 — 수치선형대수 입문. 5절 첫째 태도의 네 사례가 조건수라는 하나의 개념 으로
설명된다는 것을 보인다. 그리고 고윳값을 실제로 구하는 법을 다룬다. L22에서 벡터에 행렬을
거듭 곱한 것이 곧 거듭제곱법이었다.
보강 3 — 그래프 라플라시안. L12의 결합행렬 A A A 로부터 만든 라플라시안이다.
L = A T A , dim N ( L ) = ( 연결 성분의 개수 ) L = A^{\mathsf T}A,
\qquad
\dim \Nul(L) = (\text{연결 성분의 개수}) L = A T A , dim N ( L ) = ( 연결 성분의 개수 ) (36) 의 왼쪽은 대칭이고 양의 준정부호라 지금까지의 도구가 전부 통한다.
오른쪽 등식은 L12에서 이미 본 것이고, 여기에 두 번째로 작은 고윳값 을 더하면
그래프를 둘로 자르는 선이 나온다.
그 너머에는 최적화와 함수해석과 양자역학이 있다. 어느 길로 가든
Figure 3 의 그림은 계속 따라온다.
8. 자주 하는 오해 ¶ ① 다섯 분해는 조건이 느슨해지는 순서로 늘어선다.
아니다. 2절이 반례 셋을 보였다. 확실한 것은 대칭이 대각화 가능에 포함된다는 것과
맨 아랫줄이 무조건이라는 것뿐이다. 사슬이 아니라 연장통이다.
② SVD 하나만 알면 나머지는 몰라도 된다.
아니다. SVD는 A k A^{k} A k 의 극한을 알려주지 않는다. 그것은 고윳값의 몫이다. 방정식을
빠르게 풀어야 할 때 L U LU LU 대신 SVD를 쓰면 몇 배가 느리다. 조건이 없다는 것과
가장 많이 알려준다는 것은 다른 말이다.
③ 고윳값과 특이값은 대체로 비슷한 수다.
아니다. σ i = ∣ λ i ∣ \sigma_i = \lvert\lambda_i\rvert σ i = ∣ λ i ∣ 가 되는 것은 정규행렬 , 곧
A T A = A A T A^{\mathsf T}A = AA^{\mathsf T} A T A = A A T 일 때다(L32). 대칭행렬은 그중 한 종류일 뿐이고
직교행렬도 정규행렬이다. Figure 1 의 90도 회전이 대칭이 아니면서
∣ λ ∣ \lvert\lambda\rvert ∣ λ ∣ 와 σ \sigma σ 가 둘 다 1인 예다. 반대로
( 3 0 4 5 ) \begin{pmatrix}3&0\\4&5\end{pmatrix} ( 3 4 0 5 ) 는 정규행렬이 아니라서 고윳값이 3과 5인데
특이값은 3 5 ≈ 6.71 3\sqrt5 \approx 6.71 3 5 ≈ 6.71 과 5 ≈ 2.24 \sqrt5 \approx 2.24 5 ≈ 2.24 다. 노름은 5가 아니라 6.71이다.
④ 네 부분공간 그림은 A A A 가 정사각일 때의 이야기다.
아니다. 오히려 정사각이 아닐 때 더 요긴하다. m ≠ n m \neq n m = n 이면 왼쪽 상자와 오른쪽 상자가
사는 공간의 차원부터 다르고, 그 차이가 곧 해가 없거나 무한히 많은 이유다.
4절에서 m = n = 3 m = n = 3 m = n = 3 으로 잡은 것은 그림을 그리기 위해서다.
⑤ 랭크가 모자란 행렬은 대각화도 안 된다.
아니다. (11) 의 계산이 반례다. 랭크가 모자란 것은 고윳값 0이 있다는
뜻일 뿐이고, 결함인 것은 고유벡터의 개수가 모자란다는 뜻이다. 두 이야기는 관계가 없다.
⑥ 이제 다 배웠다.
아니다. 여기까지가 실수 유한차원의 이야기다. 무한차원으로 가면 스펙트럼 정리가 훨씬
조심스러워지고, 희소행렬로 가면 소거 자체를 포기하고 반복법을 쓴다.
다 배운 것이 아니라 지도를 손에 넣은 것이다.
마치며... ¶ 서른네 편의 여정이 끝났다. 이번 강의에서 정리한 것은 이렇다.
후반부는 다섯 개의 분해 로 요약된다. 각 줄은 요구하는 것과 돌려주는 것의 거래다.
다섯 조건은 사슬이 아니다. 양 끝의 두 포함만 확실하다.
다섯을 전부 통과하려면 대칭이어야 하고, 그때는 아래 세 줄이 하나로 무너진다.
네 부분공간에 σ i \sigma_i σ i 배로 오가는 화살표를 채우면 그림이 완성된다.
위쪽은 왕복이고 아래쪽은 편도다.
남는 세 문장은 이것이다. 옳은 공식과 쓰는 공식은 다르다. 좋은 기저를 고르면 어려운
문제가 쉬워진다. 조건이 없는 도구가 가장 강하다.
돌아보면 후반부 전체가 하나의 이야기였다. 조건과의 싸움이었다. L U LU LU 는 소거가
되어야 했고, Q Λ Q T Q\Lambda Q^{\mathsf T} Q Λ Q T 는 대칭이어야 했고, S Λ S − 1 S\Lambda S^{-1} S Λ S − 1 은
고유벡터가 충분해야 했다. 그 조건들이 하나씩 깨지는 것을 지켜보았고, 마지막에 조건이
하나도 없는 분해에 닿았다. 그 자리에서 네 개의 상자와 그 사이를 오가는 A A A 와 A + A^{+} A +
의 화살표를 얻었다. 선형대수 전체가 그 한 장에 있다.
마지막 실습이 남았다. L34 실습 노트북 에서 다섯분해 함수를 만들어
같은 행렬에 다섯을 전부 걸어 보고, 네 부분공간 최종본을 돌려 가며 보고, 이 책에 나온
행렬을 전부 모아 마지막으로 한 번씩 통과시킨다.
긴 여정을 함께해 주어 고맙다.