Linearism › 선형대수 › LA.30

30장. 수치선형대수

선형대수 · 4부. 심화

심화 · 약 45분 · 연습문제 15 · 그림 3

요약

부동소수점과 상쇄, 벡터 노름과 연산자 노름, 에카르트–영 정리의 증명, 조건수, 후방 안정성과 부분 피벗팅, 하우스홀더 QR, 거듭제곱법과 QR 알고리즘, 야코비 반복과 스펙트럼 반지름

컴퓨터는 실수를 유한한 자릿수로만 기억하므로 계산마다 작은 오차가 생깁니다. 이 장에서는 그 오차가 언제 크게 불어나는지(조건수), 어떤 알고리즘이 오차에 강한지(후방 안정성), 큰 행렬의 고윳값을 실제로 어떻게 구하는지(거듭제곱법, QR 반복)를 다룹니다. 수치 계산을 하는 모든 논문의 기본 상식입니다.

30.1 컴퓨터의 반올림

질문. 지금까지의 알고리즘은 모두 정확한 산술을 가정했습니다. 컴퓨터는 수를 유효숫자 16자리 정도로 반올림해서 저장합니다. 수학적으로 옳은 알고리즘이 반올림 때문에 엉뚱한 답을 낼 수 있을까요? 그렇다면 어떤 문제가 “위험”하고, 어떤 알고리즘이 “안전”할까요?

보통 쓰는 배정밀도 부동소수점 수는 ±(1.b1b2…b52)2×2e\pm(1.b_1b_2 \ldots b_{52})_2 \times 2^e 꼴입니다. 유효숫자가 이진법 53자리이므로, 실수 aa를 저장한 값 fl(a)\mathrm{fl}(a)와 사칙연산의 결과는

fl(a∘b)=(a∘b)(1+δ),∣δ∣≤ϵmach=2−53≈1.1×10−16\mathrm{fl}(a \circ b) = (a \circ b)(1 + \delta), \qquad \lvert \delta \rvert \le \epsilon_{\mathrm{mach}} = 2^{-53} \approx 1.1 \times 10^{-16}

을 만족합니다. 연산 한 번의 상대 오차는 작습니다. 문제는 오차가 쌓이고 증폭되는 것입니다.

예제 30.1. 1+10−171 + 10^{-17}은 fl에서 1이 되므로 (1+10−17)−1(1 + 10^{-17}) - 1은 0이 됩니다. 정답 10−1710^{-17}의 상대 오차는 100%입니다. 비슷한 두 수를 빼면 앞자리가 지워지고 반올림 오차만 남습니다. 이것을 상쇄(cancellation)라 합니다.

이 장은 두 질문을 구별합니다. 문제가 입력의 작은 변화에 얼마나 민감한가(조건수), 그리고 알고리즘이 문제가 원래 가진 민감도보다 오차를 더 키우는가(안정성). 둘을 재려면 먼저 벡터와 행렬의 “크기”가 필요합니다.

30.2 벡터 노름과 행렬 노름

정의 30.2 (노름). Fn\mathbb{F}^n 위의 함수 ∥⋅∥\lVert \cdot \rVert가 다음을 만족하면 노름(norm)이라 합니다.

  1. ∥x∥≥0\lVert \mathbf{x} \rVert \ge 0이고, ∥x∥=0  ⟺  x=0\lVert \mathbf{x} \rVert = 0 \iff \mathbf{x} = \mathbf{0}.
  2. ∥cx∥=∣c∣∥x∥\lVert c\mathbf{x} \rVert = \lvert c \rvert\lVert \mathbf{x} \rVert.
  3. ∥x+y∥≤∥x∥+∥y∥\lVert \mathbf{x} + \mathbf{y} \rVert \le \lVert \mathbf{x} \rVert + \lVert \mathbf{y} \rVert.

자주 쓰는 노름은 ∥x∥1=∑∣xi∣\lVert \mathbf{x} \rVert_1 = \sum \lvert x_i \rvert, ∥x∥2=∑∣xi∣2\lVert \mathbf{x} \rVert_2 = \sqrt{\sum \lvert x_i \rvert^2}, ∥x∥∞=max⁡∣xi∣\lVert \mathbf{x} \rVert_\infty = \max \lvert x_i \rvert입니다.

∥⋅∥2\lVert \cdot \rVert_2는 내적에서 온 노름이고, 나머지 둘은 내적에서 오지 않습니다(평행사변형 법칙이 깨진다, 문제 30.1). 유한차원에서는 모든 노름이 상수배 이내로 비슷합니다. 예를 들어 ∥x∥∞≤∥x∥2≤n∥x∥∞\lVert \mathbf{x} \rVert_\infty \le \lVert \mathbf{x} \rVert_2 \le \sqrt{n}\lVert \mathbf{x} \rVert_\infty.

세 개의 단위공. 왼쪽은 꼭짓점이 축 위에 있는 마름모(1-노름), 가운데는 원(2-노름), 오른쪽은 정사각형(∞-노름).

그림 30.1. R2\mathbb{R}^2에서 세 노름의 단위공. 노름이 다르면 “같은 거리”의 모양이 다릅니다.

정의 30.3 (연산자 노름). 벡터 노름 ∥⋅∥\lVert \cdot \rVert에 대해 m×nm \times n 행렬 AA의 연산자 노름(operator norm)은

∥A∥=max⁡x≠0∥Ax∥∥x∥=max⁡∥x∥=1∥Ax∥\lVert A \rVert = \max_{\mathbf{x} \ne \mathbf{0}} \frac{\lVert A\mathbf{x} \rVert}{\lVert \mathbf{x} \rVert} = \max_{\lVert \mathbf{x} \rVert = 1} \lVert A\mathbf{x} \rVert

입니다. AA가 벡터를 최대 몇 배로 늘이는가를 잽니다.

정리 30.4 (연산자 노름의 성질).

  1. ∥⋅∥\lVert \cdot \rVert는 Fm×n\mathbb{F}^{m \times n} 위의 노름이고, ∥Ax∥≤∥A∥∥x∥\lVert A\mathbf{x} \rVert \le \lVert A \rVert\lVert \mathbf{x} \rVert, ∥AB∥≤∥A∥∥B∥\lVert AB \rVert \le \lVert A \rVert\lVert B \rVert.
  2. ∥A∥2=σ1\lVert A \rVert_2 = \sigma_1 (가장 큰 특잇값).
  3. ∥A∥1=max⁡j∑i∣aij∣\lVert A \rVert_1 = \max_j \sum_i \lvert a_{ij} \rvert (열의 절댓값 합의 최댓값), ∥A∥∞=max⁡i∑j∣aij∣\lVert A \rVert_\infty = \max_i \sum_j \lvert a_{ij} \rvert (행의 절댓값 합의 최댓값).

증명. (1) ∥Ax∥≤∥A∥∥x∥\lVert A\mathbf{x} \rVert \le \lVert A \rVert\lVert \mathbf{x} \rVert는 정의 그대로이고, ∥ABx∥≤∥A∥∥Bx∥≤∥A∥∥B∥∥x∥\lVert AB\mathbf{x} \rVert \le \lVert A \rVert\lVert B\mathbf{x} \rVert \le \lVert A \rVert\lVert B \rVert\lVert \mathbf{x} \rVert. 노름의 세 성질은 벡터 노름에서 바로 옵니다.

(2) SVD A=UΣV∗A = U\Sigma V^*에서 x=∑civi\mathbf{x} = \sum c_i\mathbf{v}_i이면 ∥Ax∥22=∑σi2∣ci∣2≤σ12∑∣ci∣2=σ12∥x∥22\lVert A\mathbf{x} \rVert_2^2 = \sum \sigma_i^2\lvert c_i \rvert^2 \le \sigma_1^2\sum \lvert c_i \rvert^2 = \sigma_1^2\lVert \mathbf{x} \rVert_2^2. 등호는 x=v1\mathbf{x} = \mathbf{v}_1.

(3) ∥⋅∥∞\lVert \cdot \rVert_\infty만 보입시다. ∣(Ax)i∣≤∑j∣aij∣∣xj∣≤(∑j∣aij∣)∥x∥∞\lvert (A\mathbf{x})_i \rvert \le \sum_j \lvert a_{ij} \rvert\lvert x_j \rvert \le \big(\sum_j \lvert a_{ij} \rvert\big)\lVert \mathbf{x} \rVert_\infty. 등호는 최댓값을 주는 행 ii에서 xj=sgn⁡aijx_j = \operatorname{sgn} a_{ij}로 잡으면 됩니다. ∥⋅∥1\lVert \cdot \rVert_1은 문제 30.3. ■

연산자 노름이 아닌 행렬 노름으로 프로베니우스 노름(Frobenius norm) ∥A∥F=∑i,j∣aij∣2\lVert A \rVert_F = \sqrt{\sum_{i,j} \lvert a_{ij} \rvert^2}도 자주 씁니다. 행렬을 긴 벡터로 보고 잰 길이이고, ∥A∥F2=tr⁡(A∗A)=σ12+⋯+σr2\lVert A \rVert_F^2 = \operatorname{tr}(A^*A) = \sigma_1^2 + \cdots + \sigma_r^2입니다.

▶ 문제 30.1–30.3

30.3 에카르트–영 정리의 증명

18장에서 미룬 증명을 합시다. A=∑i=1rσiuivi∗A = \sum_{i=1}^r \sigma_i\mathbf{u}_i\mathbf{v}_i^*이고 Ak=∑i=1kσiuivi∗A_k = \sum_{i=1}^k \sigma_i\mathbf{u}_i\mathbf{v}_i^*입니다.

정리 30.5 (에카르트–영). 랭크가 kk 이하인 모든 BB에 대해 ∥A−B∥2≥σk+1=∥A−Ak∥2\lVert A - B \rVert_2 \ge \sigma_{k+1} = \lVert A - A_k \rVert_2입니다.

증명. A−Ak=∑i>kσiuivi∗A - A_k = \sum_{i>k} \sigma_i\mathbf{u}_i\mathbf{v}_i^*은 특잇값이 σk+1,σk+2,…\sigma_{k+1}, \sigma_{k+2}, \ldots인 SVD를 가지므로 ∥A−Ak∥2=σk+1\lVert A - A_k \rVert_2 = \sigma_{k+1}입니다.

rank⁡B≤k\operatorname{rank} B \le k이면 dim⁡N(B)≥n−k\dim N(B) \ge n - k입니다. W=span⁡(v1,…,vk+1)W = \operatorname{span}(\mathbf{v}_1, \ldots, \mathbf{v}_{k+1})은 k+1k + 1차원이므로 dim⁡N(B)+dim⁡W≥n+1>n\dim N(B) + \dim W \ge n + 1 > n이고, 두 부분공간은 0이 아닌 벡터를 공유합니다(정리 21.17). 그런 단위벡터 x=∑i≤k+1civi\mathbf{x} = \sum_{i \le k+1} c_i\mathbf{v}_i에 대해

∥(A−B)x∥22=∥Ax∥22=∑i=1k+1σi2∣ci∣2≥σk+12∑∣ci∣2=σk+12.\lVert (A - B)\mathbf{x} \rVert_2^2 = \lVert A\mathbf{x} \rVert_2^2 = \sum_{i=1}^{k+1} \sigma_i^2\lvert c_i \rvert^2 \ge \sigma_{k+1}^2\sum \lvert c_i \rvert^2 = \sigma_{k+1}^2.

따라서 ∥A−B∥2≥σk+1\lVert A - B \rVert_2 \ge \sigma_{k+1}. ■

k=n−1k = n - 1로 두면 따름정리가 나옵니다. 가역행렬 AA에서 가장 가까운 특이 행렬까지의 거리는 σn\sigma_n입니다. 28장에서 “가역성에서 얼마나 먼지는 σn\sigma_n이 잽니다”고 한 것이 이것입니다.

▶ 문제 30.4

30.4 조건수

정의 30.6 (조건수). 가역행렬 AA의 조건수(condition number)는 κ(A)=∥A∥∥A−1∥\kappa(A) = \lVert A \rVert\lVert A^{-1} \rVert입니다. ∥⋅∥2\lVert \cdot \rVert_2를 쓰면 κ2(A)=σ1/σn\kappa_2(A) = \sigma_1/\sigma_n입니다.

κ(A)≥∥AA−1∥=1\kappa(A) \ge \lVert AA^{-1} \rVert = 1이고, 직교행렬은 κ2=1\kappa_2 = 1입니다.

정리 30.7 (조건수와 오차). Ax=bA\mathbf{x} = \mathbf{b}이고 A(x+δx)=b+δbA(\mathbf{x} + \delta\mathbf{x}) = \mathbf{b} + \delta\mathbf{b}이면

∥δx∥∥x∥≤κ(A)∥δb∥∥b∥.\frac{\lVert \delta\mathbf{x} \rVert}{\lVert \mathbf{x} \rVert} \le \kappa(A)\frac{\lVert \delta\mathbf{b} \rVert}{\lVert \mathbf{b} \rVert}.

증명. δx=A−1δb\delta\mathbf{x} = A^{-1}\delta\mathbf{b}이므로 ∥δx∥≤∥A−1∥∥δb∥\lVert \delta\mathbf{x} \rVert \le \lVert A^{-1} \rVert\lVert \delta\mathbf{b} \rVert. 또 ∥b∥≤∥A∥∥x∥\lVert \mathbf{b} \rVert \le \lVert A \rVert\lVert \mathbf{x} \rVert이므로 1/∥x∥≤∥A∥/∥b∥1/\lVert \mathbf{x} \rVert \le \lVert A \rVert/\lVert \mathbf{b} \rVert. 두 부등식을 곱합니다. ■

입력의 상대 오차가 최대 κ\kappa배로 커집니다. 대략, κ≈10p\kappa \approx 10^p이면 답의 유효숫자 pp자리를 잃습니다. 이것은 문제의 성질입니다. 어떤 알고리즘을 써도 피할 수 없습니다.

예제 30.8. A=[1111.0001]A = \begin{bmatrix} 1 & 1 \\ 1 & 1.0001 \end{bmatrix}, b=(2,2.0001)\mathbf{b} = (2, 2.0001)이면 x=(1,1)\mathbf{x} = (1, 1). b\mathbf{b}를 (2,2.0002)(2, 2.0002)로 아주 조금 바꾸면 x=(0,2)\mathbf{x} = (0, 2)가 됩니다. A−1=[10001−10000−1000010000]A^{-1} = \begin{bmatrix} 10001 & -10000 \\ -10000 & 10000 \end{bmatrix}이므로 κ∞(A)=2.0001×20001≈4×104\kappa_\infty(A) = 2.0001 \times 20001 \approx 4 \times 10^4. 실제로 b\mathbf{b}의 상대 변화 ≈5×10−5\approx 5 \times 10^{-5}가 x\mathbf{x}의 상대 변화 1이 되었습니다.

오른쪽 아래로 내려가는 거의 평행한 실선 두 개(식 1, 식 2)가 점 x에서 만납니다. 식 2를 조금 옮긴 파선은 식 1과 훨씬 오른쪽의 점 x + δx에서 만납니다.

그림 30.2. 거의 평행한 두 직선의 교점. 한 직선을 조금만 옮겨도 교점이 멀리 움직입니다. κ\kappa가 큰 2×22 \times 2 연립방정식의 모습입니다.

ε를 줄이면 두 직선이 평행에 가까워지고, 우변을 같은 δ만큼 옮겨도 교점은 δ/ε만큼 움직입니다. 조건수 κ가 그 배율의 상한입니다

이 위젯은 JavaScript가 필요합니다

▶ 문제 30.5–30.7

30.5 안정성과 피벗팅

반올림이 있으면 알고리즘은 정확한 답 x\mathbf{x} 대신 x^\hat{\mathbf{x}}를 냅니다. 좋은 알고리즘의 기준은 다음과 같습니다.

정의 30.9 (후방 안정). Ax=bA\mathbf{x} = \mathbf{b}를 푸는 알고리즘의 출력 x^\hat{\mathbf{x}}가 어떤 δA\delta A에 대해 (A+δA)x^=b(A + \delta A)\hat{\mathbf{x}} = \mathbf{b}를 정확히 만족하고 ∥δA∥/∥A∥\lVert \delta A \rVert/\lVert A \rVert가 ϵmach\epsilon_{\mathrm{mach}}의 적당한 배수 이하이면, 알고리즘이 후방 안정(backward stable)이라 합니다.

“답은 틀렸지만, 거의 같은 문제의 정확한 답입니다.” 입력 자체가 측정이나 저장 과정에서 ϵmach\epsilon_{\mathrm{mach}} 정도의 오차를 이미 가지므로 이보다 잘할 수는 없습니다. 후방 안정인 알고리즘의 전방 오차 ∥x^−x∥/∥x∥\lVert \hat{\mathbf{x}} - \mathbf{x} \rVert/\lVert \mathbf{x} \rVert는 대략 κ(A) ϵmach\kappa(A)\,\epsilon_{\mathrm{mach}}입니다. 조건수가 문제의 몫, ϵmach\epsilon_{\mathrm{mach}}의 배수가 알고리즘의 몫입니다.

예제 30.10. ϵ=10−20\epsilon = 10^{-20}일 때

[ϵ111]x=[12],x≈(1,1).\begin{bmatrix} \epsilon & 1 \\ 1 & 1 \end{bmatrix}\mathbf{x} = \begin{bmatrix} 1 \\ 2 \end{bmatrix}, \qquad \mathbf{x} \approx (1, 1).

피벗 ϵ\epsilon으로 소거하면 승수가 102010^{20}이고, 2행은 (1−1020)x2=2−1020(1 - 10^{20})x_2 = 2 - 10^{20}이 됩니다. 반올림하면 양변이 −1020-10^{20}이므로 x2=1x_2 = 1, 그다음 x1=(1−x2)/ϵ=0x_1 = (1 - x_2)/\epsilon = 0. 완전히 틀렸습니다. 행을 바꿔 피벗 1로 소거하면 승수가 ϵ\epsilon이고 (1−ϵ)x2=1−2ϵ(1 - \epsilon)x_2 = 1 - 2\epsilon에서 x2=1x_2 = 1, x1=2−x2=1x_1 = 2 - x_2 = 1. 정확합니다.

이 행렬의 조건수는 κ∞≈4\kappa_\infty \approx 4로 작습니다. 문제는 쉬웠는데 알고리즘이 망쳤습니다. 작은 피벗으로 나누면 큰 승수가 생기고, 큰 수에 묻힌 정보가 반올림으로 사라집니다. 그래서 실제 소거는 각 열에서 절댓값이 가장 큰 성분을 피벗으로 고릅니다(부분 피벗팅(partial pivoting)). 승수가 모두 ∣ℓij∣≤1\lvert \ell_{ij} \rvert \le 1이 되고, 9장의 PA=LUPA = LU가 바로 이 알고리즘입니다. 부분 피벗팅을 한 소거는 이론적으로 최악의 예가 있지만 실제로는 언제나 후방 안정처럼 동작합니다.

또 하나의 교훈: A−1A^{-1}을 구해서 A−1bA^{-1}\mathbf{b}를 계산하지 말라. 더 비싸고 덜 정확합니다. 최소제곱에서 ATAA^TA를 만들지 말라는 14장의 조언도 같은 이유입니다. κ(ATA)=κ(A)2\kappa(A^TA) = \kappa(A)^2이기 때문입니다(문제 30.8).

▶ 문제 30.8–30.9

30.6 하우스홀더 QR

직교변환은 ∥Qx∥2=∥x∥2\lVert Q\mathbf{x} \rVert_2 = \lVert \mathbf{x} \rVert_2이므로 오차를 키우지 않습니다. 그래서 수치 계산은 직교변환을 좋아합니다. 14장의 그람–슈미트는 반올림이 쌓이면 qi\mathbf{q}_i들의 직교성을 잃습니다. 실제 프로그램은 하우스홀더 반사로 QR을 만듭니다.

정리 30.11 (하우스홀더 반사로 0 만들기). a∈Rm\mathbf{a} \in \mathbb{R}^m, a≠0\mathbf{a} \ne \mathbf{0}, s=±∥a∥2s = \pm\lVert \mathbf{a} \rVert_2 (a1a_1과 같은 부호)이고 v=a+se1\mathbf{v} = \mathbf{a} + s\mathbf{e}_1, H=I−2vvTvTvH = I - 2\dfrac{\mathbf{v}\mathbf{v}^T}{\mathbf{v}^T\mathbf{v}}이면

Ha=−se1.H\mathbf{a} = -s\mathbf{e}_1.

증명. vTa=∥a∥2+sa1\mathbf{v}^T\mathbf{a} = \lVert \mathbf{a} \rVert^2 + sa_1이고 vTv=∥a∥2+2sa1+s2=2(∥a∥2+sa1)\mathbf{v}^T\mathbf{v} = \lVert \mathbf{a} \rVert^2 + 2sa_1 + s^2 = 2(\lVert \mathbf{a} \rVert^2 + sa_1)이므로 2vTa/vTv=12\mathbf{v}^T\mathbf{a}/\mathbf{v}^T\mathbf{v} = 1. 따라서 Ha=a−v=−se1H\mathbf{a} = \mathbf{a} - \mathbf{v} = -s\mathbf{e}_1. ■

부호를 a1a_1과 같게 고르는 것은 v\mathbf{v}의 첫 성분 a1+sa_1 + s에서 상쇄를 피하기 위해서입니다.

예제 30.12. a=(3,4)\mathbf{a} = (3, 4), s=5s = 5, v=(8,4)\mathbf{v} = (8, 4). Ha=a−v=(−5,0)H\mathbf{a} = \mathbf{a} - \mathbf{v} = (-5, 0).

AA의 첫 열에 이것을 쓰면 H1AH_1A의 첫 열은 (−s,0,…,0)(-s, 0, \ldots, 0)입니다. 다음에는 H1AH_1A의 둘째 열의 아래쪽 m−1m - 1개 성분에 같은 일을 하는 H2H_2(왼쪽 위가 1인 블록)를 곱합니다. nn번 하면

Hn⋯H2H1A=R (위삼각),A=QR,Q=H1H2⋯Hn.H_n \cdots H_2H_1A = R \ (\text{위삼각}), \qquad A = QR, \qquad Q = H_1H_2 \cdots H_n.

각 단계가 직교변환이므로 후방 안정입니다.

▶ 문제 30.10

30.7 고윳값 계산

16장에서는 det⁡(A−λI)=0\det(A - \lambda I) = 0을 풀었습니다. 이 방법은 실제로는 쓰지 않습니다. 다항식의 근은 계수에 극도로 민감할 수 있기 때문입니다. 예를 들어 근이 1,2,…,201, 2, \ldots, 20인 다항식의 x19x^{19} 계수를 2−232^{-23}만큼만 바꿔도 근 몇 개가 복소수로 날아갑니다(윌킨슨). 반대로 29장에서 본 것처럼, 다항식의 근을 구할 때 동반행렬의 고윳값을 계산합니다.

30.7.1 거듭제곱법

정리 30.13 (거듭제곱법). AA가 대각화 가능하고 고윳값이 ∣λ1∣>∣λ2∣≥⋯≥∣λn∣\lvert \lambda_1 \rvert > \lvert \lambda_2 \rvert \ge \cdots \ge \lvert \lambda_n \rvert, 고유벡터가 q1,…,qn\mathbf{q}_1, \ldots, \mathbf{q}_n이라 합시다. x0=∑ciqi\mathbf{x}_0 = \sum c_i\mathbf{q}_i에서 c1≠0c_1 \ne 0이면 Akx0A^k\mathbf{x}_0의 방향은 q1\mathbf{q}_1의 방향으로 수렴하고, 오차는 ∣λ2/λ1∣k\lvert \lambda_2/\lambda_1 \rvert^k에 비례해 줄어듭니다.

증명. Akx0=λ1k(c1q1+∑i≥2ci(λi/λ1)kqi)A^k\mathbf{x}_0 = \lambda_1^k\big(c_1\mathbf{q}_1 + \sum_{i \ge 2} c_i(\lambda_i/\lambda_1)^k\mathbf{q}_i\big)이고 괄호 안의 둘째 항은 ∣λ2/λ1∣k\lvert \lambda_2/\lambda_1 \rvert^k에 비례해 0으로 갑니다. ■

7장에서 관찰한 “가장 큰 고윳값이 장기적인 모습을 결정합니다”의 증명입니다. 실제로는 넘침을 막으려고 매번 정규화하고, 고윳값은 레일리 몫 xTAx/xTx\mathbf{x}^TA\mathbf{x}/\mathbf{x}^T\mathbf{x}로 읽습니다.

예제 30.14. A=[2112]A = \begin{bmatrix} 2 & 1 \\ 1 & 2 \end{bmatrix}, x0=(1,0)\mathbf{x}_0 = (1, 0): (2,1),(5,4),(14,13),(41,40),…(2, 1), (5, 4), (14, 13), (41, 40), \ldots. 두 성분의 비가 1로 가므로 방향은 (1,1)(1, 1), 레일리 몫은 3으로 갑니다. λ2/λ1=1/3\lambda_2/\lambda_1 = 1/3이므로 한 번에 오차가 약 1/3이 됩니다.

(A−μI)−1(A - \mu I)^{-1}에 거듭제곱법을 쓰면 μ\mu에 가장 가까운 고윳값을 찾습니다(역반복법(inverse iteration)). μ\mu가 고윳값에 가까울수록 빨리 수렴합니다.

30.7.2 QR 알고리즘

모든 고윳값을 한꺼번에 구하는 표준 방법은 다음과 같습니다. A0=AA_0 = A에서 시작해

Ak=QkRk (QR 분해),Ak+1=RkQk.A_k = Q_kR_k \ (\text{QR 분해}), \qquad A_{k+1} = R_kQ_k.

Ak+1=QkT(QkRk)Qk=QkTAkQkA_{k+1} = Q_k^T(Q_kR_k)Q_k = Q_k^TA_kQ_k이므로 모든 AkA_k는 AA와 닮았고 고윳값이 같습니다.

정리 30.15 (QR 알고리즘과 거듭제곱). Qˉk=Q0Q1⋯Qk−1\bar{Q}_k = Q_0Q_1 \cdots Q_{k-1}, Rˉk=Rk−1⋯R1R0\bar{R}_k = R_{k-1} \cdots R_1R_0이라 하면 Ak=QˉkRˉkA^k = \bar{Q}_k\bar{R}_k입니다. 즉 Qˉk\bar{Q}_k는 AkA^k의 QR 분해의 QQ입니다.

증명은 귀납법입니다(문제 30.12). AkA^k의 첫 열은 Ake1A^k\mathbf{e}_1, 즉 거듭제곱법입니다. 처음 jj개 열의 span은 AkA^k를 jj차원 부분공간에 거듭 건 것이므로, 고윳값의 크기가 서로 다르면 처음 jj개 고유벡터의 span으로 수렴합니다. 그 결과 Ak=QˉkTAQˉkA_k = \bar{Q}_k^TA\bar{Q}_k는 위삼각행렬(슈어 형식, 정리 25.12)로 수렴하고 대각에 고윳값이 나타납니다. QR 알고리즘은 모든 차원에서 동시에 돌아가는 거듭제곱법입니다. 실제 프로그램은 먼저 헤센베르크 꼴로 줄이고, 이동(shift)을 써서 수렴을 크게 빠르게 합니다.

▶ 문제 30.11–30.12

30.8 반복법

nn이 수백만이고 AA의 성분이 대부분 0인 연립방정식(편미분방정식의 이산화, 네트워크)에서는 소거가 0을 채워 넣어 메모리가 모자랍니다. 이때는 AA를 곱하기만 하는 반복법을 씁니다.

A=D+L+UA = D + L + U (대각, 순아래, 순위)로 나누면 Ax=bA\mathbf{x} = \mathbf{b}는 Dx=b−(L+U)xD\mathbf{x} = \mathbf{b} - (L + U)\mathbf{x}입니다. 야코비 반복(Jacobi iteration)은

xk+1=D−1(b−(L+U)xk).\mathbf{x}_{k+1} = D^{-1}\big(\mathbf{b} - (L + U)\mathbf{x}_k\big).

오차 ek=xk−x\mathbf{e}_k = \mathbf{x}_k - \mathbf{x}는 ek+1=Mek\mathbf{e}_{k+1} = M\mathbf{e}_k, M=−D−1(L+U)M = -D^{-1}(L + U)를 만족합니다. 따라서 수렴 여부는 Mk→OM^k \to O인지에 달렸습니다.

정의 30.16 (스펙트럼 반지름). ρ(M)=max⁡{∣λ∣:λ는 M의 (복소) 고윳값}\rho(M) = \max\{ \lvert \lambda \rvert : \lambda\text{는 } M\text{의 (복소) 고윳값} \}을 스펙트럼 반지름(spectral radius)이라 합니다.

정리 30.17 (거듭제곱이 0으로 가는 조건). Mk→O  ⟺  ρ(M)<1M^k \to O \iff \rho(M) < 1.

증명. (⇒\Rightarrow) Mq=λqM\mathbf{q} = \lambda\mathbf{q}이면 Mkq=λkqM^k\mathbf{q} = \lambda^k\mathbf{q}이므로 ∣λ∣<1\lvert \lambda \rvert < 1이어야 합니다. (⇐\Leftarrow) 조르당 형식 M=PJP−1M = PJP^{-1}에서 Mk=PJkP−1M^k = PJ^kP^{-1}입니다. 크기 ss인 블록 Js(λ)kJ_s(\lambda)^k의 성분은 (kj)λk−j\binom{k}{j}\lambda^{k-j} (j<sj < s) 꼴이고(27.7절), ∣(kj)λk−j∣≤kj∣λ∣k−j→0\big\lvert \binom{k}{j}\lambda^{k-j} \big\rvert \le k^j\lvert \lambda \rvert^{k-j} \to 0 (∣λ∣<1\lvert \lambda \rvert < 1이면 지수함수가 다항식을 이깁니다). ■

대각화 가능하면 λk→0\lambda^k \to 0만 보면 되지만, 그렇지 않으면 kλkk\lambda^k 같은 항을 다뤄야 합니다. 조르당 형식이 실용적인 정리에 쓰이는 대표적인 예입니다. 수렴 속도는 대략 ρ(M)k\rho(M)^k입니다.

예제 30.18. [4113]x=[54]\begin{bmatrix} 4 & 1 \\ 1 & 3 \end{bmatrix}\mathbf{x} = \begin{bmatrix} 5 \\ 4 \end{bmatrix}, 해 (1,1)(1, 1). x0=0\mathbf{x}_0 = \mathbf{0}에서 야코비 반복은

(54,43),(1112,1112),(4948,3736),…\left(\tfrac54, \tfrac43\right), \left(\tfrac{11}{12}, \tfrac{11}{12}\right), \left(\tfrac{49}{48}, \tfrac{37}{36}\right), \ldots

M=[0−1/4−1/30]M = \begin{bmatrix} 0 & -1/4 \\ -1/3 & 0 \end{bmatrix}의 고윳값은 ±1/12\pm 1/\sqrt{12}이므로 ρ≈0.29\rho \approx 0.29, 한 번에 오차가 약 0.29배가 됩니다.

각 행에서 대각성분의 절댓값이 나머지의 절댓값 합보다 크면(대각 우세(diagonally dominant)) ∥M∥∞<1\lVert M \rVert_\infty < 1이므로 ρ(M)≤∥M∥∞<1\rho(M) \le \lVert M \rVert_\infty < 1이고 야코비 반복은 수렴합니다(문제 30.14). 새로 계산한 성분을 바로 쓰는 가우스–자이델(Gauss–Seidel) 반복, 그리고 대칭 양정치 행렬에 쓰는 켤레기울기법(conjugate gradient)이 더 빠른 방법들입니다.

▶ 문제 30.13–30.15

쓰이는 곳. 논문의 실험 결과가 믿을 만한지 판단할 때 조건수와 수치 안정성을 봅니다. 대규모 머신러닝은 부동소수점 정밀도(fp16, bf16)를 낮춰 계산하므로 오차 감각이 특히 중요합니다.

이 장의 요약

  • 부동소수점 연산은 상대 오차 ϵmach≈10−16\epsilon_{\mathrm{mach}} \approx 10^{-16}으로 반올림합니다. 비슷한 수의 뺄셈이 위험합니다.
  • 연산자 노름 ∥A∥=max⁡∥Ax∥/∥x∥\lVert A \rVert = \max \lVert A\mathbf{x} \rVert/\lVert \mathbf{x} \rVert. ∥A∥2=σ1\lVert A \rVert_2 = \sigma_1, ∥A∥∞\lVert A \rVert_\infty는 행 합의 최댓값.
  • 에카르트–영: 랭크 kk 이하 행렬까지의 거리의 최솟값은 σk+1\sigma_{k+1}이고 AkA_k에서 이뤄집니다.
  • 조건수 κ=∥A∥∥A−1∥\kappa = \lVert A \rVert\lVert A^{-1} \rVert는 문제의 민감도. 후방 안정성은 알고리즘의 품질. 오차 ≈κ ϵmach\approx \kappa\,\epsilon_{\mathrm{mach}}.
  • 부분 피벗팅, 하우스홀더 QR: 큰 수로 나누지 않고, 직교변환으로 계산합니다.
  • 고윳값: 거듭제곱법(수렴비 ∣λ2/λ1∣\lvert \lambda_2/\lambda_1 \rvert), QR 알고리즘(모든 차원의 거듭제곱법).
  • 반복법은 ρ(M)<1\rho(M) < 1일 때 수렴합니다. 증명에 조르당 형식이 쓰입니다.

문제

30.1 [계산] · 확인 문제

x=(1,0)\mathbf{x} = (1, 0), y=(0,1)\mathbf{y} = (0, 1)로 ∥⋅∥1\lVert \cdot \rVert_1과 ∥⋅∥∞\lVert \cdot \rVert_\infty가 평행사변형 법칙 ∥x+y∥2+∥x−y∥2=2∥x∥2+2∥y∥2\lVert \mathbf{x} + \mathbf{y} \rVert^2 + \lVert \mathbf{x} - \mathbf{y} \rVert^2 = 2\lVert \mathbf{x} \rVert^2 + 2\lVert \mathbf{y} \rVert^2을 만족하지 않음을 보입니다. 이 노름들은 어떤 내적에서도 오지 않습니다(문제 25.5).

노름 좌변 우변
∥⋅∥1\lVert \cdot \rVert_1 [?] [?]
∥⋅∥∞\lVert \cdot \rVert_\infty [?] [?]
정답
8
4
2
4
풀이

x±y=(1,±1)\mathbf{x} \pm \mathbf{y} = (1, \pm1). ∥⋅∥∞\lVert \cdot \rVert_\infty: 좌변 1+1=21 + 1 = 2, 우변 2+2=42 + 2 = 4. ∥⋅∥1\lVert \cdot \rVert_1: 좌변 4+4=84 + 4 = 8, 우변 4. 내적에서 온 노름은 평행사변형 법칙을 만족하므로(문제 25.5), 두 노름은 내적에서 오지 않습니다.

30.2 [계산] · 확인 문제

A=[1−234]A = \begin{bmatrix} 1 & -2 \\ 3 & 4 \end{bmatrix}의 ∥A∥1\lVert A \rVert_1, ∥A∥∞\lVert A \rVert_\infty, ∥A∥F\lVert A \rVert_F, ∥A∥2\lVert A \rVert_2를 구하고 크기를 비교합니다. 소수 둘째 자리까지 적습니다.

∥A∥1\lVert A \rVert_1 ∥A∥∞\lVert A \rVert_\infty ∥A∥F\lVert A \rVert_F ∥A∥2\lVert A \rVert_2
[?] [?] [?] [?]
정답
6
7
5.48
5.12
풀이

∥A∥1=max⁡(1+3,2+4)=6\lVert A \rVert_1 = \max(1 + 3, 2 + 4) = 6, ∥A∥∞=max⁡(1+2,3+4)=7\lVert A \rVert_\infty = \max(1 + 2, 3 + 4) = 7, ∥A∥F=30≈5.48\lVert A \rVert_F = \sqrt{30} \approx 5.48. ATA=[10101020]A^TA = \begin{bmatrix} 10 & 10 \\ 10 & 20 \end{bmatrix}의 고윳값 15±12515 \pm \sqrt{125}, ∥A∥2=σ1=15+55≈5.12\lVert A \rVert_2 = \sigma_1 = \sqrt{15 + 5\sqrt5} \approx 5.12. ∥A∥2≤∥A∥F\lVert A \rVert_2 \le \lVert A \rVert_F이고, 확인으로 σ1σ2=(15+55)(15−55)=100=10=∣det⁡A∣\sigma_1\sigma_2 = \sqrt{(15 + 5\sqrt5)(15 - 5\sqrt5)} = \sqrt{100} = 10 = \lvert \det A \rvert.

30.3 [증명]

(a) ∥A∥1=max⁡j∑i∣aij∣\lVert A \rVert_1 = \max_j \sum_i \lvert a_{ij} \rvert임을 보입니다. (b) ∥A∥2≤∥A∥F≤r∥A∥2\lVert A \rVert_2 \le \lVert A \rVert_F \le \sqrt{r}\lVert A \rVert_2 (r=rank⁡Ar = \operatorname{rank} A)임을 보입니다.

풀이

(a) ∥Ax∥1=∑i∣∑jaijxj∣≤∑j∣xj∣(∑i∣aij∣)≤(max⁡j∑i∣aij∣)∥x∥1\lVert A\mathbf{x} \rVert_1 = \sum_i \big\lvert \sum_j a_{ij}x_j \big\rvert \le \sum_j \lvert x_j \rvert\big(\sum_i \lvert a_{ij} \rvert\big) \le \big(\max_j \sum_i \lvert a_{ij} \rvert\big)\lVert \mathbf{x} \rVert_1. 최댓값을 주는 열 jj에 대해 x=ej\mathbf{x} = \mathbf{e}_j이면 등호.

(b) ∥A∥F2=σ12+⋯+σr2\lVert A \rVert_F^2 = \sigma_1^2 + \cdots + \sigma_r^2이고 이것은 σ12\sigma_1^2 이상, rσ12r\sigma_1^2 이하입니다.

30.4 [계산] · 확인 문제

A=[3045]A = \begin{bmatrix} 3 & 0 \\ 4 & 5 \end{bmatrix}에 가장 가까운 (∥⋅∥2\lVert \cdot \rVert_2로) 랭크 1 행렬 A1A_1을 구하고, ∥A−A1∥2=σ2\lVert A - A_1 \rVert_2 = \sigma_2임을 확인합니다. (문제 26.14, 28.12 참고.) ∥A−A1∥2\lVert A - A_1 \rVert_2는 소수 셋째 자리까지 적습니다.

A1A_1의 1행 1열 1행 2열 2행 1열 2행 2열 ∥A−A1∥2\lVert A - A_1 \rVert_2
[?] [?] [?] [?] [?]
정답
1.5
1.5
4.5
4.5
2.236
풀이

ATA=[25202025]A^TA = \begin{bmatrix} 25 & 20 \\ 20 & 25 \end{bmatrix}, σ1=35\sigma_1 = 3\sqrt5, v1=12(1,1)\mathbf{v}_1 = \frac{1}{\sqrt2}(1, 1), u1=Av1/σ1=110(1,3)\mathbf{u}_1 = A\mathbf{v}_1/\sigma_1 = \frac{1}{\sqrt{10}}(1, 3).

A1=σ1u1v1T=3520[1133]=32[1133],A−A1=12[3−3−11].A_1 = \sigma_1\mathbf{u}_1\mathbf{v}_1^T = \frac{3\sqrt5}{\sqrt{20}}\begin{bmatrix} 1 & 1 \\ 3 & 3 \end{bmatrix} = \frac32\begin{bmatrix} 1 & 1 \\ 3 & 3 \end{bmatrix}, \qquad A - A_1 = \frac12\begin{bmatrix} 3 & -3 \\ -1 & 1 \end{bmatrix}.

A−A1=12(3,−1)(1,−1)TA - A_1 = \frac12(3, -1)(1, -1)^T은 랭크 1이고 ∥A−A1∥2=102⋅2=5=σ2\lVert A - A_1 \rVert_2 = \frac{\sqrt{10}}{2} \cdot \sqrt2 = \sqrt5 = \sigma_2.

30.5 [계산] · 확인 문제

κ2\kappa_2를 구합니다. (a) [2112]\begin{bmatrix} 2 & 1 \\ 1 & 2 \end{bmatrix} (b) diag⁡(1,10−6)\operatorname{diag}(1, 10^{-6}) (c) 직교행렬 QQ (d) cAcA (c≠0c \ne 0). (b)는 행렬식이 작지만 조건수도 클까요? diag⁡(10−6,10−6)\operatorname{diag}(10^{-6}, 10^{-6})은? 표에는 (a), (b), (c)와 diag⁡(10−6,10−6)\operatorname{diag}(10^{-6}, 10^{-6})의 조건수를 적습니다.

(a) (b) (c) diag⁡(10−6,10−6)\operatorname{diag}(10^{-6}, 10^{-6})
[?] [?] [?] [?]
정답
3
1000000
1
1
풀이

(a) 고윳값 3, 1 (대칭 양정치이므로 특잇값과 같습니다): κ=3\kappa = 3. (b) 10610^6. (c) 1. (d) κ(A)\kappa(A)와 같습니다. diag⁡(10−6,10−6)=10−6I\operatorname{diag}(10^{-6}, 10^{-6}) = 10^{-6}I은 det⁡=10−12\det = 10^{-12}이지만 κ=1\kappa = 1입니다. 행렬식의 크기는 조건수와 관계없습니다.

30.6 [계산] · 확인 문제

A=[1224.001]A = \begin{bmatrix} 1 & 2 \\ 2 & 4.001 \end{bmatrix}에 대해 Ax=(3,6.001)A\mathbf{x} = (3, 6.001)과 Ax=(3,6.002)A\mathbf{x} = (3, 6.002)를 풀고, κ∞(A)\kappa_\infty(A)를 구해 정리 30.7과 비교합니다. 표에는 둘째 연립방정식의 해와, 정수로 반올림한 κ∞(A)\kappa_\infty(A)를 적습니다.

xx yy κ∞(A)\kappa_\infty(A)
[?] [?] [?]
정답
-1
2
36012
풀이

첫째: x=(1,1)\mathbf{x} = (1, 1). 둘째: 둘째 식에서 첫째 식의 2배를 빼면 0.001y=0.0020.001y = 0.002, y=2y = 2, x=−1x = -1. A−1=1000[4.001−2−21]A^{-1} = 1000\begin{bmatrix} 4.001 & -2 \\ -2 & 1 \end{bmatrix}, ∥A−1∥∞=6001\lVert A^{-1} \rVert_\infty = 6001, ∥A∥∞=6.001\lVert A \rVert_\infty = 6.001, κ∞≈3.6×104\kappa_\infty \approx 3.6 \times 10^4. 상대 변화: b\mathbf{b}는 0.001/6.001≈1.7×10−40.001/6.001 \approx 1.7 \times 10^{-4}, x\mathbf{x}는 ∥(−2,1)∥∞/1=2\lVert (-2, 1) \rVert_\infty/1 = 2. 증폭률 약 1.2×104≤κ∞1.2 \times 10^4 \le \kappa_\infty.

30.7 [증명]

Ax=bA\mathbf{x} = \mathbf{b}이고 (A+δA)(x+δx)=b(A + \delta A)(\mathbf{x} + \delta\mathbf{x}) = \mathbf{b}이면

∥δx∥∥x+δx∥≤κ(A)∥δA∥∥A∥\frac{\lVert \delta\mathbf{x} \rVert}{\lVert \mathbf{x} + \delta\mathbf{x} \rVert} \le \kappa(A)\frac{\lVert \delta A \rVert}{\lVert A \rVert}

임을 보입니다. 행렬의 오차도 조건수만큼 증폭됩니다.

풀이

두 식을 빼면 A δx=−δA(x+δx)A\,\delta\mathbf{x} = -\delta A(\mathbf{x} + \delta\mathbf{x}), δx=−A−1δA(x+δx)\delta\mathbf{x} = -A^{-1}\delta A(\mathbf{x} + \delta\mathbf{x}). 따라서 ∥δx∥≤∥A−1∥∥δA∥∥x+δx∥=κ(A)∥δA∥∥A∥∥x+δx∥\lVert \delta\mathbf{x} \rVert \le \lVert A^{-1} \rVert\lVert \delta A \rVert\lVert \mathbf{x} + \delta\mathbf{x} \rVert = \kappa(A)\dfrac{\lVert \delta A \rVert}{\lVert A \rVert}\lVert \mathbf{x} + \delta\mathbf{x} \rVert.

30.8 [증명]

열이 독립인 AA에 대해 κ2(ATA)=κ2(A)2\kappa_2(A^TA) = \kappa_2(A)^2임을 보입니다(κ2=σ1/σn\kappa_2 = \sigma_1/\sigma_n). 최소제곱에서 정규방정식을 피해야 하는 이유를 설명합니다.

풀이

A=UΣVTA = U\Sigma V^T이면 ATA=VΣTΣVTA^TA = V\Sigma^T\Sigma V^T이고 특잇값은 σi2\sigma_i^2. κ2(ATA)=σ12/σn2\kappa_2(A^TA) = \sigma_1^2/\sigma_n^2. κ(A)=108\kappa(A) = 10^8이면 ATAA^TA는 101610^{16}이 되어 배정밀도의 유효숫자를 모두 잃습니다. QR은 AA 자체의 조건수만 겪습니다.

30.9 [계산] · 확인 문제

유효숫자 3자리로 반올림하는 계산기가 있습니다. [0.0001111]x=[12]\begin{bmatrix} 0.0001 & 1 \\ 1 & 1 \end{bmatrix}\mathbf{x} = \begin{bmatrix} 1 \\ 2 \end{bmatrix}를 (a) 피벗팅 없이, (b) 부분 피벗팅으로 풉니다. 각 단계마다 3자리로 반올림합니다. 참값은 x≈(1.0001,0.9999)\mathbf{x} \approx (1.0001, 0.9999)입니다.

x1x_1 x2x_2
(a) [?] [?]
(b) [?] [?]
정답
0
1
1
1
풀이

(a) 승수 10410^4. 2행: 1−104=−9999→−1.00×1041 - 10^4 = -9999 \to -1.00 \times 10^4, 우변 2−104=−9998→−1.00×1042 - 10^4 = -9998 \to -1.00 \times 10^4. x2=1.00x_2 = 1.00, x1=(1−1.00)/0.0001=0x_1 = (1 - 1.00)/0.0001 = 0. x1x_1이 완전히 틀렸습니다.

(b) 행을 바꾸면 승수 0.0001. 2행: 1−0.0001=0.9999→1.001 - 0.0001 = 0.9999 \to 1.00, 우변 1−0.0002=0.9998→1.001 - 0.0002 = 0.9998 \to 1.00. x2=1.00x_2 = 1.00, x1=2−1.00=1.00x_1 = 2 - 1.00 = 1.00. 3자리로 정확합니다.

30.10 [계산] · 확인 문제

A=[3142]A = \begin{bmatrix} 3 & 1 \\ 4 & 2 \end{bmatrix}의 QR 분해를 하우스홀더 반사로 구합니다. QR=AQR = A를 확인합니다. 표에는 정리 30.11의 부호 규칙으로 얻은 RR을 적습니다.

RR의 1행 1열 1행 2열 2행 1열 2행 2열
[?] [?] [?] [?]
정답
-5
-2.2
0
0.4
풀이

a=(3,4)\mathbf{a} = (3, 4), s=5s = 5, v=(8,4)\mathbf{v} = (8, 4), vTv=80\mathbf{v}^T\mathbf{v} = 80. H=I−140[64323216]=[−0.6−0.8−0.80.6]H = I - \frac{1}{40}\begin{bmatrix} 64 & 32 \\ 32 & 16 \end{bmatrix} = \begin{bmatrix} -0.6 & -0.8 \\ -0.8 & 0.6 \end{bmatrix}. H(3,4)=(−5,0)H(3, 4) = (-5, 0), H(1,2)=(−2.2,0.4)H(1, 2) = (-2.2, 0.4).

Q=H=[−0.6−0.8−0.80.6],R=[−5−2.200.4].Q = H = \begin{bmatrix} -0.6 & -0.8 \\ -0.8 & 0.6 \end{bmatrix}, \qquad R = \begin{bmatrix} -5 & -2.2 \\ 0 & 0.4 \end{bmatrix}.

QRQR: (1, 2) 성분 1.32−0.32=11.32 - 0.32 = 1, (2, 2) 성분 1.76+0.24=21.76 + 0.24 = 2. 맞습니다. (RR의 대각을 양수로 원하면 QQ, RR의 해당 열과 행에 −1-1을 곱합니다.)

30.11 [계산] · 확인 문제

A=[4123]A = \begin{bmatrix} 4 & 1 \\ 2 & 3 \end{bmatrix}에 x0=(1,0)\mathbf{x}_0 = (1, 0)부터 거듭제곱법을 3번 합니다(정규화하지 않습니다). 고윳값과 고유벡터를 구해 수렴 속도를 예측하고 비교합니다. 표에는 x3\mathbf{x}_3과 두 고윳값(큰 것부터)을 적습니다.

x3\mathbf{x}_3의 첫째 성분 둘째 성분 λ1\lambda_1 λ2\lambda_2
[?] [?] [?] [?]
정답
86
78
5
2
풀이

(4,2)(4, 2), (18,14)(18, 14), (86,78)(86, 78). 고윳값 5, 2, 고유벡터 (1,1)(1, 1), (1,−2)(1, -2). x0=23(1,1)+13(1,−2)\mathbf{x}_0 = \frac23(1, 1) + \frac13(1, -2)이므로 Akx0=235k(1,1)+132k(1,−2)A^k\mathbf{x}_0 = \frac23 5^k(1, 1) + \frac13 2^k(1, -2). 성분의 비 x2/x1x_2/x_1은 0.5, 0.78, 0.91로 1에 다가가고, 1−x2/x11 - x_2/x_1은 0.5, 0.22, 0.093으로 매번 약 0.4=2/50.4 = 2/5배가 됩니다.

30.12 [증명]

정리 30.15를 증명합니다.

힌트. 먼저 Ak=QˉkTAQˉkA_k = \bar{Q}_k^TA\bar{Q}_k를 보입니다.

풀이

Ak+1=QkTAkQkA_{k+1} = Q_k^TA_kQ_k를 반복하면 Ak=QˉkTAQˉkA_k = \bar{Q}_k^TA\bar{Q}_k, 즉 QˉkAk=AQˉk\bar{Q}_kA_k = A\bar{Q}_k. 귀납법: k=1k = 1이면 A=Q0R0A = Q_0R_0. Ak=QˉkRˉkA^k = \bar{Q}_k\bar{R}_k이면

Qˉk+1Rˉk+1=Qˉk(QkRk)Rˉk=QˉkAkRˉk=AQˉkRˉk=Ak+1.\bar{Q}_{k+1}\bar{R}_{k+1} = \bar{Q}_k(Q_kR_k)\bar{R}_k = \bar{Q}_kA_k\bar{R}_k = A\bar{Q}_k\bar{R}_k = A^{k+1}.

Qˉk+1\bar{Q}_{k+1}은 직교, Rˉk+1\bar{R}_{k+1}은 위삼각행렬들의 곱이므로 위삼각입니다.

30.13 [계산] · 확인 문제

[2−1−12]x=[11]\begin{bmatrix} 2 & -1 \\ -1 & 2 \end{bmatrix}\mathbf{x} = \begin{bmatrix} 1 \\ 1 \end{bmatrix}에 x0=0\mathbf{x}_0 = \mathbf{0}부터 야코비 반복을 3번 합니다. ρ(M)\rho(M)을 구하고 오차가 줄어드는 비율과 비교합니다.

첫째 성분 둘째 성분
x1\mathbf{x}_1 [?] [?]
x2\mathbf{x}_2 [?] [?]
x3\mathbf{x}_3 [?] [?]
ρ(M)\rho(M) [?] -
정답
1/2
1/2
3/4
3/4
7/8
7/8
1/2
풀이

x1←(1+x2)/2x_1 \leftarrow (1 + x_2)/2, x2←(1+x1)/2x_2 \leftarrow (1 + x_1)/2. (12,12)(\frac12, \frac12), (34,34)(\frac34, \frac34), (78,78)(\frac78, \frac78). 해 (1,1)(1, 1)과의 오차는 1,12,14,181, \frac12, \frac14, \frac18. M=[012120]M = \begin{bmatrix} 0 & \frac12 \\ \frac12 & 0 \end{bmatrix}, ρ(M)=12\rho(M) = \frac12. 일치합니다.

30.14 [증명]

(a) 모든 연산자 노름에 대해 ρ(M)≤∥M∥\rho(M) \le \lVert M \rVert임을 보입니다. (b) AA가 대각 우세이면 야코비 반복이 수렴함을 보입니다.

풀이

(a) Mq=λqM\mathbf{q} = \lambda\mathbf{q}, q≠0\mathbf{q} \ne \mathbf{0}이면 ∣λ∣∥q∥=∥Mq∥≤∥M∥∥q∥\lvert \lambda \rvert\lVert \mathbf{q} \rVert = \lVert M\mathbf{q} \rVert \le \lVert M \rVert\lVert \mathbf{q} \rVert.

(b) M=−D−1(L+U)M = -D^{-1}(L + U)의 ii행 절댓값 합은 ∑j≠i∣aij∣/∣aii∣<1\sum_{j \ne i} \lvert a_{ij} \rvert/\lvert a_{ii} \rvert < 1. 따라서 ρ(M)≤∥M∥∞<1\rho(M) \le \lVert M \rVert_\infty < 1이고 정리 30.17.

30.15 [계산] · 확인 문제

M=[0.51000.5]M = \begin{bmatrix} 0.5 & 10 \\ 0 & 0.5 \end{bmatrix}에 대해 MkM^k를 구합니다. ρ(M)<1\rho(M) < 1인데 ∥Mk∥∞\lVert M^k \rVert_\infty는 처음에 어떻게 변할까요? k=1,2,3,5,10k = 1, 2, 3, 5, 10에서 (1, 2) 성분을 구합니다. 소수 셋째 자리까지 적습니다.

k=1k = 1 k=2k = 2 k=3k = 3 k=5k = 5 k=10k = 10
[?] [?] [?] [?] [?]
정답
10
10
7.5
3.125
0.195
풀이

M=12I+BM = \frac12I + B, B=[01000]B = \begin{bmatrix} 0 & 10 \\ 0 & 0 \end{bmatrix}, B2=OB^2 = O이고 12I\frac12I와 BB가 교환하므로 Mk=12kI+k2k−1BM^k = \frac{1}{2^k}I + \frac{k}{2^{k-1}}B. (1, 2) 성분 10k/2k−110k/2^{k-1}: k=1k = 1: 10, k=2k = 2: 10, k=3k = 3: 7.5, k=5k = 5: 3.125, k=10k = 10: 약 0.195. ρ=0.5\rho = 0.5이지만 처음 몇 번은 ∥Mk∥∞≈10\lVert M^k \rVert_\infty \approx 10으로 크고, 그 뒤에야 줄어듭니다. 조르당 블록의 kλk−1k\lambda^{k-1} 항 때문입니다. 정규행렬이면 이런 일시적 증가가 없습니다(∥Mk∥2=ρk\lVert M^k \rVert_2 = \rho^k).