수치해석학에서의 B-스플라인 B-Spline in Numerical Analysis

수치해석학에서의 B-스플라인 B-Spline in Numerical Analysis


🚧 이 포스트는 아직 이관 작업이 완료되지 않았습니다 🚧

구간 $[a,b]$ 를 $a \le x_{0} < x_{1} < \cdots < x_{n} < \cdots x_{N} \le b$ 와 같은 노드 포인트들로 쪼갰다고 하자. 주어진 자유도 $K$ 에 대해서 $x_{-K} < x_{-K + 1} < \cdots < x_{-1} < x_{0}$ 과 $x_{N} < x_{N + 1} < \cdots < x_{N+K-1} < x_{N+K}$ 의 추가적인 노드를 생각한다. $i$번째 노드 포인트와 자유도 $1 \le k \le K$ 에 디펜드하는 재귀함수 $$ \displaystyle B_{i,k}(x) := \begin{cases} \chi_{[x_{i} , x_{i+1} )} (x) & , k=1 \\ {{ x - t_{i} } \over {t_{i+k-1} - t_{i} }} B_{i , k-1} (x) - {{ x - t_{i+k} } \over {t_{i+k} - t_{i+1} }} B_{i+1, k-1} (x) & , k > 1 \end{cases} $$ 를 정의하자. 이에 대해 주어진 데이터를 인터폴레이트하는 스플라인 $\displaystyle \sum_{i=-3}^{n-1} \alpha_{i} B_{i , K} (x)$ 를 B-스플라인이라 한다.

[1]** 주어진 데이터에 대해 B-스플라인은 유일하다.

실용성으로 말할 것 같으면 컴퓨터 그래픽을 위시한 응용분야가 넓고 이론적으로도 수학적으로 좋은 성질들을 풍부하게 가져서 B-스플라인만으로도 책 한 권이 나온다. 이것을 포스트 하나만으로 자세하게 설명하는 건 너무 어렵고, 어떤 개념인지 간단하게 체크만 해보도록 하자. 정의만 봤을 땐 손도 못 댈만큼 난해한 것으로 보이지만 실제 개념 자체는 그렇게 어렵지 않다.

[1]** 스플라인 이전에 인터폴레이션으로써의 기본 소양이다. $\alpha_{i}$ 들의 유일성을 보이는 방법은 본질적으로 폴리노미얼 인터폴레이션과 다른 점이 없으며, 실제로 받아들일 때의 차이점은 함수공간을 상상할 수 있느냐 없느냐 뿐이다. 그나마도 실제로는 함수공간을 다루는 것이 아니므로 함수공간에 익숙하지 않아도 상관 없다.

예시를 시작하기에 앞서 언급하자면 사실 원래의 B-스플라인이 커버하는 노드는 위의 정의보다 훨씬 가혹해도 상관없다. 서로 같은 점이 있어도 되고, 추가적인 노드는 상상 이상으로 자유롭다. 그러나 이해를 돕기 위해 예시에서는 유니폼한 간격으로 주어진 노드만을 생각할 것이다.

20190415\_145943.png 자유도 $k=1$ 일 때 데이터를 인터폴레이트하기 위한 $B_{i,1}$ 은 위와 같은 모양을 한다. 이들의 결합으로써 원래의 데이터를 인터폴레이트한다는 것은 말 그대로 그냥 사각 기둥의 높이만 바꿔서 대충 맞추는 것이다. 그러나 함수들의 선형결합으로써 원래의 데이터를 복원한다는 아이디어를 설명하기에는 더할나위 없다.

20190415\_145953.png 자유도 $k=2$ 일 때 $B_{i,2}$ 는 위와 같은 모양을 가짐을 수식적으로 쉽게 확인할 수 있다. 단, 쉬운 것과 간단한 것은 다르다는 사실을 유념하도록 하자. 자유도 $k=1$ 일때와 비교해봤을 때 $\displaystyle \sum_{i=-3}^{n-1} \alpha_{i} B_{i , K} (x)$ 는 조금은 덜 각진 모양을 할 것이다. 참고로 그림에는 따로 표현하지 않았지만 자유도가 늘어남에 따라 $x_{-1} = -1$ 과 $x_{5} = 5$ 같은 추가적인 노드는 계속 생겨나며, 그 곳에서의 $B_{i,2}$ 역시 새롭게 만들어진다.

20190415\_150000.png 자유도 $k=3$ 일 때 $B_{i,3}$ 는 구간별로 쿼드러틱하다. 물론 재귀적으로 정의된 $B_{i,k}$ 의 특성상 전 구간에서 이차함수라는 보장은 없으며, 실제로 안 되는 경우가 대부분일 것이다. 위의 예시들과 가장 크게 달라진 것은 드디어 곡선이 되었다는 것이다.

B-스플라인 이란 위와 같이 특정 구간에서 다루기 쉽고 그 외에는 함수값이 모조리 $0$ 인 함수들의 선형결합으로 인터폴레이트하는 함수다. 그래서 정의는 복잡하게 쓰여지지만 실제 개념은 저런 걸 더 많이, 더 나쁜 조건에서 똑같은 일을 반복하는 것에 지나지 않는다.

같이보기

댓글