본문으로 건너뛰기
258 / NUMERICAL COMPUTING LAB
먼저 알아두면 좋아요 · 연결된 선수 단원의 선형대수·미적분·연산 그래프 기초
단원 목록 (600) · Sparse Stencil·Jacobi·Conjugate Gradient
이해하는 속도로 읽으세요.개념도이론실험확인 문제
BUILD YOUR INTUITION

먼저 그림으로 이해하기

한 번에 한 단계씩 살펴보세요.

희소 행렬 연산과 실제 잔차로 반복 해법의 수렴을 확인합니다.

SPD tridiagonal Poisson plus reaction matrix: diagonal 2+c, off-diagonal −1, rhs ones. Actual stencil matvecs drive weighted Jacobi and unpreconditioned CG. CG freezes once an independently recomputed relative residual is at most 1e−12; repeated displayed steps then perform no update. The reference is a separate pivoted direct solve. Blue and orange are Euclidean solution errors.

-0.4812.4823.068-0.887
가로 반복 · 파랑 weighted Jacobi 해 오차 · 주황 CG 해 오차
stepJacobi errorCG errorJacobi true residualCG true residualCG updates
022.18122.1812.8282.8280
120.83311.8322.554.8991
219.5745.0992.3723.4642
318.3921.4142.22223
417.2833.077e-152.08604
516.2413.077e-151.9604
615.2613.077e-151.84104
714.3413.077e-151.7304
813.4763.077e-151.62604
912.6633.077e-151.52704
1011.93.077e-151.43504
1111.1823.077e-151.34904
1210.5083.077e-151.26704

matrix nonzero count = 22

고정 기준 예제의 그림과 수치입니다. 각 단계에서 같은 그림의 의미를 차례로 살펴보세요. 고정된 기준 예제이며 아래 실험의 설정과 독립적입니다.
1 / 4

희소성

각 행은 최대 세 이웃과만 연결됩니다.

nnz=3N-2

실험에서 확인하기 →
이 단원 목차

0을 저장하는 대신 연산을 표현한다

경계값이 0인 일차원 Poisson 연산자는 대각 2, 이웃 성분 -1의 삼중대각 행렬입니다. Reaction c를 더하면 대각이 2+c가 됩니다. 내부 미지수가 N개이면 nonzero는 3N-2개뿐입니다. 실험은 반복 곱셈에서 dense 행렬을 만들지 않고 세 점 stencil을 직접 적용합니다.

우변은 모두 1입니다. 별도의 pivoted 직접 해법으로 기준 해를 계산합니다. c=0에서는 1부터 시작하는 index i에 대해 i(N+1-i)/2라는 독립적인 해도 있습니다. 복잡한 시뮬레이션 전에 검산하기 좋은 이산 포물선입니다.

Jacobi의 오차를 고유값으로 읽는다

0에서 시작하는 weighted Jacobi는 다음과 같습니다.

xk+1=xk+ω2+c(b−Axk),λj=2+c−2cos⁡jπN+1.x_{k+1}=x_k+\frac\omega{2+c}(b-Ax_k),\qquad \lambda_j=2+c-2\cos\frac{j\pi}{N+1}.

오차 전파 행렬의 spectral radius는 max_j |1-omega lambda_j/(2+c)|입니다. 1보다 작으면 이 대칭 모형의 모든 초기 오차가 수렴합니다. 1보다 크면 증가하는 mode가 가능하지만 특정 초기 오차가 그 mode를 곧바로 크게 드러낸다는 뜻은 아닙니다.

c=0에서 N이 커지면 최소 고유값이 작아지고 매끄러운 오차 mode가 천천히 줄어듭니다. 각 sparse matvec의 비용은 N에 비례해도 충분한 정확도를 얻기 위한 반복 수가 커질 수 있습니다.

CG는 실제 conjugate 방향을 만든다

CG는 SPD 행렬에서 잔차와 이전 방향으로 새로운 탐색 방향을 구성합니다. 실험은 실제 step length·잔차·방향 계수를 계산합니다. 정해진 감쇠 곡선을 대신 그리지 않습니다. 새 stencil 곱으로 다시 계산한 상대 잔차가 10^-12 이하이면 갱신을 멈추고 실제 update 수를 표시합니다.

N=8, c=0, 대칭 우변에서는 이 예의 CG가 네 번에 수렴합니다. 대칭성이 활성 부분공간을 줄이기 때문입니다. 정확 산술에서 N회 이내 종료한다는 결과를 모든 부동소수점 시스템의 무조건적 보장으로 읽으면 안 됩니다.

잔차가 오차 인증이 되려면

오차 e=x-xstar, 잔차 r=b-Ax에 대해 SPD 성질로 다음 상한을 얻습니다.

∥e∥2≤∥r∥2/λmin⁡(A).\|e\|_2\le\|r\|_2/\lambda_{\min}(A).

작은 최소 고유값의 역수가 중요합니다. 잔차가 작다는 사실만으로 해가 충분히 정확하다고 단정할 수 없습니다. 실험은 실제 해 오차·다시 계산한 true residual·그 상한을 함께 보여줍니다. 재귀적으로 갱신한 CG 잔차는 반올림으로 달라질 수 있어 중단 판단에는 새 곱셈을 사용합니다.

직접 풀기: Stencil과 비용 확인

N=4, c=0의 해는 (2,3,3,2)입니다. 삼중대각 행렬을 곱하면 모두 1이 되는지 확인하세요. Nonzero는 10개로 dense의 16개보다 적습니다. N을 늘려 최소 고유값과 Jacobi 오차를 비교하고 omega=1.2에서 초기 오차가 작아 보여도 수렴 보장을 주장할 수 없는 이유를 설명하세요.

더 읽기: SciPy CG 문서.

CHECK YOUR UNDERSTANDING

설명할 수 있나요?

실험 설정과 무관한 기준 예제를 묻습니다. 답을 고르고 설명을 확인해보세요.

1. CG의 정확 산술 N회 종료를 부동소수점에서도 무조건 보장하나요?
2. 희소 matvec에 반드시 dense 행렬 저장이 필요한가요?

선택한 답과 학습 표시는 이 브라우저에 저장됩니다. 다시 풀거나 표시를 해제할 수 있습니다.