켤레기울기법 계산기
대칭 양정치 행렬 Ax=b를 켤레기울기법(Conjugate Gradient)으로 풉니다. n차원이면 반올림 오차 없이 정확히 n번 안에 끝난다는 성질을 단계별 잔차로 보여주고, 가우스 소거로 직접 구한 해와 대조합니다.
행렬 크기 n×n
한 줄에 한 행, 값은 공백이나 쉼표로 구분합니다.
공백이나 쉼표로 구분합니다.
해 x
(0.2222, 0.1111, 1.4444)
3번 만에 수렴 (n=3)
단계별 잔차와 x
| k | α | β | ‖r‖ | x |
|---|---|---|---|---|
| 0 | — | — | 3.74e+0 | (0, 0, 0) |
| 1 | 0.28 | 0.12 | 1.30e+0 | (0.28, 0.56, 0.84) |
| 2 | 0.4121 | 0.2046 | 5.86e-1 | (0.049, 0.329, 1.302) |
| 3 | 0.4815 | — | 2.04e-16 | (0.222, 0.111, 1.444) |
계산 방법
- 1대칭 양정치 행렬 A를 입력합니다(대칭이 아니면 계산할 수 없습니다).
- 2우변 벡터 b를 입력합니다.
- 3매 단계의 잔차 노름이 줄어드는 과정을 봅니다.
- 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일 · 결과는 참고용 추정치입니다.