# 다항식 vs. 스플라인 선택 기준

함수의 보간(interpolation)은 주어진 데이터나 함숫값을 만족하는 새로운 함수를 찾는 과정에서 매우 중요한 방법론으로 쓰인다. 이 보간 함수가 취해야 할 주요 조건으로는 주어진 노드(node)에서의 함수값을 정확히 일치시키는 것과, 그 주변 구간에서 가능한 한 작은 오차를 유지하도록 설계하는 것이 있다. 특히 다항식 보간(polynomial interpolation)은 고전적이며 가장 직접적인 보간 방식이지만, 노드 수가 늘어남에 따라 발생하는 민감한 거동과 고차 다항식의 오차 성질 등 여러 난점을 지닌다. 이와 달리 스플라인 보간(spline interpolation)은 구간을 쪼개어(부분적으로) 낮은 차수의 다항식으로 보간함으로써, 전역적 문제점(global oscillation)을 줄이고 좀 더 유연한 보간 함수를 얻을 수 있다는 장점을 지닌다.

#### 다항식 보간의 개념

다항식 보간은 $n+1$개의 서로 다른 노드 $x\_0, x\_1, \ldots, x\_n$가 주어졌을 때, 그 노드에서의 함수값 $f(x\_i)$와 일치하는 차수가 $n$ 이하인 어떤 다항식 $p(x)$를 구성하는 것이다. 즉, 다음 조건을 만족하는 $p(x)$를 찾는다.

$$
\begin{align} p(x\_i) = f(x\_i), \quad i = 0, 1, \dots, n \end{align}
$$

하나의 유한 집합 ${(x\_i, f(x\_i))}$에 대해 유일한 다항식이 존재한다는 사실은 선형대수학의 기본 이론에 의해 보장된다. 예를 들어, 라그랑주(Lagrange) 형태의 보간 다항식은 다음과 같이 표현된다.

$$
\begin{align} p(x)  &=  \sum\_{j=0}^n f(x\_j) , \ell\_j(x),\\
\ell\_j(x)  &=  \prod\_{\substack{0 \le m \le n \ m \neq j}} \frac{x - x\_m}{x\_j - x\_m} \end{align}
$$

계산 과정에서는 뉴턴(Newton) 형태 등 다양한 표현 방식이 쓰이기도 한다. 이를 통해 빠르고 효율적인 계산을 위한 전처리나, 차수를 자유롭게 조정하는 적응적(interpolatory adaptive) 기법 등이 시도된다.

#### 다항식 보간의 잠재적 문제점

다항식 보간은 직관적이고 구현이 간단하다는 장점에도 불구하고, 노드가 많아질수록 몇 가지 중요한 문제를 야기한다. 대표적으로 ‘런게 현상(Runge’s phenomenon)’이 있는데, 등간격으로 배치된 노드에서 고차 다항식을 활용하면 극심한 진동(oscillation)이 발생할 수 있다. 이는 높은 차수의 다항식이 본질적으로 가지는 큰 오실레이션 경향과 결합되어, 실제 함수값과 크게 벗어나는 결과로 이어지게 된다. 이러한 문제점을 피하기 위해 체비쇼프 노드(또는 Chebyshev 구간 분할)를 적용하거나, 노드 배치를 최적화하여 이 오차를 줄이려는 시도가 존재한다.

그러나 노드 선택만으로는 모든 상황에서 보간의 민감성을 완화하기 어렵다. 다항식 보간은 전역적(global) 접근 방식이기 때문에, 어느 한 지점에서의 변화가 전체 구간에 걸쳐 큰 파장을 일으킬 수 있다. 특히 노드 수가 증가해 차수가 점점 높아질 경우, 컴퓨터 연산 과정에서 수치적 오차가 누적되는 현상도 나타난다. condition number가 급격히 커지는 경향이 있어, 연산 과정 중 발생하는 부동소수점 연산 오차에 의해 결과가 크게 요동칠 수 있다.

#### 스플라인 보간의 개념

스플라인 보간은 다항식 보간의 이러한 문제들을 완화하기 위한 대안으로서, 전체 구간을 작은 하위 구간으로 나누고, 각 구간에서 상대적으로 낮은 차수(주로 3차 이하)의 다항식을 사용하여 보간을 수행하는 방법이다. 전역 다항식이 아닌 ‘구간별 다항식’의 적절한 연결을 통해 연속성을 유지하면서도 국소적(local) 안정성을 확보하는 것이 특징이다.

이때 구간을 나누는 노드를 ${x\_0, x\_1, \dots, x\_n}$라 하면, 스플라인 보간 곡선 $S(x)$는 각 구간 $\[x\_{k}, x\_{k+1}]$에서 별도의 다항식 조각 $s\_k(x)$을 정의하되, 경계 조건을 통해 서로 매끄럽게 이어 붙인다. 예를 들어 3차 스플라인(cubic spline)이라면, 아래와 같이 각 구간에서 3차 다항식을 구성하고, 적절한 연속성(함수값 및 1차·2차 미분값의 매끄러움)을 부여한다.

$$
\begin{align} s\_k(x) = a\_k + b\_k (x - x\_k) + c\_k (x - x\_k)^2 + d\_k (x - x\_k)^3, \quad k = 0, 1, \dots, n-1 \end{align}
$$

그 뒤, $s\_k(x\_k) = f(x\_k), s\_k(x\_{k+1}) = f(x\_{k+1})$ 같은 보간 조건과 함께, $s\_k$와 $s\_{k+1}$의 접합점에서의 1차 및 2차 미분이 서로 이어지도록 제한한다. 예컨대 자연 스플라인(natural spline)은 맨 양쪽 구간의 2차 미분값이 0이 되도록 추가적인 조건을 두기도 한다.

#### 스플라인 보간의 이점 및 특징

스플라인은 국소적으로 낮은 차수를 취하므로, 노드가 많아져도 한 구간 내에서 다루어야 할 다항식이 복잡해지지 않는다. 이는 전역 보간에 비해 오차가 급격히 늘어나는 ‘폭발적 거동’을 피할 수 있게 한다. 또한 실제 곡선 설계나 CAD 등에서는 높은 매끄러움과 부분적 수정의 용이함이 중요하다. 스플라인은 특정 구간만 조정해도 그 주변 구간에만 영향을 주고, 그 외 구간은 상대적으로 영향이 작게 미치도록 설계할 수 있다.

이 과정에서 스플라인 계수를 결정하기 위한 선형시스템이 만들어지는데, 그 행렬은 주로 대각선 대칭적 구조나 삼대각 행렬 등을 갖게 되어 수치적 안정성이 좋고, 계산 복잡도도 다항식 보간 전체를 한 번에 해결할 때보다 우수하다.

#### 전역 보간과 국소 보간 비교

다항식 보간은 하나의 고차 다항식이 전체 구간에 대해 전역적으로 정의된다는 점에서, 각 지점의 변화가 전역적 영향으로 확산되기 쉽다. 이에 반해 스플라인은 여러 구간에 걸쳐 구간별로 정의되는 국소적(local) 보간이라는 특징을 가져, 특정 지점에서의 오차나 수정 요구가 발생해도 전체적인 함수 형태가 크게 교란되지 않는다.

추가로, 고차 다항식은 오차 분석에서 condition number가 급격히 커지는 경향이 있는 반면, 스플라인은 구간별로 낮은 차수만을 취하기 때문에 이 문제가 크게 완화된다. 실제로 정렬된 노드 집합에서, 노드 수가 크게 늘어나야 할 필요가 있는 고정밀 보간이나 산업적 곡선 설계에서는 스플라인이 매우 유리한 선택이 되는 경우가 많다.

{% @mermaid/diagram content="flowchart LR
A\[전체 구간에서<br>고차 다항식 보간] --> B\[런게 현상 등<br>전역 오차 급증 위험]
A --> C\[노드 변화에<br>민감]
D\[구간 분할 후<br>스플라인 보간] --> E\[낮은 차수로<br>오차 안정]
D --> F\[특정 구간 수정이<br>용이]" %}

#### 스플라인 보간의 더 세부적인 측면

스플라인 보간은 전역이 아닌 국소 영역을 기준으로 낮은 차수의 다항식을 구성하므로, 노드 수가 많아지더라도 오차가 상대적으로 안정적으로 관리된다. 구간별로 3차 혹은 그 이하의 다항식을 사용한다면, 이를 각 구간 경계에서 적절히 매끄럽게(gluing) 이어 붙이는 방식이 핵심을 이룬다. 이때 매끄러움의 정도를 결정하는 조건으로 함수값, 1차 미분값, 2차 미분값 등이 주어진다.

예를 들어 자연(natural) 3차 스플라인은 두 끝점 구간의 2차 미분값을 0으로 두어 경계를 더 유연하게 처리한다. 반면 클램프(clamped) 스플라인은 두 끝점에서 함수의 1차 미분값을 명시적으로 부여한다. 이 두 조건 외에도 여러 가지 변형들이 존재하며, 목적에 따라 편의적으로 적용된다.

스플라인 계수를 결정하기 위해, 각 구간의 다항식에서 총 4개의 계수가 필요하다고 하자. 구간이 $(n-1)$개 있다고 했을 때, 이들을 하나의 선형시스템으로 묶어 해를 구한다. 예컨대 3차 스플라인이라면 다음과 같은 보간·연결 조건들이 선형시스템을 형성한다.

$$
\begin{align} s\_k(x\_k) &= f(x\_k),\\
s\_k(x\_{k+1}) &= f(x\_{k+1}),\\
s\_k'(x\_{k+1}) &= s\_{k+1}'(x\_{k+1}),\\
s\_k''(x\_{k+1}) &= s\_{k+1}''(x\_{k+1}) \end{align}
$$

모든 $k$에 대해 위와 같은 연결조건과, 추가적인 경계조건(자연·클램프·양단 자유 등)이 더해지면 총 $4(n-1)$개의 미지수를 결정할 수 있는 체계가 완성된다. 그 결과, 보간에 필요한 모든 스플라인 조각이 정해진다.

#### 전역 다항식 보간과의 계산 복잡도 비교

단순히 노드가 많아졌을 때, 전역 고차 다항식 $p(x)$를 구하려면 크기가 $(n+1)\times(n+1)$인 시스템(노드가 $n+1$개라면 차수 $n$)을 풀어야 한다. 게다가 차수가 높아지면 행렬의 condition number가 매우 커져 수치적 안정성을 해친다. 스플라인 보간에서는 $(n-1)$개 구간에 대해 각 구간별 4개의 계수(3차 스플라인 가정 시)를 구해야 하지만, 이때 등장하는 행렬은 특정 구조(주로 삼대각 행렬)를 갖게 된다. 삼대각 행렬은 아래와 같은 형태를 가지며, 효율적인 알고리즘을 통해 빠르고 안정적으로 해를 구할 수 있다.

$$
\begin{align} \begin{pmatrix} \alpha\_0 & \beta\_0 & 0 & \cdots & 0 \ \gamma\_1 & \alpha\_1 & \beta\_1 & \cdots & 0 \ 0 & \gamma\_2 & \alpha\_2 & \cdots & 0 \ \vdots & \vdots & \vdots & \ddots & \beta\_{n-2} \ 0 & 0 & 0 & \gamma\_{n-1} & \alpha\_{n-1} \end{pmatrix} \begin{pmatrix} u\_0 \ u\_1 \ u\_2 \ \vdots \ u\_{n-1} \end{pmatrix} = \begin{pmatrix} r\_0 \ r\_1 \ r\_2 \ \vdots \ r\_{n-1} \end{pmatrix} \end{align}
$$

이 삼대각 선형시스템의 해는 일반적으로 $\mathcal{O}(n)$의 연산으로 효율적으로 구할 수 있으며, 전역 다항식 보간처럼 고차에서 발생하는 폭발적 condition number 문제를 완화한다.

#### 고차 다항식과 스플라인의 미분 연속성

전역 다항식은 자연스럽게 모든 차수에 대해 매끄럽다. 예컨대 어떤 다항식 $p(x)$가 $n$차라면, 적어도 $n$차 미분까지 계속 정의가 가능하고 전체 구간에서 모두 연속이다. 하지만 스플라인은 구간별로 따로 정의된 다항식을 이어붙이므로, 매끄러운 접합 조건을 부과해야만 특정 차수 이상에서의 연속성을 보장받는다.

예를 들어 3차 스플라인을 사용할 때, 보통은 함숫값(0차), 1차 미분, 2차 미분의 연속성에 대한 조건이 주어진다. 이로써 곡면이나 곡선을 다룰 때 중요한 매끄러움이 확보된다. 실제 응용에서 2차 미분까지 연속이면 충분한 경우가 대부분이다. 그러나 만약 다른 차수 스플라인(예: 4차, 5차)을 쓴다면, 그만큼 더 높은 미분 연속성을 기약할 수 있지만, 동시에 계수 계산도 복잡해진다.

#### 노드 선택과 스플라인

스플라인 보간을 한다고 해서 어떤 노드를 골라도 된다는 의미는 아니다. 다항식 보간에서처럼 노드가 극단적으로 밀집하거나 지나치게 등간격이 되면, 국소적인 안정성은 유지하더라도 일부 구간에서 스플라인의 형태가 과도한 굴곡을 보일 수 있다. 하지만 전역 차수가 높아질 때처럼 극단적인 진동(Runge 현상)이 전 구간에 걸쳐 나타나는 일은 훨씬 적다. 다만 스플라인을 구성할 때에는 노드 간격, 경계 처리, 미분값의 초기 조건 등이 합리적으로 설계되어야 하고, 주어진 데이터가 자칫하면 국소적으로 특이한 기울기를 유도할 수 있다는 점을 유념해야 한다.

#### B-스플라인과 더 고급 기법

스플라인 보간을 좀 더 체계적으로 다루기 위해 B-스플라인(basis spline)이라는 개념을 쓴다. B-스플라인은 일정한 차수의 ‘기저함수(basis function)’들을 선형결합하여, 전체 보간곡선을 표현하는 방식이다. 이는 각 기저함수들이 국소 지원(compact support) 특성을 가져서, 특정 구간에서만 값이 0이 아니고 다른 구간에서는 0이 되는 형태를 갖는다. 이 특성 덕분에, 국소적인 수정이 전체 곡선에 파급되지 않고 원하는 구간에서만 제한적으로 영향을 주게 된다.

B-스플라인을 통해, 스플라인의 정의와 경계 조건 부여가 더욱 편리해지고, 나아가 곡선 피팅(curve fitting)을 비롯한 CAD/CAM 분야에서 널리 쓰이는 NURBS(Non-Uniform Rational B-Splines)와 같은 일반화된 형태로 확장되기도 한다.

#### 다항식 vs. 스플라인 선택 기준: 구체적 고려사항

두 방식은 모두 주어진 데이터를 정확히 지나가는 보간 함수를 만들어낸다는 목적을 공유한다. 그러나 보간해야 할 함수값의 개수, 노드의 분포, 매끄러움(smoothness) 요구 정도, 연산 비용, 국소 수정 가능성 등의 다양한 측면에서 각기 다른 특성을 보인다. 일반적으로 노드가 적고 구간이 넓지 않은 경우에는 다항식 보간이 비교적 단순하고 빠른 접근이 될 수 있다. 그러나 노드가 많아질 때 생길 수 있는 전역적 오실레이션과 수치적 불안정성을 피하고자 한다면, 스플라인 보간이 좀 더 견고한 선택이 된다.

**노드 개수와 분포**

다항식 보간은 $n+1$개 노드가 주어졌을 때 차수 $n$의 다항식을 쓴다. 노드 수가 증가할수록 보간 다항식 차수도 같이 높아지므로, 런게 현상(Runge's phenomenon)처럼 불규칙한 진동이 급격히 커질 위험이 있다. 노드 분포를 적절히 배치(예: 체비쇼프 노드)하면 어느 정도 완화할 수 있지만, 여전히 노드 수가 크게 늘어나는 상황에서는 높은 차수로 인한 오차나 계산 불안정성이 문제될 수 있다.

스플라인 보간은 노드가 많아지더라도 구간별로 낮은 차수를 유지하기 때문에, 전역적 오차 급증보다는 국소적 문제에 초점을 두는 경향을 지닌다. 노드가 적절히 배치된다면, 데이터가 증가해도 각 구간의 오차 통제가 비교적 용이하고, 전 구간에 일어나는 무분별한 진동 현상이 발생하기 어렵다.

**매끄러움 요구 정도**

고차 다항식은 구간 전체에서 자동으로 모든 차수의 미분이 연속적이 된다. 따라서 매우 높은 매끄러움이 필요한 상황(예: 매우 스무스한 함수로써 특정 미분값까지 동시 만족해야 하는 경우)에서는 다항식이 간단한 해법이 될 수 있다. 다만 노드가 많고 구간이 커질 때 동일한 매끄러움을 유지하면서도 오차를 제어하기가 쉽지 않다.

스플라인은 구간별 연결부에서의 연속 조건을 의도적으로 설계할 수 있으므로, 원하는 차수까지만 미분 연속성을 보장해도 되는 경우에 적합하다. 예를 들어 3차 스플라인을 쓴다면, 2차 미분까지 부드럽게 연결되는 조건만 만족하면 되므로 실질적인 매끄러움 확보와 오차 제어 간의 균형을 잡기가 용이하다.

**연산 비용과 수치 안정성**

전역 차수 $n$인 다항식을 구하려면 $(n+1) \times (n+1)$ 크기의 시스템을 풀어야 하고, 노드가 늘어나 차수가 높아질수록 condition number가 커져 수치적 불안정성이 유발된다. 반면 스플라인 보간에서는 구간별 3차(또는 그 이하) 다항식을 정의하고, 연결 조건을 통해 형성된 삼대각형 구조의 선형시스템을 풀면 된다. 이 시스템은 $\mathcal{O}(n)$에 해결할 수 있고, 노드 수가 많아도 전역 고차 다항식만큼 불안정해지지 않는다.

**국소 수정과 설계의 유연성**

다항식 보간은 전역성이 높다. 하나의 구간에서 노드를 조금만 움직이거나 함수값을 약간 수정해도, 전 구간에 대응하는 다항식이 크게 변할 수 있다. CAD/CAM 설계나 곡선 피팅 과정에서, 이런 전역적 민감성은 때로 불편함을 야기한다.

스플라인 보간은 특정 구간에서만 국소적으로 다항식을 조정할 수 있으므로, 나머지 구간에 대한 영향이 최소화된다. 이는 곡면 모델링이나 그래픽스, 심지어 데이터 조정 등의 실무에서 수정을 반복할 때 매우 큰 이점으로 작용한다.

**실제 현장에서의 사용 예시**

간단한 함수 보간 문제나 노드가 소수일 때, 그리고 구간이 협소해 런게 현상의 위험이 크지 않은 경우에는 전역적 다항식 보간이 계산도 빠르고 구현도 편리하다. 반면 측정 데이터가 많은 실험 환경이나, 산업용 곡면 및 모델링에 활용할 때는 스플라인의 국소 안정성이 유리해지는 경우가 많다. 특히 오차 통제가 까다롭고, 국소적 수정이 잦은 응용에서는 스플라인 계열(또는 B-스플라인, NURBS 등)이 사실상 표준으로 채택되는 경향이 있다.

#### 간단한 예시: Octave에서 다항식 vs. 스플라인 보간

아래는 Octave에서 간단히 다항식 보간과 스플라인 보간을 시연하는 예시다. 노드는 5개 정도로 설정하고, 보간 결과를 비교해본다.

```octave
% 예시: 간단한 다항식 보간 vs. 스플라인 보간
xData = linspace(-1, 1, 5);
yData = 1./(1 + 25*xData.^2);   % Runge 함수 형태

% 고차 다항식 보간
% polyfit 명령어는 (degree = #nodes-1) 차수로 피팅
pCoeff = polyfit(xData, yData, length(xData)-1);

% 스플라인 보간
splineObj = spline(xData, yData);

% 세밀한 샘플 포인트
xFine = linspace(-1, 1, 200);
yPoly = polyval(pCoeff, xFine);
ySpline = ppval(splineObj, xFine);
yTrue = 1./(1 + 25*xFine.^2);

% 결과 시각화
figure;
plot(xData, yData, 'bo', 'MarkerFaceColor', 'b'); hold on;
plot(xFine, yTrue, 'k--', 'LineWidth', 1);
plot(xFine, yPoly, 'r-', 'LineWidth', 1);
plot(xFine, ySpline, 'g-', 'LineWidth', 1);
legend('주어진 데이터','실제 함수','다항식 보간','스플라인 보간',...
       'Location','best');
title('다항식 vs. 스플라인 보간');
grid on;
```

이 코드를 실행해 보면, 다항식 보간(빨간 곡선)은 노드가 5개밖에 없으므로 크게 문제되지는 않지만, 만일 노드가 10개, 15개로 늘어나면 전역 오실레이션이 두드러지게 발생할 수 있다. 반면 스플라인 보간(녹색 곡선)은 노드가 늘어나도 비교적 안정적인 곡선을 보여준다.

#### 스플라인의 다양한 변형과 활용

스플라인 보간 기법은 단순히 ‘3차 스플라인’에만 국한되지 않고, 실제 문제 상황이나 데이터 특성에 따라 다양한 변형을 시도할 수 있다. 예를 들어, 구간별 다항식 대신 조각별 유리함수(rational function) 형태를 허용하거나, 보간보다는 근사(approximation)에 중점을 두는 스플라인도 존재한다. 또 계수가 갖는 제약을 활용하여, 함수가 갖는 단조성(monotonicity)이나 볼록성(convexity)을 지키도록 하는 ‘shape-preserving spline’ 기법들도 연구되고 있다.

**Hermite 스플라인(Hermite spline)**

단순히 두 인접한 노드에서의 함수값뿐 아니라, 그 노드에서의 미분값(기울기)까지 동시에 만족하도록 구간별 다항식을 설정하는 기법이다. 즉, $s\_k(x\_k) = f(x\_k)$, $s\_k'(x\_k) = f'(x\_k)$ 형태의 조건도 함께 고려해, 각 구간을 좀 더 부드럽게 이을 수 있다. 이때 노드마다 미분값이 정확히 주어지지 않는다면, 인접 노드의 데이터를 근사적으로 사용하여 추정할 수 있다(예: finite difference).

Hermite 스플라인은 1차 미분값을 명시적으로 활용하기 때문에, 단순 3차 스플라인에 비해 국소적인 구간의 곡선 형상을 제어하기가 수월하며, 응용 분야에 따라 다양한 형태로 변형될 수 있다.

**PCHIP, Akima 스플라인 등**

일반적인 큐빅 스플라인은 2차 미분까지 연속인 점에서 장점을 가지나, 노드간 기울기의 급격한 변화가 있을 경우 과도한 오버슈트(overshoot)가 생길 수 있다. 이를 완화하기 위해, 각 구간 기울기를 좀 더 신중하게 결정하는 방식의 스플라인들이 제안되었다.

예컨대 PCHIP(Piecewise Cubic Hermite Interpolating Polynomial)은 데이터가 단조(monotonic)하게 변하는 구간에서는 오버슈트를 방지하기 위해 기울기를 조절한다. Akima 스플라인 역시 근방 노드의 기울기를 일정 규칙으로 결합하여, 극단적 오실레이션을 줄이도록 고안된 방식이다. 이런 기법들은 공학적·실무적 데이터 처리에서 ‘자료가 급변하지 않도록 부드럽게 보간’을 달성하는 데 자주 쓰인다.

**B-스플라인과 NURBS**

스플라인 보간을 보다 일반화해, 각 구간에서의 기저함수로서 B-스플라인을 쓰면, 국소 특성과 수치적 편의성을 동시에 얻을 수 있다. B-스플라인은 ‘knots(매듭점)’로 불리는 분할점에 따라 정의되며, 각 기저함수들의 지지영역(support)이 좁기 때문에 특정 구간 조정이 용이하다.

이를 좀 더 확장하면 NURBS(Non-Uniform Rational B-Splines)처럼, 가중치(weight)와 유리함수를 결합한 형태도 활용할 수 있다. NURBS는 CAD/CAM, 그래픽스 분야에서 표준으로 통용되며, 원(円)이나 곡선의 원활한 표현이 가능하다. 이런 분야에서는 단순 보간 오차뿐 아니라, 곡선/곡면의 형상 설계가 매우 중요하기 때문에, 스플라인 계열의 유연성이 큰 이점이 된다.

#### 최적 근사와 다항식 보간

앞서 다항식 보간은 보간점을 모두 정확히 통과한다는 점에서, $n+1$개의 노드를 갖는 문제에 대해 차수 $n$의 다항식이 유일하게 정해진다. 그러나 실용적으로는 노이즈를 포함한 실험 데이터나 측정값의 경우, 보간보다 근사가 더 합리적인 방법이 될 수 있다.

예컨대 최소제곱법(least squares method)은 모든 점을 정확히 통과하기보다, 전체 오차를 제곱합 측면에서 최소화하는 ‘근사’를 만든다. 고차 다항식 근사를 적용할 수도 있고, 스플라인 기반으로 부분 구간별 근사를 수행할 수도 있다. 이때 스플라인 근사가 주는 장점은 여전히 국소적 접근과 적절한 매끄러움을 골고루 유지하면서, 실제 데이터를 부드럽게 표현할 수 있다는 점이다.

#### 에러 분석의 관점에서 본 선택 기준

다항식 보간은 폴리노미얼 스페이스에서의 유일한 보간 함수를 제공하지만, 최악의 경우 데이터가 약간만 변해도 큰 오차가 전역적으로 발생할 수 있다. 특히 노드 수가 많아지면 런게 현상에 의해 오차가 폭발적으로 커질 수 있다는 점이 문제다.

스플라인 보간의 오차 분석은 각 구간 내에서 낮은 차수의 오차 항에 대한 고전적 이론을 참고하며, 전 구간적 오차가 균등하게 악화되는 일은 비교적 드물다. 다만 구간별 해석이 필요하고, 노드 사이에 특이성이 있을 경우(예: 기울기의 급격한 변화) 해당 구간의 오차가 고르게 분산되지 않고 특정 영역에 몰릴 수 있다.

#### 실무 현장에서의 선택 가이드

노드가 매우 많고, 데이터를 국소적으로 조정해야 하거나, 매끄러움에 대한 세밀한 제어가 필요한 경우에는 스플라인(특히 3차 큐빅 스플라인) 또는 B-스플라인 계열을 주로 택한다. 문제가 단순하며 노드가 몇 개 없을 경우, 가령 극소 구간에서의 보간을 빠르게 처리해야 한다면, 다항식 보간이 오히려 구현이 간단할 수 있다. 다만 노드가 조금이라도 늘어나면 바로 스플라인으로 전환할 가능성이 커진다.

#### 추가 고찰: 외삽(Extrapolation) 문제와 경계 처리

보간(interpolation)은 기본적으로 주어진 노드 구간 안에서 함수값을 맞추는 문제이지만, 실무나 연구에서 구간 밖의 값을 추정해야 하는 외삽(extrapolation)도 자주 고려된다. 다항식 보간은 구간 밖에서 값이 빠르게 발산하거나(차수가 높을수록 더욱 그렇다), 매우 급격히 진동하는 현상을 보일 수 있다. 스플라인 보간 역시 구간 밖으로 벗어나면 보장된 구간 안에서의 국소 안정성이 깨지므로, 원래 의도와는 다르게 곡선이 예측 불가능한 방향으로 뻗어갈 수 있다.

다만 전역 고차 다항식이 구간 밖에서 보이는 급격한 오실레이션이나 폭발적 값에 비해서, 스플라인 보간은 각 구간이 독립적인 낮은 차수로 구성되므로 경계 바로 바깥 구간에서의 불안정성이 다소 완화되는 편이다. 그럼에도 보간은 본질적으로 ‘구간 내부 적합성’에 최적화되어 있으므로, 외삽이 중요하다면 적절한 사전 모델링이나 다른 회귀(regression)·근사 기법 등을 활용할 필요가 있다.

#### 경계 조건에 대한 주의

스플라인 보간에서 양단(endpoints) 경계 조건을 어떻게 두느냐에 따라, 전체 곡선의 형태와 오차 특성이 크게 달라진다. 자연(natural) 스플라인의 경우 두 끝단의 2차 미분값을 0으로 두어 가장 단순하게 처리하는 반면, 물리적 모델링이나 CAD에서 특정 기울기가 요구되면 클램프(clamped) 방식으로 1차 미분값을 명시적으로 부여한다. 어떤 경우에는 주기적(periodic) 스플라인이 필요한데, 이때는 양단을 연결해 매끄러운 주기성을 강제하므로, 주기 신호나 폐곡선(closed curve) 형성에 유리하다.

다항식 보간 역시 경계 정보가 주어지는 경우(예: 보간과 동시에 미분값도 맞추고자 하는 경우), 단순한 라그랑주나 뉴턴 보간의 형태를 넘어 Hermite 다항식 보간 같은 확장된 접근을 고려해야 한다. 하지만 고차 다항식으로 이런 경계·미분 조건을 동시에 만족시키는 것은 구간이 커질수록 불안정한 시스템을 일으키는 경향이 있다.

#### 고차 스플라인과 스플라인 차수의 선택

스플라인을 구성할 때 3차(cubic)보다 더 높은 차수를 택하면, 매끄러움 측면에서는 더 고차의 미분 연속성까지 확보할 수 있다. 그러나 차수가 올라가면 각 구간별 계수 결정에 필요한 조건이 많아지고, 오버슈트나 진동 문제가 다시 커질 수도 있다. 구간을 세분화하고 3차 이하의 안정적인 다항식을 사용하는 것이 여러모로 실용적이어서, 실제로 가장 널리 보급된 것이 3차(큐빅) 스플라인이다.

#### 다차원 확장

지금까지는 1차원 구간을 기준으로 다항식 vs. 스플라인 보간을 논했지만, 고차원 문제에도 보간이 적용될 수 있다. 예컨대 2차원에서의 표면(surface) 보간이나, 3차원 모델링에 대한 체적 보간 문제가 대표적이다. 이때 전역 다항식을 직접 쓰는 것은 차원 상승에 따른 복잡도와 민감도가 매우 커지는 탓에 실무적으로 곤란하다. 대신 2차원·3차원 스플라인, B-스플라인 파치(patch) 기법, 또는 NURBS가 실제 설계환경에서 널리 채택된다.

***

전역 고차 다항식 보간은 노드 수가 적을 때 간단명료하게 사용할 수 있지만, 노드가 늘어날수록 전역 오실레이션과 조건수 악화를 피하기 어렵다. 반면 스플라인 보간은 구간을 적절히 쪼개어 비교적 낮은 차수 다항식을 연결하므로, 국소적 안정성을 확보하고 계산 구조가 단순하다. 매끄러움 요구나 경계 조건 설정, 노드 선택, 고차원 문제 확장 등 다양한 측면에서, 실제 문제 상황에 맞춰 두 접근 방식을 적절히 활용하면 된다.
