참고 프로그램 : http://blog.jidolstar.com/60 관측 또는 실험에서 얻은 데이타는 몇개의 (x,y)값으로 되어있을 것이다. 이 데이타를 이용하여 원하는 결과를 도출하기 위해 자주 사용되는 것 중에 하나가 보간법(補間法, Interpolation)이다. 이 보간법이라는 것은 주어진 데이타를 가지고 어떤 다항식과 같은 형태로 표준화 시키는 작업 중에 하나로 관측이나 실험을 통해서 얻어지지 않은 점을 추정할 때 유용하게 사용된다. 보간법은 반드시 원본데이타를 포함하기 때문에 내삽법(內揷法)이라고 한다.(참고: 외삽법) 정의
( xk ,yk )값을 데이타 점(data point)라 하고 f를 이 데이타 점을 이으는 보간함수(interpolant)라고 부른다. yk 가 함수 f에 의해 주어질 때 yk 를 fk.로 쓰여지기도 한다. 예제![]() 왼쪽 테이블에서 주어진 각 점을 plot한 모습이다. 예를 들어 알려지지 않은 함수 f의 값이 아래의 테이블 값처럼 주어졌다고 가정하자.
x=2.5일때 값은 무엇일까? 보간법은 이런 문제를 풀 수 있는 실마리가 된다. 보간법은 그 종류가 다앙하다. 아래는 몇가지 보간법의 간단한 예제만 소개한다. 보간법을 선택할 때는 원하는 결과의 정확성, 비용등을 잘 생각할 필요가 있다. 이 문제는 실험자 당사자가 해결해야 할 문제이다. 선형보간법(linear Interpolation)
![]() 선형보간법을 이용하여 연결한 모습이다. 선형보간법은 보간법중 가장 간단한 방법중에 하나이다. 단순히 알려진 데이타 점들을 오른쪽 그래프와 같이 선형으로 이어주기만 하면 된다. 이를 근거로 위에 언급한 f(2.5)의 값을 결정해보도록 하자. 알려진값 2와 3에 대하여 f(2)=0.9093, f(3)=0.1411 이므로 f(2.5)는 0.5252가 된다. 일반적으로 선형보간법은 두 데이타 점들인 (xa,ya) 와 (xb,yb)가 주어졌을때 그 사이의 (x,y)점에 대한 보간함수는 다음과 같이 주어진다. ![]() 선형보간법은 쉽고 빠르다. 하지만 그리 정확한 방법은 아니다. 게다가 각 데이타 점부분(xk)에서 미분이 가능하지 않다. 다항식 보간법(Polynomial interpolation)참고글 : http://en.wikipedia.org/wiki/Polynomial_interpolation ![]() 다항식 보간법을 적용하여 데이타를 plot함 다항식 보간법은 선형보간법을 일반화 시킨 것과 같다. 선형보간법은 1차 다항식인 반면 다항식 보간법은 2차 이상의 다항식을 가진다. 선형 보간법에서 언급한 예제를 생각해보자. 7개의 점을 전부 통과하는 다항식은 아래와 같은 6차 다항식이어야 한다. 스플라인 보간법(Spline Interpolation)참고글 : http://en.wikipedia.org/wiki/Spline_interpolation ![]() 스플라인 보간법에 의해 데이타를 Plot한 결과 선형 보간법이 [xk,xk+1] 구간에서 선형함수를 사용했다는 것을 위에서 설명했다. 스플라인 보간법은 각 구간에서 낮은 차원(low-degree)의 다항식을 사용한다. 이 다항식은 전후구간의 다항식들과 자연스럽게 연결될 수 있는 것으로 선택한다. 이렇게 각 구간마다 선택된 함수들을 스플라인(spline)이라고 한다. 각 구간에서 스플라인 함수를 선택할때 각 점에서 전후 스플라인 함수가 미분이 가능해야 하고 곡률도 같아야 한다. 이렇게 해서 각 구간별 정해진 다항식은 다음과 같다. ![]() 이 경우에 f(2.5)=0.597262 가 된다. 다항식 보간법와 같이 스플라인 보간법이 선형보간법보다 작은 오차를 낸다. 그리고 보간식도 자연스럽게 연결된다. 그러나 다항식 보간법보다 계산하기 훨씬 간단하다. 앞에서 언급한 Runge현상이 다항식 보간법에 비해 크게 개선이 되긴 했지만 스플라인 보간법만 가지고는 아직 충분하지는 않다. Runge현상을 줄이기 위해 y값이 급격하게 변하는 구간에서 보간점(데이타 점)을 잘 선택하는 것이 중요하다. 스플라인 보간법의 또 한가지 단점은 각 구간별로 곡선식을 가지므로 하나의 함수식으로 표현이 불가능하다. 참고사항
참고사이트http://en.wikipedia.org/wiki/Interpolation Trackback Address :: http://blog.jidolstar.com/trackback/59
개인적으로 준비하고 있는 프로젝트에서 실험데이타를 빠짐없이 지나면서 각 구간에 포함되는 최적의 값을 찾아내야하는 문제가 있었다. 이 문제를 해결하기 위해 대학시절 배웠던 것이 문득 떠올랐다. 대학 2학년에 수치해석시간에 들은 강의 내용중에 이 큐빅 스플라인 보간법(Cubic Spline Interpolation)에 대한 내용이 있었다. 그 때는 교수님이 잘 만들어준 C코드를 이해하는데만 머리를 쥐어 짰는데... 그때 고생했던 것이 오늘에 와서 이렇게..
|
||||||||||||||||||||||||||||||||||||







