Numpilot
손안의 수치해석/3부 계산의 기초

수렴한다는 것은 무슨 뜻인가

18 / 30
2026-08-10 · 읽는 데 9분

두 가지 다른 질문

15편에서 반복 계산으로 답을 찾았다. “온도가 거의 안 변하면 멈춘다”고 했다.

여기서 헷갈리기 쉬운 것이 있다. 계산을 멈춰도 되는지와, 그 답을 믿어도 되는지는 다른 질문이다.

  • 질문 1 — 반복을 더 해도 값이 안 바뀌는가?
  • 질문 2 — 그 값이 실제 답에 가까운가?

첫 번째가 예라고 해서 두 번째도 예인 것은 아니다. 이 구분을 놓치면 “계산이 잘 끝났다”고 안심하면서 틀린 답을 쓴다.

이 편은 이 두 질문을 나눠 다룬다.

질문 1: 반복이 멈추는가

먼저 첫 번째. 정상 상태 계산에서 우리는 값을 계속 갱신하며 답에 접근했다.

이 접근이 항상 성공하는 것은 아니다. 세 가지 결말이 가능하다.

① 수렴한다. 값이 어떤 지점으로 다가가며 변화폭이 점점 줄어든다. 정상이다.

② 발산한다. 값이 커지다가 무한대가 된다. 14편에서 말한 시간 간격 조건을 위반하면 이렇게 된다.

③ 진동한다. 두 값 사이를 왕복하며 수렴하지도 발산하지도 않는다. 특정 조건에서 나타난다.

②와 ③은 명백히 실패이고, 알아채기 쉽다. 값이 이상해지므로 시스템이 감지할 수 있다.

문제는 ①의 변형이다. 아주 느리게 수렴하는 경우.

값이 조금씩 변하는데, 그 변화가 너무 작아서 “거의 안 변한다”는 판정을 통과한다. 그런데 실제로는 아직 답에서 멀다. 남은 거리를 아주 느린 속도로 좁혀가는 중이었을 뿐이다.

이게 조용히 틀리는 경우다. 계산이 정상 종료되고 그럴듯한 답이 나온다.

느린 수렴을 어떻게 잡나

대응은 변화량 자체가 아니라 변화의 추이를 보는 것이다.

매 반복에서 값이 얼마나 변했는지 기록하면 대개 그 변화량이 규칙적으로 줄어든다. 이 줄어드는 패턴이 보이면, 남은 거리를 추정할 수 있다.

변화량이 예를 들어 매 반복마다 절반으로 줄고 있다면, 지금까지 온 거리와 앞으로 남은 거리의 관계를 짐작할 수 있다. 이걸로 “지금 멈추면 실제 답에서 얼마나 떨어져 있을지”를 대략 계산한다.

“변화가 작다”가 아니라 “남은 거리가 작다”를 기준으로 멈춘다. 이 차이가 중요하다.

그리고 변화량이 규칙적으로 줄지 않으면 — 불규칙하거나 정체되어 있으면 — 그건 이상 신호다. 사용자에게 알려야 한다.

질문 2: 답이 맞는가

이제 더 어려운 질문이다. 반복이 잘 수렴해서 답을 얻었다. 그 답이 실제 물리에 가까운가.

여기서 중요한 사실이 있다. 수렴은 격자가 정한 답에 도달했다는 뜻일 뿐이다.

우리는 실제 미분방정식을 푼 것이 아니다. 그것을 격자로 근사한 다른 문제를 푼 것이다. 반복 계산이 완벽하게 수렴하면, 그 근사 문제의 정확한 답에 도달한다.

근사 문제와 실제 문제 사이의 차이는 남아 있다. 그리고 그 차이는 반복을 더 해서 줄일 수 없다. 격자를 바꿔야 줄어든다.

격자 수렴이라는 검사

그래서 두 번째 검사가 필요하다. 격자를 다르게 해서 답이 얼마나 변하는지 본다.

방법은 단순하다. 같은 문제를 격자 간격을 바꿔가며 여러 번 푼다.

  • 성긴 격자로 풀어서 답 A
  • 두 배 촘촘하게 풀어서 답 B
  • 다시 두 배 촘촘하게 풀어서 답 C

이 세 답을 나란히 놓고 본다.

A와 B의 차이가 크고, B와 C의 차이가 작다면 — 답이 어떤 값으로 다가가고 있다. 격자를 더 촘촘히 해도 크게 안 변할 것이다. 믿을 만하다.

A, B, C가 계속 크게 변한다면 — 아직 격자가 부족하다. 답을 믿을 수 없다.

A, B, C가 불규칙하게 왔다갔다 한다면 — 뭔가 잘못됐다. 격자나 조건에 문제가 있다.

이 검사를 격자 수렴 검사라 부른다. 그리고 이것이 수치해석에서 답을 믿을 근거를 만드는 가장 기본적인 방법이다.

그런데 비싸다

여기에 실용적인 문제가 있다. 격자 수렴 검사를 하려면 같은 문제를 여러 번 풀어야 한다.

그리고 14편에서 봤듯 격자를 두 배 촘촘히 하면 계산량이 열여섯 배가 된다. 세 단계를 검사하면 전체 비용이 크게 늘어난다.

폰에서 몇 초 안에 답을 준다는 목표와 충돌한다.

우리가 택한 타협

이 충돌을 어떻게 다뤘는지가 이 편의 결론이다.

① 기본적으로는 검증된 격자 규칙을 쓴다. 다루는 문제 범위를 좁혀둔 덕에(9편), 각 문제 유형에 대해 미리 격자 수렴 검사를 해볼 수 있다. 개발 단계에서 대표 문제들에 대해 검사하고, “이 정도 격자면 충분하다”는 규칙을 정해서 넣는다.

이건 좁게 만든 결정이 주는 또 하나의 이득이다. 임의의 문제를 다룬다면 사전 검증이 불가능하다.

② 빠른 답과 확인 답을 나눈다. 사용자가 조건을 바꿔가며 시도하는 동안은 성긴 격자로 즉시 답한다. 방향을 보는 데는 충분하다.

그리고 사용자가 “이 조건으로 가자”고 판단한 시점에, 더 촘촘한 격자로 다시 계산해서 답이 바뀌는지 확인한다. 이건 몇십 초가 걸려도 괜찮다. 열 번 시도 중 마지막 한 번만 하는 일이니까.

③ 두 답이 다르면 알린다. 성긴 답과 촘촘한 답이 크게 다르면, 그건 격자가 부족했다는 뜻이다. 사용자에게 표시한다.

이 구조는 15편에서 말한 성격과 이어진다. 탐색할 때는 빠르고 거칠게, 결정할 때는 느리고 정확하게.

무엇을 알 수 없는가

마지막으로 한계를 분명히 해두자.

격자 수렴 검사를 통과하고 반복도 잘 수렴했다면, 우리는 “격자와 반복에서 오는 오차는 작다”는 것까지 알 수 있다.

그런데 그것이 답이 맞다는 뜻은 아니다.

여전히 남는 것들이 있다.

  • 물리 모델 자체가 부적절할 수 있다 (복사를 무시했는데 중요했다면)
  • 경계조건 가정이 틀렸을 수 있다 (16편)
  • 재료 물성값이 실제와 다를 수 있다
  • 형상 근사가 과했을 수 있다 (2차원으로 봤는데 3차원 효과가 컸다면)

이것들은 수치적 검사로 잡히지 않는다. 계산이 완벽해도 틀린 문제를 완벽하게 푼 것일 수 있다.

그래서 다음 두 편이 필요하다. 19편에서는 폰의 한계 때문에 우리가 무엇을 포기했는지 명시하고, 20편에서는 그럼에도 답을 검증하는 방법들을 정리한다.


다음 편 예고 — 폰의 한계와 타협 — 무엇을 포기했나. 지금까지 흩어져 나온 타협들을 한자리에 모아, 각각이 결과에 어떤 영향을 주는지 정리한다.