본문 바로가기

수학/수치해석

[수치해석 13] 스플라인 보간법

고차 다항식을 이용하는 보간법은 반올림 오차, overfit / overshoot으로 인해 틀린 결과가 발생할 수도 있다.

따라서 이를 구간으로 나눠 저차 다항식인 스플라인 함수를 이용하여 해결한다.

스플라인은 휘어지는 자를 의미하는데, 몇개 점으로 곡선을 만드는 의미로 그래픽스 등에서 사용된다.

좌 : spline . https://en.wiktionary.org/wiki/spline    우: 과적합(overfit)

 

스플라인 보간법

보간 대상이 되는 구간을 여러개의 구간으로 나누고, 이를 저차 다항식인 스플라인 함수(spline function)으로 구성하여 해결하는 방식으로, 각 구간마다 서로 다른 스플라인 함수를 가진다.

위 그림의 경우 구간의 개수가 n개일 때 점은 n + 1개가 필요하며, 각 구간마다 스플라인 함수 Si(x) 를 가진다.

기본적으로 스플라인은 각 구간을 구분하는 변수( 위 그림에서는 x) 에 대해 정렬되어 있어야 생성할 수 있다. 따라서 위의 그림같이 x0 .... xn 은 오름차순으로 정의되는 것이 좋다.

1차 스플라인(Linear Splines)

정렬된 데이터들에 대해 선형 식으로 스플라인을 정의하는 방법으로, 각 구간에 대해 두 점을 지나는 직선을 개별 구간마다 정의한다. 1차 스플라인의 경우 구간 내에서 직선 형태로 나타나므로, 인접한 스플라인이 만나는 지점인 절점(knot) 에서의 기울기가 급격하게 변하게 된다 (1차 도함수가 불연속적이다). 

 

 

ex) x=5 일때 함수 값 계산

 

2차 스플라인 (Quadratic Splines)

각 구간을 2차식을 이용하여 스플라인 보간하는 방법이다. 이때 스플라인 다항식은 2차식이므로,  fi(x) = aix2  bix + ci 으로 정의할 수 있다. 따라서 각 구간에는 a, b, c 로 3개의 미지수를 가지는데, n개의 구간을 가진다면 총 3*n 개의 미지수가 존재하게 된다. 이런 이유로, 2차 스플라인을 구하기 위해서는 3*n개의 연립 방정식이 필요하다.

2차 스플라인 다항식에 대해 다음과 같은 규칙이 적용된다.

1. 내부 절점(knot)에서 이웃한 다항식의 함수값들은 같아야 한다.

내부 절점은 양 끝점을 제외하면 n - 1 개이다. 이때 하나의 절점에 대해 2개의 식이 발생하여 2n - 2 개의 식을 얻는다.

 

2. 함수는 첫 점과 끝점을 지나야 한다.

2개의 식을 얻는다. 총 2n개의 식을 얻었다.

 

3. 내부 절점에서의 1차 도함수는 연속이어야 한다. 즉, 이웃한 다항식의 1차 도함수는 같다.

내부 절점은 n-1개이므로, 식 역시 n-1개이다. 총 2n + n - 1 = 3n-1 개의 식을 얻는다.

 

4. 첫 점에서의 2차 도함수를 0이라 가정한다.

3번 식까지 총 3n - 1 개의 식을 얻었기 때문에 1개의 식이 부족하여 임의로 정하는 항이다.

f''(x) = 2a = 0 이므로,  a1 = 0 의 식을 얻는다. 즉, 첫 두개의 점은 1차 직선으로 연결한다.

... 위 조건을 이용하여 각 3n개의 식을 얻을 수 있다.

 2차 스플라인은 1차 스플라인과는 달리 곡선 형태로 나타나기 때문에 비교적 원 함수를 잘 묘사한다.                       그러나, 처음 두 점을 연결하는 경우 반드시 직선의 형태를 띄며, 마지막 구간의 스플라인은 진동이 큰 단점이 있다.

ex)

 

3차 스플라인

가장 많이 사용되는 스플라인 방법으로, 절점 사이의 각 구간에 대해 3차 다항식으로 표기한다.

fi(x) = aix3 + bix2 + cix + di

3차 다항식은 4개의 미지수 a, b, c, d 를 가진다. n개의 구간에 대해 이들을 구하기 위해서는 4n개의 식이 필요하다.

  1. 내부 절점에서 함수값들은 같다. 2(n-1) ,  2n -2
  2. 함수는 첫 점과 끝 점을 지난다. 2,  2n
  3. 내부 절점에서 1차 도함수는 같다 n - 1,  3n -1
  4. 내부 절점에서 2차 도함수는 같다 n - 1,  4n -2
  5. 양 끝점에서 2차 도함수는 0으로 가정한다 2, 4n

 

3차 스플라인의 유도

스플라인 방정식의 각 절점에서 f(x) 는 연속이므로, f''(x) 는 직선이 된다.

이때 이를 1차 Lagrange 보간 다항식으로 표현하면 다음과 같다.

f(x) 를 f''(x) 에서 2번 적분하여 구해보자. 이때 f(x)도 Lagrange 보간 다항식으로 표현한다.

각 절점에서의 2차 도함수가 연속이고, 조건 3에 의해 1차 도함수의 값은 같으므로,

현재 식에 위에 구한 식을 미분하여 대입하고 정리하면,

 

 

다차원 보간법

1차원 문제에 대한 보간법은 다차원으로 확장할 수 있다. 이때 다차원에 대해 보간을 수행하는 경우, 기존의 선형 보간을 다차원에 대해 순서대로 수행함으로써 다차원에 대해 보간법을 적용할 수 있다.

복선형 보간법(Bilinear Interpolation)

2차원에 대한 보간법이다. 하나의 차원에 대해 다른 차원은 고정시킨 후, Lagrange 방법을 사용하자.

y는 특정 값으로 고정하고 x에 대해 Lagrange 방정식을 전개한다.

이후 x를 고정하고 y에 대해 Lagrange 방정식을 전개한다. 이때 f(xi, y1)f(xi, y2) 은  위에서 y를 고정한 상태에서 구한 x에 대한 Lagrange 방정식과 같다. 따라서 해당 식들을 조합하면,

 

위와 같은 방식으로 하나의 차원에 대해 다른 차원의 값들을 고정하고 Lagrange 방정식을 전개하는 과정을 통해 다차원+ n차 스플라인에 대해서도 보간이 가능하다.