절단오차

오류 제보
수치해석 마지막 수정: 2026-09-25 04:20:26

○ 공개 검수 대기 AI 보조 작성 표시 기준 보기

1. 개요

절단오차(truncation error)는 무한급수나 연속적인 수학 연산을 유한 개의 항 또는 이산적인 근사로 “잘라내면서(truncate)” 생기는 오차다. 테일러 급수를 어느 항에서 끊거나, 미분·적분 같은 극한 연산을 유한한 차분·합으로 바꿀 때 필연적으로 따라온다. 수치해석에서 오차는 크게 절단오차와 반올림 오차(round-off error) 둘로 나뉘는데, 절단오차는 알고리즘이 근본적으로 근사라서 생기는 것이지 컴퓨터의 유한 자릿수 탓이 아니다.1

쉽게 말해 “수학을 컴퓨터가 삼킬 수 있게 잘게 썰면서 흘린 부스러기”다. 격자를 촘촘히 하면 부스러기가 줄지만 공짜는 아니다 — 계산량이 늘고, 너무 촘촘히 하면 이번엔 반올림 오차가 고개를 든다.

2. 테일러 전개가 범인이자 해결사

절단오차의 정체를 가장 선명하게 보여주는 건 테일러 급수다. 매끄러운 함수 ff를 점 xx 주위에서 전개하면

f(x+h)=f(x)+hf′(x)+h22f′′(x)+h36f′′′(x)+⋯f(x+h) = f(x) + h f'(x) + \frac{h^2}{2}f''(x) + \frac{h^3}{6}f'''(x) + \cdots

이다. 여기서 1차 항까지만 남기고 나머지를 버리면, 버려진 꼬리 h22f′′(ξ)\frac{h^2}{2}f''(\xi)가 바로 절단오차다. 라그랑주 나머지항(Lagrange remainder) 형태로 쓰면 어떤 ξ∈(x,x+h)\xi \in (x, x+h)에 대해

R=h22f′′(ξ)R = \frac{h^2}{2} f''(\xi)

로 정확히 표현된다. 즉 절단오차는 “미지의 점에서의 고차 도함수 × hh의 거듭제곱”이다. 이 구조가 수치해석의 거의 모든 오차 분석의 뼈대가 된다.

3. 전진차분으로 본 실전 예

1차 도함수를 전진차분(forward difference)으로 근사해 보자. 위 전개를 hh로 나누고 정리하면

f′(x)=f(x+h)−f(x)h−h2f′′(ξ)f'(x) = \frac{f(x+h) - f(x)}{h} - \frac{h}{2}f''(\xi)

우변의 분수가 우리가 실제로 계산하는 근사값이고, 뒤의 −h2f′′(ξ)-\frac{h}{2}f''(\xi)가 절단오차다. 오차가 hh에 비례하므로 이 도식은 1차 정확도(first-order accurate), 즉 O(h)\mathcal{O}(h)라고 한다. 반면 중심차분(central difference)

f′(x)=f(x+h)−f(x−h)2h+O(h2)f'(x) = \frac{f(x+h) - f(x-h)}{2h} + \mathcal{O}(h^2)

는 대칭성 덕분에 hh항이 소거되어 O(h2)\mathcal{O}(h^2), 2차 정확도가 된다. 같은 두 점 사이 정보를 대칭으로 쓰기만 해도 오차 차수가 한 단계 올라가니, 공짜 점심에 가깝다.2 이 관계는 유한차분법과 수치미분의 출발점이다.

4. 국소 절단오차 vs 전역 절단오차

시간 적분처럼 오차가 누적되는 문제에서는 두 종류의 절단오차를 구별해야 한다.

  • 국소 절단오차(local truncation error, LTE): 딱 한 스텝만 진행할 때, 정확한 해를 넣었다고 가정하고 생기는 오차. 룽게-쿠타법이나 오일러법 한 걸음의 “순간 실수”다.
  • 전역 절단오차(global truncation error, GTE): 여러 스텝을 밟아 최종 시각에 도달했을 때 쌓인 총오차. 보통 국소 오차보다 차수가 하나 낮다.

예를 들어 전진 오일러법은 스텝당 국소 오차가 O(h2)\mathcal{O}(h^2)이지만, 구간을 도는 스텝 수가 O(1/h)\mathcal{O}(1/h)개라서 곱하면 전역 오차는 O(h)\mathcal{O}(h)로 떨어진다. “한 걸음의 실수는 작지만 만 걸음이면 티가 난다”는 것. 그래서 방법의 차수(order)를 말할 때는 보통 전역 차수를 가리킨다.3

5. 절단오차와 이산화 오차는 다른 것이다

여기서 용어를 한 번 정리해야 한다. 실무에서 가장 흔한 혼동이 절단오차와 이산화 오차(discretization error)를 같은 말로 쓰는 것인데, 둘은 정의가 다르고 크기도 분포도 다르다.

연속 방정식의 미분연산자를 LL, 그 이산화를 LhL_h, 정확한 해를 uu, 수치해를 uhu_h라 하자. 정의는 이렇다.

  • 절단오차 τh\tau_h: 정확한 해를 이산식에 대입했을 때 남는 잉여. L(u)=0L(u) = 0이므로 τh=Lh(u)\tau_h = L_h(u)다. 국소적이고, 테일러 전개로 손계산이 가능하며, 격자 한 칸의 성질(간격·기울기·왜도)만으로 결정된다.
  • 이산화 오차 εh=uh−u\varepsilon_h = u_h - u: 우리가 정작 알고 싶은 양. 해 자체의 오차다.

둘을 잇는 것이 오차 수송 방정식(error transport equation)이다. 수치해는 Lh(uh)=0L_h(u_h) = 0을 만족하므로 위 두 식을 빼면(연산자가 선형인 경우, 비선형이면 선형화해서)

Lh(εh)=−τhL_h(\varepsilon_h) = -\tau_h

가 된다. 읽는 법이 중요하다. 절단오차는 원천항(source)이고, 이산화 오차는 그 원천이 지배방정식과 똑같은 경로로 도메인 전체에 수송·확산된 결과다.4 그래서:

  • 절단오차가 큰 곳과 이산화 오차가 큰 곳은 같지 않다. 상류의 나쁜 셀 몇 개에서 만들어진 원천이 흐름을 타고 하류로 실려가, 정작 격자가 예쁜 하류 영역에서 오차가 가장 크게 관측되는 일이 흔하다. “여기 격자를 촘촘히 했는데 왜 이 값이 안 변하냐”의 범인은 보통 한참 위쪽에 있다.
  • 절단오차는 O(hp)\mathcal{O}(h^p)인데 이산화 오차도 O(hp)\mathcal{O}(h^p)인 것은 공짜가 아니다. Lh−1L_h^{-1}가 h→0h \to 0에서 폭발하지 않아야(hh에 무관하게 유계여야) 원천의 차수가 해의 차수로 그대로 넘어온다. 이 조건이 바로 안정성이고, “일관성 + 안정성 ⇒ 수렴성”이라는 폰 노이만 안정성 해석과 랙스 동등성 정리의 내용이다(수렴성 참고). 불안정한 도식은 절단오차가 아무리 고차여도 해가 발산한다.

실무적으로 더 중요한 차이. 격자 수렴 지수나 리처드슨 외삽법으로 사후에 추정하는 양은 이산화 오차다(솔루션 검증). 반면 이산식이 제대로 코딩됐는지 확인할 때 재는 양은 절단오차의 차수이고, 여기에 쓰이는 표준 기법이 원하는 해를 먼저 정해 놓고 소스항을 역산해 넣는 제조해(코드 검증)다. 둘은 역할이 다르며, 섞어 쓰면 “코드는 맞는데 답이 틀렸다”와 “코드가 틀렸다”를 구분할 수 없게 된다.

“그럼 이산화 오차만 알면 되지 절단오차를 왜 보나” 싶겠지만, 오차 수송 방정식의 우변이라는 위치 때문에 절단오차는 격자를 어디에 넣어야 하는지를 알려주는 유일한 국소 지표다. 잔차·기울기 기반 지시자 대신 추정 절단오차를 적응 격자 세분화의 지시자로 쓰는 연구 계열이 여기서 나온다.

6. 차수(order)와 격자 세분화

방법의 차수 pp는 절단오차가 O(hp)\mathcal{O}(h^p)일 때의 pp다. 차수가 높을수록 격자를 조금만 조밀하게 해도 오차가 급격히 준다. p=2p=2인 방법은 hh를 반으로 줄이면 오차가 1/4로, p=4p=4면 1/16으로 준다. 이 관계는 리처드슨 외삽법이나 격자 수렴 지수로 오차를 추정하고 검증하는 근거가 된다 — 격자를 체계적으로 줄여가며 관찰된 수렴률이 이론 차수 pp와 맞는지 확인하는 것이 검증 및 확인의 핵심 절차다.

절단오차가 hh와 함께 어떤 기울기로 줄어드는지 — 그리고 어디서 배신하는지 — 는 직접 재보는 게 제일 빠르다.

sin의 도함수를 전진·중심차분으로 근사한 실제 오차(배정밀도 실측). h를 줄이면 log-log에서 기울기 1(전진)·2(중심)로 떨어지다가, h가 너무 작아지면 반올림 오차가 역전해 다시 커진다 — 총오차의 U-커브

여기서 놓치면 안 되는 함정. 절단오차를 줄이겠다고 hh를 무한정 줄이면, 명시적 도식에서는 CFL 조건 때문에 시간 간격도 같이 줄여야 해서 계산량이 폭증하고, 어느 지점을 넘어서면 이번엔 반올림 오차가 절단오차를 역전한다. 총오차 곡선은 U자를 그리며, 그 바닥에 최적 hh가 있다. “촘촘할수록 좋다”는 순진한 믿음이 배신당하는 지점이다.5

7. 절단오차를 줄이는 무기들

  • 고차 도식: 차수 pp를 올린다. 다만 고차 도식은 진동에 약하고 불연속에서 오버슈트를 일으키기 쉽다(수치 소산과 분산 참고).
  • 격자 세분화: 오차가 큰 곳만 국소적으로 촘촘히 하는 적응 격자 세분화가 효율적이다.
  • 외삽: 리처드슨 외삽법으로 두 격자 해를 조합해 최저차항을 소거한다. 롬베르그 적분이 이 아이디어의 적분판이다.
  • 수정 방정식 분석: 이산식이 실제로 푸는 방정식을 역으로 유도해(수정 방정식), 절단오차가 어떤 물리적 오차(인위적 확산·분산)로 나타나는지 파악한다.

결국 절단오차는 없앨 수 없고 관리하는 대상이다. 얼마나 큰지 알고, 격자·차수·비용의 삼각형에서 타협점을 찾는 것 — 그게 수치해석 엔지니어의 일이다.

8. 관련 문서

9. Footnotes

  1. 이 둘을 헷갈리면 디버깅이 미궁에 빠진다. 절단오차는 hh를 줄이면 준다. 반올림 오차는 hh를 줄이면 오히려 는다(작은 수끼리 빼면서 유효숫자가 날아가서). 오차가 격자를 줄여도 안 줄면 반올림을 의심하라. ↩

  2. 물론 진짜 공짜는 아니다. 중심차분은 경계 근처에서 한쪽 점이 도메인 밖으로 나가는 문제가 있다. 세상에 공짜 점심은 없고, 다만 청구서가 나중에 온다. ↩

  3. “국소적으로는 우등생인데 누적되니 낙제”라는 서사는 수치적분(오일러)의 숙명이다. 그래서 실전에서는 국소 오차가 아무리 예뻐도 전역 차수로 줄을 세운다. ↩

  4. 이 구조를 한 번 이해하면 CFD 결과를 보는 눈이 바뀐다. 오차는 셀마다 독립적으로 발생해 그 자리에 머무는 게 아니라, 이류항을 타고 흐르고 확산항을 타고 번진다. 오차에도 물리가 있는 셈이다. 그래서 역압력구배나 재순환 영역처럼 정보가 되돌아오는 곳에서는 하류의 나쁜 격자가 상류 해까지 오염시킨다. ↩

  5. 이 U자 곡선을 모르고 “격자 무한정 조밀화”에 매달리다 오히려 오차가 커지는 걸 보고 멘붕에 빠지는 게 수치해석 입문자의 통과의례다. 총오차 = 절단 + 반올림, 둘의 합에 최적점이 있다. ↩

검증 자료

이 문서의 주요 출처

  1. ASME V&V 20-2009, Standard for Verification and Validation in Computational Fluid Dynamics and Heat Transfer
  2. C. J. Roy, "Review of Discretization Error Estimators in Scientific Computing", AIAA 2010-126
  3. W. L. Oberkampf & C. J. Roy, Verification and Validation in Scientific Computing (Cambridge Univ. Press, 2010) — Part III: Solution verification
  4. R. J. LeVeque, Finite Difference Methods for Ordinary and Partial Differential Equations (SIAM, 2007)
이 문서가 문제를 푸는 데 도움이 됐나요? 한 번의 클릭이 다음 검수 순서를 정합니다.

의견을 반영할게요. 감사합니다.

다음으로 읽기 검증 및 확인 약 5분 더 탐색 →