보간과 근사

편집 역사 토론
수치해석 계산물리 시뮬레이션 마지막 수정: 2026-07-07 05:12:44

보간과 근사
Interpolation & Approximation
분야수치해석 × 근사이론
핵심 질문점 몇 개로 함수 전체를 어떻게 복원할까
대표 기법라그랑주·뉴턴 보간, 스플라인, 최소제곱
단골 함정룽게 현상(Runge phenomenon)
쓰이는 곳거의 모든 전산과학 코드

1. 개요[편집]

데이터는 점으로 주고, 답은 곡선으로 원한다. 그 사이를 메꾸는 게 우리 일이다.

보간(interpolation, 補間)은 이미 알고 있는 데이터 점들을 정확히 통과하는 함수를 찾아 그 사이의 값을 추정하는 방법이고, 근사(approximation, 近似)는 굳이 모든 점을 통과하지 않더라도 전체적으로 가장 그럴듯하게 맞아떨어지는 함수를 찾는 방법이다. 둘의 차이는 딱 한 가지, “주어진 점을 반드시 지나가야 하느냐”에 있다. 보간은 지나가야 하고, 근사는 지나가면 좋지만 안 지나가도 봐준다.

말은 쉬워 보여도 이 두 가지는 수치해석의 밑바탕에 조용히 깔려 있다. 유한차분법의 미분 근사, 룽게-쿠타법의 시간 적분, 유한요소법의 형상함수, 스펙트럴 방법의 기저 전개까지 — 전부 “함수를 다른 함수로 바꿔치기”하는 보간·근사의 변주다. 시뮬레이션 코드를 열어보면 어디선가 반드시 이 짓을 하고 있다.

2. 보간과 근사의 구분[편집]

주어진 점 (xi,yi)(x_i, y_i), i=0,,ni=0,\dots,n 이 있을 때:

  • 보간: p(xi)=yip(x_i) = y_i 를 모든 ii에 대해 강제한다. 점이 n+1n+1개면 차수 nn짜리 다항식 하나가 유일하게 결정된다.
  • 근사: p(xi)yip(x_i) \approx y_i 만 요구한다. 대신 오차의 총합(보통 제곱합)을 최소화한다. 데이터에 노이즈가 섞여 있을 때 국룰이다.

측정 데이터처럼 노이즈가 낀 값을 억지로 다 통과시키면 곡선이 미쳐 날뛴다(과적합). 이럴 땐 보간이 아니라 근사를 써야 한다. 반대로 데이터가 깨끗한 이론값이라면 보간이 제격이다.

3. 다항식 보간[편집]

가장 고전적인 방법. n+1n+1개의 점을 지나는 차수 nn의 다항식은 유일하게 존재한다.

3.1. 라그랑주 보간[편집]

라그랑주(Lagrange) 형식은 각 점마다 “그 점에서만 1이고 나머지 점에서는 0”인 기저 다항식을 만들어 선형결합한다.

p(x)=i=0nyiLi(x),Li(x)=j=0jinxxjxixjp(x) = \sum_{i=0}^{n} y_i \, L_i(x), \qquad L_i(x) = \prod_{\substack{j=0 \\ j \neq i}}^{n} \frac{x - x_j}{x_i - x_j}

수식이 예쁘고 유도가 직관적이라 교과서 첫 페이지에 나온다. 단점은 점이 하나 추가되면 모든 LiL_i를 처음부터 다시 계산해야 한다는 것. 즉 증분 계산이 안 된다.1

3.2. 뉴턴 보간[편집]

뉴턴(Newton) 형식은 분할차분(divided difference)을 이용해 같은 다항식을 점화식으로 쌓아 올린다.

p(x)=f[x0]+f[x0,x1](xx0)++f[x0,,xn]i=0n1(xxi)p(x) = f[x_0] + f[x_0,x_1](x-x_0) + \cdots + f[x_0,\dots,x_n]\prod_{i=0}^{n-1}(x-x_i)

점을 하나 추가할 때 기존 계수는 그대로 두고 항 하나만 덧붙이면 되므로, 실시간으로 데이터가 들어오는 상황에서 유리하다. 라그랑주와 뉴턴은 같은 다항식을 다르게 쓴 것일 뿐, 결과는 동일하다.

3.3. 룽게 현상[편집]

여기서 초보들이 반드시 밟는 지뢰. “점을 많이 넣으면 더 정확하겠지?”라고 생각해 등간격으로 고차 다항식을 쓰면, 양 끝단에서 곡선이 미친 듯이 진동한다. 이것이 룽게 현상(Runge phenomenon)이다.2 해결책은 등간격 대신 체비쇼프 노드(Chebyshev nodes)처럼 양끝에 점을 몰아 배치하거나, 고차 다항식을 포기하고 조각별 저차 다항식, 즉 스플라인으로 갈아타는 것.

4. 스플라인 보간[편집]

스플라인(spline)은 전체를 하나의 고차 다항식으로 우겨넣는 대신, 구간마다 저차 다항식(보통 3차)을 이어 붙이되 이음매에서 매끄럽게 연결한다. 3차 스플라인의 경우 각 이음매에서 함수값·1차 도함수·2차 도함수가 모두 연속이 되도록 조건을 건다.

Si(x)=ai+bi(xxi)+ci(xxi)2+di(xxi)3S_i(x) = a_i + b_i(x-x_i) + c_i(x-x_i)^2 + d_i(x-x_i)^3

곡선이 튀지 않으면서 매끄럽고, 고차 보간의 룽게 현상도 없다. 그래서 CAD 곡면, 폰트 렌더링, 애니메이션 키프레임 보간, 컴퓨터 그래픽스의 경로 설계 등 “예쁜 곡선”이 필요한 곳이면 어디든 스플라인이다. 이름의 유래도 조선공이 배 곡선을 그릴 때 쓰던 얇은 나무자(spline)에서 왔다.

5. 최소제곱 근사[편집]

데이터가 노이즈투성이일 때는 보간을 버리고 근사로 넘어간다. 최소제곱법(least squares)은 잔차 제곱합을 최소화하는 계수를 찾는다.

minci=0m(yip(xi;c))2\min_{\mathbf{c}} \sum_{i=0}^{m} \left( y_i - p(x_i; \mathbf{c}) \right)^2

모델이 계수에 대해 선형이면(예: 다항식 회귀) 이 문제는 정규방정식 AAc=AyA^\top A\,\mathbf{c} = A^\top \mathbf{y} 를 푸는 선형대수 문제로 귀결된다. 다만 AAA^\top A 는 조건수가 나빠지기 십상이라, 실무에서는 정규방정식을 직접 푸는 대신 QR 분해나 특이값분해(SVD)를 쓴다.3 통계에서 말하는 선형회귀가 바로 이 최소제곱 근사의 다른 이름이다.

6. 시뮬레이션에서의 역할[편집]

보간과 근사는 눈에 잘 안 띄지만 시뮬레이션 파이프라인 곳곳에 박혀 있다.

  • 미분·적분의 근사: 유한차분법의 차분 도식은 결국 다항식 보간을 미분한 것이다. 뉴턴-코츠 적분 공식도 마찬가지.
  • 격자 간 값 전달: 적응 격자 세분화유체-구조 연성에서 서로 다른 격자 사이로 물리량을 옮길 때 보간이 필수다.
  • 기저 함수 전개: 스펙트럴 방법은 삼각함수·직교다항식 기저로 함수를 근사하는 것이고, 유한요소법의 형상함수는 요소 내부의 보간 함수 그 자체다.
  • 후처리 시각화: ParaView 같은 도구가 격자점 값을 매끄러운 컨투어로 그려주는 것도 내부적으로 보간이다.

수렴은 신에게 맡기더라도, 보간만큼은 인간이 제대로 골라 써야 한다. 방법 하나 잘못 고르면 멀쩡한 데이터가 룽게 현상으로 폭발하니까.

7. 관련 문서[편집]

8. Footnotes[편집]

  1. 이걸 개선한 것이 바로 바리센트릭(barycentric) 라그랑주 형식이다. 한 번 가중치를 계산해두면 점 추가·평가가 훨씬 싸진다. 교과서엔 잘 안 나오지만 실무 라이브러리는 이걸 쓴다.

  2. 칼 룽게(Carl Runge)가 1901년 1/(1+25x2)1/(1+25x^2) 함수로 시연한 현상. “고차일수록 좋다”는 순진한 믿음을 박살 낸 대표 사례라, 수치해석 첫 수업에서 교수가 학생 기를 죽일 때 애용한다.

  3. 조건수가 나쁘다는 건, 데이터가 살짝 흔들려도 계수가 크게 요동친다는 뜻이다. 정규방정식은 조건수를 제곱해버리는 만행을 저지르므로, 정밀도가 중요하면 QR/SVD로 우회하는 게 국룰이다.