수치해석학에서의 B-스플라인
글과 수식이 읽기 싫으면 그냥 그림으로 보고 이해해도 무방하다.
정의 1
구간 를 와 같은 노드 포인트들로 쪼갰다고 하자. 주어진 자유도 에 대해서 과 의 추가적인 노드를 생각한다. 번째 노드 포인트와 자유도 에 디펜드하는 재귀함수 를 정의하자. 이에 대해 주어진 데이터를 인터폴레이트하는 스플라인 를 B-스플라인b-Spline이라 한다.
정리
- [1]: 주어진 데이터에 대해 B-스플라인은 유일하다.
- [2]: 에 대해
- [3]: 모든 에 대해
- 는 영역 에 대해 과 같이 정의된 지시 함수를 나타낸다.
설명
B-스플라인 이란 스플라인 중에서도 베이시스를 가지고 피스와이즈 폴리노미얼 인터폴레이트를 하는 스플라인을 말한다. 함수 는 원래의 주어진 함수를 재구축하는 B asis라는 의미에서 라는 알파벳을 사용한다.
정리에 대한 설명
증명은 생략한다.
실용성으로 말할 것 같으면 컴퓨터 그래픽을 위시한 응용분야가 넓고 이론적으로도 수학적으로 좋은 성질들을 풍부하게 가져서 B-스플라인만으로도 책 한 권이 나온다. 이것을 포스트 하나만으로 자세하게 설명하는 건 너무 어렵고, 어떤 개념인지 간단하게 체크만 해보도록 하자. 정의만 봤을 땐 손도 못 댈만큼 난해한 것으로 보이지만 실제 개념 자체는 그렇게 어렵지 않다.
- [1]: 스플라인 이전에 인터폴레이션으로써의 기본 소양이다. 들의 유일성을 보이는 방법은 본질적으로 폴리노미얼 인터폴레이션과 다른 점이 없으며, 실제로 받아들일 때의 차이점은 함수공간을 상상할 수 있느냐 없느냐 뿐이다. 그나마도 실제로는 함수공간을 다루는 것이 아니므로 함수공간에 익숙하지 않아도 상관 없다.
- [2]: 가 저렇게 정의가 된 이유이자, 베이시스가 리니얼리 인디펜던트 하다는 것을 보장하는 근거다. 무슨 소리인지 이해가 잘 안 가더라도 그림만 보면 딱 이해가 될 것이다.
- [3]: 함수값의 스케일이 정해져있으면서 특히 음수가 되지 못한다는 것은 실제 함수값에 대한 인터폴레이팅은 사실상 계수 에만 달려있다는 말이 된다. 함수의 모양에 일일이 신경쓸 필요가 없다는 것은 B-스플라인이 다루기 좋은 또 다른 이유다.
시각적 이해
예시를 시작하기에 앞서 언급하자면 사실 원래의 B-스플라인이 커버하는 노드는 위의 정의보다 훨씬 가혹해도 상관없다. 서로 같은 점이 있어도 되고, 추가적인 노드는 상상 이상으로 자유롭다. 그러나 이해를 돕기 위해 예시에서는 유니폼한 간격으로 주어진 노드만을 생각할 것이다.
자유도 일 때 데이터를 인터폴레이트하기 위한 은 위와 같은 모양을 한다. 이들의 결합으로써 원래의 데이터를 인터폴레이트한다는 것은 말 그대로 그냥 사각 기둥의 높이만 바꿔서 대충 맞추는 것이다. 그러나 함수들의 선형결합으로써 원래의 데이터를 복원한다는 아이디어를 설명하기에는 더할나위 없다.
자유도 일 때 는 위와 같은 모양을 가짐을 수식적으로 쉽게 확인할 수 있다. 단, 쉬운 것과 간단한 것은 다르다는 사실을 유념하도록 하자. 자유도 일때와 비교해봤을 때 는 조금은 덜 각진 모양을 할 것이다. 참고로 그림에는 따로 표현하지 않았지만 자유도가 늘어남에 따라 과 같은 추가적인 노드는 계속 생겨나며, 그 곳에서의 역시 새롭게 만들어진다.
자유도 일 때 는 구간별로 쿼드러틱하다. 물론 재귀적으로 정의된 의 특성상 전 구간에서 이차함수라는 보장은 없으며, 실제로 안 되는 경우가 대부분일 것이다. 위의 예시들과 가장 크게 달라진 것은 드디어 곡선이 되었다는 것이다.
B-스플라인 이란 위와 같이 특정 구간에서 다루기 쉽고 그 외에는 함수값이 모조리 인 함수들의 선형결합으로 인터폴레이트하는 함수다. 그래서 정의는 복잡하게 쓰여지지만 실제 개념은 저런 걸 더 많이, 더 나쁜 조건에서 똑같은 일을 반복하는 것에 지나지 않는다.
같이보기
Atkinson. (1989). An Introduction to Numerical Analysis(2nd Edition): p173. ↩︎