도구스학업·수학

켤레기울기법 계산기

대칭 양정치 행렬 Ax=b를 켤레기울기법(Conjugate Gradient)으로 풉니다. n차원이면 반올림 오차 없이 정확히 n번 안에 끝난다는 성질을 단계별 잔차로 보여주고, 가우스 소거로 직접 구한 해와 대조합니다.

행렬 크기 n×n

한 줄에 한 행, 값은 공백이나 쉼표로 구분합니다.

공백이나 쉼표로 구분합니다.

해 x

(0.2222, 0.1111, 1.4444)

3번 만에 수렴 (n=3)

가우스 소거 직접 풀이(0.2222, 0.1111, 1.4444)
두 해가 일치하는가일치

단계별 잔차와 x

kαβ‖r‖x
03.74e+0(0, 0, 0)
10.280.121.30e+0(0.28, 0.56, 0.84)
20.41210.20465.86e-1(0.049, 0.329, 1.302)
30.48152.04e-16(0.222, 0.111, 1.444)
n차원이면 반올림 오차 없이 정확히 n번 안에 끝납니다. 매 단계의 탐색방향들이 A에 대해 서로 켤레(A-직교)이기 때문입니다. n차원 공간에서 서로 A-직교인 방향은 최대 n개뿐이라, 그 이상은 만들 것이 없습니다.
A가 대칭이 아니거나 양정치가 아니면(어떤 방향으로 곡률이 음수이거나 0이면) 계산이 무너집니다. 이 계산기는 대칭이 아니면 시작 전에 거부하고, 계산 도중 문제를 만나면 즉시 멈추고 알려줍니다.

계산 방법

  1. 1대칭 양정치 행렬 A를 입력합니다(대칭이 아니면 계산할 수 없습니다).
  2. 2우변 벡터 b를 입력합니다.
  3. 3매 단계의 잔차 노름이 줄어드는 과정을 봅니다.
  4. 4가우스 소거로 직접 구한 해와 켤레기울기법의 해가 같은지 확인합니다.

자주 묻는 질문

매 단계에서 만드는 탐색방향들이 A에 대해 서로 켤레(A-직교, pᵢᵀApⱼ=0)이기 때문입니다. n차원 공간에서 서로 A-직교인 방향은 최대 n개뿐이라, 반올림 오차가 없는 이상적인 계산에서는 n번이면 모든 방향을 다 써서 정확한 해에 도달합니다. 실제로는 그보다 훨씬 일찍 답에 충분히 가까워지는 경우가 많습니다.

α_k는 지금 탐색방향으로 얼마나 나아가야 잔차가 그 방향 성분에서 0이 되는지를 정합니다. β_k는 다음 탐색방향을 만들 때 새 잔차에 이전 방향을 얼마나 섞어야 A-직교가 유지되는지를 정합니다.

조건수 κ(A의 최대고유값 ÷ 최소고유값)에 좌우됩니다. 오차 감소율이 대략 (√κ−1)/(√κ+1)이라 κ가 클수록(고유값들이 서로 많이 벌어질수록) 느려집니다. κ=1이면(모든 고유값이 같으면) 이론상 한 번 만에 끝납니다.

α_k를 정할 때 쓰는 pᵀAp가 0 이하가 되는 순간이 생겨 계산이 무너집니다. 이 계산기는 입력이 대칭이 아니면 시작 전에 거부하고, 계산 도중 pᵀAp가 0 이하가 되면 즉시 멈추고 A가 양정치가 아닌 것으로 보인다고 알려줍니다.

가우스 소거는 유한한 단계(O(n³))로 정확한 해를 구하는 직접법이고, 켤레기울기법은 매 단계 근사해를 개선해 가는 반복법입니다. 크기가 큰 희소행렬에서는 켤레기울기법이 가우스 소거보다 훨씬 적은 계산으로 충분히 정확한 근사해에 도달하는 경우가 많아, 대규모 연립방정식(유한요소법 등)에서 널리 쓰입니다.

전송되지 않습니다. 계산은 모두 브라우저 안에서 이뤄지고 입력값은 이 기기에만 남습니다.

알아두면 좋은 점

  • 무작위로 만든 대칭 양정치 행렬(n=2~10)에서 켤레기울기법의 해와 가우스 소거(부분 피벗)로 직접 구한 해가 일치하는지 확인했습니다.
  • 반올림 오차 없이 정확히 n번 이내에 끝나는지, 잔차 노름이 매 단계 단조 감소하는지 확인했습니다.
  • 조건수가 1인 특수한 경우(단위행렬의 배수) 한 번 만에 정확한 해가 나오는지 확인했습니다.
  • 대칭이 아닌 행렬은 거부하는지, 대칭이지만 양정치가 아닌 행렬(음의 고유값이 있는 경우)에서는 계산 도중 멈추고 알려주는지 확인했습니다 — 우연히 문제를 피해가는 우변 벡터가 있어 여러 우변으로 검산했습니다.

함께 보면 좋은 도구

마지막 검증: 2026년 9월 2일 · 결과는 참고용 추정치입니다.