Loading [MathJax]/jax/output/CommonHTML/jax.js

주어진 데이터를 interpolation을 할 때 3차 spline을 많이 사용한다. 그럼 왜 3차 일까? 데이터를 연결하는 spline은 되도록이면  부드럽게 연결되어야 한다. 곡선이 부드럽게 그려지기 위해서는 급격한 꺾임이 없어야 하는데 얼마나 급격히 꺾이는가는 곡률에 비례하고, 곡률은 그 지점에서 함수의 두 번 미분값에 비례한다.(곡선의 곡률: https://kipl.tistory.com/105) 따라서 어떤 함수 f(x)가 구간 [a,b]에서 얼마나 부드럽게 연결되는가에 대한 척도는 곡선의 각부분에서 곡률의 크기의 제곱을 를 더한  다음 (음수가 아닌) 적분이 제공할 수 있다.

κ[f]=ba(f(x))2dx

axb 구간에서 균일하게 샘플링된 데이터가 있고 이들을 보간하는  3차 spline이 S(x)={Si(x)=aix3+bix2+cix+di}라고 하자. 또 두 번 이상 미분가능한 임의의 함수 f(x)도 주어진 샘플링 데이터를 지나가는 보간함수라고 하자. 이 경우 natural cubic spline이 주어진 sampling 데이터를 지나가면서 가장 부드럽게 이어지는 곡선임을 보일 수 있다.

κ[f]κ[S] f

Spline S와 함수 f의 차이를 h(x)=f(x)S(x)라 하면 각 node에서 h(xi)=0이다. 이제 

κ[f]=ba(h(x)S(x))2=κ[h]+κ[S]2bah(x)S(s)dx

그런데, cubic spline의 경우 각 node에서 2차 미분이 연속이므로  

bah(x)S(x)dx=h(x)S(x)|babah(x)S(x)dx=h(b)S(b)h(a)S(b)ixi+1xih(x)Si(x)dx=h(b)S(b)h(a)S(a)ixi+1xih(x)(6ai)dx=h(b)S(b)h(a)S(a)6iai[h(xi+1)h(xi)]=h(b)S(b)h(a)S(a)  κ[f]=κ[h]+κ[S]+h(b)S(b)h(a)S(a)

임의의 곡선 h에 대해서 κ[h]0이므로, 양끝에서 2차 미분이 S(a)=S(b)=0으로 고정된 natural cubic spline은  

κ[f]κ[S]

이므로 주어진 샘플링 데이터를 곡률척도가 가장 작게 즉, 가장 부드럽게 보간하는 곡선임을 알 수 있다.

728x90

'Computational Geometry' 카테고리의 다른 글

Derivatives of Bezier Curves  (1) 2024.04.12
Least Squares Bezier Fit  (0) 2024.04.05
Natural Cubic Spline  (0) 2024.03.11
Approximate Distance Between Ellipse and Point  (0) 2024.03.08
Distance from a Point to an Ellipse  (0) 2024.03.06
,