알고리즘

Bicubic Spline interpolation

Small Octopus 2016. 7. 18. 17:41

참조 : 숙명 여대  보간법.ppt 5장


1. Spline 보간법이란?

주어진 점들 사이를 함수의 구간으로 정의하고 이 사이를  저차 다항식으로 연결하는 방법.

구간 연결 다항식 ~ 스플라인 함수


2. 장단점 

- 일반적으로 완만하게 보간하지만 특정구역에서 급격히 변하는 경우도 있다.

- 국부적으로 급격히 변화하는 함수에 우수한 근사값을 제공한다.



3. 조건

주어진 구간 [a, b]가 와 같이 n-1개의 소구간 으로 이루어졌을 때 차수가 k인 spline함수 s(x)는 

다음 조건을 만족해야한다.

- s(x)는 소구간에서 k차 이하의 다항식으로 표현된다.

- s(x), s'(x), s''(x),..등의 도함수들은 구간 [a, b]에서 연속이어야 한다.

위 두 조건을 만족하는 최소의 차수는 3차로서, 모든 소구간에서 3차 다항식으로 표시되는 함수를 3차 spline함수라고 한다.


4. 3차 spline 함수, cubic spline

점 로 주어지는 i번째 소 구간에 대한 3차식의 일반형은 다음과 같다.

이제 목적은 i번째 a, b, c, d을 구하는 것이다.

점 을 지나야 함으로 

s(x)을 미분해보면 아래와 같다.

점 을 위 미분식에 대입해보면

계수를 구해 보면, 에 대하여 정리

이렇게 계수를 구하고 원식 s(x)에 대입하여 풀면 끝 그러나 계수를 구하려면 

을 알아야한다.

는 구간을 담당한다.

즉, 앞 구간의 끝과 다음 구간의 시작은 값이 당연히 같으며 미분치 또한 같아야한다.

수식으로 써보면 이며 이다.

위 식에 ai-1, bi-1, ci-1을 대입하면

위 수식을 보면 3개의 구간  i-1, i, i+1에 대한 수식으로 3개의 곡선 함수 si-1 , si, si+1이 함쳐져 있다.

직관적으로 풀어보자면 두 구간 평균 기울기의 차-> 곡률 은  2차 미분과 같아야 한다.

i = 2,...., n-1을 대입하면  s = s''로 간략하게 씀


행렬식으로 표현하면 

위 식을 풀면 s1,....,sn 까지 구할 수 있다. 그런데 구해진 s1과 sn은 사용안하고 따로 구하는 것 같다.

아무래도 앞뒤가 짤린채로 제대로된 수학식이 유도 안됐기 때문일 것 같다 이점은 나중에 알게되겠지...

s1과 sn을 설정하는 방법은 3가지가 있다고 한다.

1. s1 = sn = 0 : 곡률이 0인경우는 직선, 그러니까 구간 이전/이후에 연결되는 성분을 직선으로 본경우

->h1과 hn-1을 없는 셈 치고 s를 계산

2. s1 = s2 , sn = sn-1 : 곡률이 같은 경우는 ax^2 -> 2a 이차 곡선이다. 3차 이상부터 곡률이 달라짐, ax^3 의 곡률은 6ax

계수 a = 0 이된다.

h1s1 + 2(h1+h2)s2 + h2s3 =  (3h1+2h2)s2 + h2s3 , 첫번째 마지막 열 지움.

3. 외삽법: s1은 s2와 s3을 sn은 sn-1과 sn-2을 사용 직선을 연장하여 새로운 점을 구하는 것 같은데 정확히 모르겠음.


5. Example

s1과 sn을 설정하는 법에 따른 오차 비교

위에서 s1 = s2, sn = sn-1일때 5 가 행렬안에 있는이유는 s1과 s2가 합쳐지고 sn-1과 sn이 합쳐져서이다!