보간법(補間法 = 깁다+사이+방법) = interpolation : 삽입하다. 내삽법을 말한다.
보외법(補外法 = 깁다+밖을+방법) = extrapolation : 추정하다. 외삽법을 말한다.
내삽법(內揷法 = 안에+꼽는+방법) ⇔ 외삽법(外揷法 = 밖에+꼽는+방법)
interpolation ⇔ extrapolation
뭐하는 곳에 쓰는가? 예를 들어 점이 간간히 찍힌 그림이 있을 때 그 점을 연결하면 그림이 완성된다. 사람은 그 점들 사이를 어림짐작으로 부드럽게 연결하는데 그 방법을 바로 보간법이라 한다. 즉, 사람은 무의식중에 보간법을 쓰고 있다. 만약 어떤 측정 data들이 있을 때 그 Data들의 중간 값을 추정해야 할 경우 또는 그런 특성을 보이는 원리(공식)를 찾아내야 할 경우에도 역시 수학적인 보간법이 쓰인다. 여기서 그 방법을 알아보고자 한다. 내가 보간법에 관심을 가진 것은 회사에 있을 때이다. 학교 다닐 적에 잠깐 배운 것 같지만 그 때는 기계적으로 문제를 푸는 용도로만 사용했다. 그 의미와 가치는 몰랐다.
1. 가장 쉬운 직선 보간법(선형 보간법)
아주 쉽게 두 개의 점이 있을 때 그 사이를 직선으로 이어버리는 것이다. 좀 무식한 방법이다. 중학교 수학이면 해결된다. 이 수식을 보면 알겠지만 기울기와 어느 한 점의 위치만 알면 수식이 완성된다. 두 개의 점이 있다. 이 점 사이는 직선이다. 그 기울기는 2개의 점만 있으면 알 수 있다. 그러니 2개의 점을 알든가 1개의 점을 알고 그 점 위치의 기울기를 알아도 문제가 해결된다. 이렇게 각 구간을 연결하면 꺾인 모양의 그림이 만들어진다.
① 두 점 → 계수 완성 → 전체 공식 완성 → 보간 → 직선
② 한 점 + 한 기울기 → 계수 완성 → 구간 공식 완성 → 보간 → 구간을 조립하면 꺾임
<그림 : 1차 다항식 보간>
2. 좀 더 부드러운 곡선으로(2차 다항식 = 포물선)
좀 더 곡선으로 그려져야 멋있지 않겠는가? 고등학교 수학으로 넘어가자. 미분을 사용하자는 말이다. 2차 다항식을 이용해 보자. 2차 다항식은 3개의 점의 위치를 알면 구할 수 있다. 그러나 보통 2개의 점 사이의 값을 추정하기 위해 2개의 점의 위치만 주어지니, 정보가 부족하다. 이 경우는 2개의 점에서 기울기도 알아야 한다. 2점의 기울기를 어떻게 알까? 기울기는 양측의 점의 접선을 추정해야 한다. 2차 다항식을 1차 미분한 것이 기울기고 이 기술기 값이 연속이어야 하며, 직선이다. 이렇게 좌우 양끝의 기울기를 정해버리고 그 사이의 기울기는 직선으로 변한다고 하면 곡선이 그려지나 각 구간을 다 모아 놓으면 경계에서 갑자기 꺾이는 일이 있다. 그래서 약간 어색한 곡선이 나온다. 어떤 경우는 공식이 만들어지지 않는다.
① 세 점 → 계수 완성 → 전체 공식 완성 → 보간 → 2차 곡선
② 두 점 + 두 기울기 → 계수 완성 → 구간 공식 완성 → 보간 → 조립하면 꺾이는 곡선
<그림 : 2차 다항식 보간>
3. 좀 더 일반적인, 매우 폼 나는 방법(Newton, Lagrange 보간법)
처음 것은 Newton(뉴튼)이 발견한 것이라고 붙인 이름이며, 다음 것은 Lagrange 다항식을 이용한다고 붙인 이름이다. 앞에서 1차를 구하기 위해선 점이 2개, 2차를 구하기 위해 점이 3개 필요했다. 이것을 그대로 확장하는 것이다. 이 내용을 쉽게 설명한 내용을 찾기 어렵다. 백과사전을 찾아 봐도 역시 설명이 부족하다. 이 내용을 이미 아는 사람이 보면 오타나 부족한 설명, 잘못된 설명을 알 수 있을 정도이나 모르는 사람이 보면 뭐가 뭔지 모른다. 더구나 오타까지 있으니.(^^) 그러니 모르는 사람이 보면 전혀 도움이 되지 않는다. 장황하게 수식만 나열되어 있지, 알기 쉽게 설명한 것은 없다. 그러나 알고 보면 무지 쉽다.(^^) N개의 점의 위치를 알면 이것에 딱 맞는 함수를 찾아주는 매우 계산양이 많은 방법이다. 알고 싶으면 대학교 수학책을 찾아 볼 것. 나도 잘 모른다. 별로 설명하고 싶지도 않다.
① N개의 점 → 계수 완성 → 전체 공식 완성 → 보간
<그림 : N차 다항식 보간, 이 공식을 기본으로 하여 각 항의 계수를 구하는 것임>
여기서 왜 함수형태를 다항식으로 했는가? 다른 함수로도 할 수 있다. 그러나 다항식이 가장 쉽기 때문에 다항식을 사용하는 것이다. 간단하게 연립방정식 생각하면 된다. 이것을 좀 더 세련되게 푸는 것이다. 컴퓨터나 이런 짓을 하지 사람이 계산할 수는 없다. 그래서 컴퓨터가 나오기 전까지는 거의 무용지물인 방식인 것이다. 혹시 옛사람들은 억척스럽게 계산했을지도 모른다.
4. 아주 자연스런 곡선으로(3차 다항식 = cubic spline 보간법)
왜 이름이 spline(스플라인)인가? spline은 운형(雲形)자를 뜻한다. 구름같이 동글동글한 곡선이 이쪽 저쪽에 있는 그런 자이다. 이 자에 있는 곡선들을 서로 연결해서 선을 그으면 아주 부드럽게 그림이 완성된다. 이와 같이 그럴듯한 보간공식을 만든다는 것이다. cubic(큐빅/3차원/입체/부피)이란 3차 다항식을 이용했다는 뜻이다. 이 보간법은 3차 다항식을 이용한다. 앞에서 2차 다항식으로 했던 것과 유사한 방식이다. 두 개의 점과 그 두 점에서 접선의 기울기를 미리 알고 있다고 가정한다. 앞에서 2차 다항식으로 그리면 부자연스러운 곡선이 되거나 곡선이 그려지지 않는 경우가 있으나 3차 다항식으로 그리면 매우 자연스럽게 그려진다. 그리고 각 구간을 연결해도 꺾이지 않고 부드럽게 연결된다. 그러니 완결판이라 할 수 있다. 거의 사람이 직접 선을 그린 것과 비슷하다. 그러니 매우 실용적인 방법이라고 할 수 있다.
① 네 점 → 계수 완성 → 전체 공식 완성 → 보간 → 3차곡선
② 두 점 + 두 기울기 → 계수 완성 → 구간 공식 완성 → 보간 → 조립하면 완전한 곡선
<그림 : 3차 다항식 보간>
전체 곡선은 구간별 3차 다항식을 조립한 것이다. 1차 미분 즉, 각 점의 기울기는 2차 다항식이다. 즉, 구간의 기울기는 2차 곡선으로 부드럽게 변한다. 3차 미분, 즉 각 점의 변곡점은 직선으로 연결된 상태가 되는 것이다. 즉, 1차 미분이 포물선이 되면, 2차 미분이 직선이 된다. 이렇게 하면 2차 미분은 직선으로 꺾이지만 1차 미분은 곡선으로 연결되기 때문에 상당히 부드러운 곡선을 얻을 수 있다. 위의 수식에서 m(a), m(b), s(a), s(b)를 결정해야 공식이 완성된다. m(a)/m(b)을 제거하고 s(a)/s(b)로만 표현하면 이렇다.
<그림 : 3차 다항식의 계수를 간단하게 정리>
보통 기울기를 근사치로 구하기 쉽기 때문에 이렇게 정리하자. 기울기는 쉽게 추정할 수 있다. 그 점의 좌우측의 점을 연결한 직선의 기울기를 그 점의 기울기로 간단하게 취하면 된다. 이 계수를 3차 다항식에 대입하여 정리하면 이렇다. ※ a-b-c 가 있다면 b의 기울기는 a-c의 기울기로 한다는 말.
<그림 : 기울기와 좌표로 정리>
이 공식은 a, b, f(a), f(b), s(a), s(b)를 알면 되는 공식이다. 여기서 Data로 모르는 것은 s(a), s(b)이다. 이 값은 앞에서 말했듯이 추정해서 넣어야 한다.
5. 실전에서는 어떻게 사용하지?
선을 하나 연결하기 위해 이렇게 복잡한 것을 사용하는데 만약 면(2D) 높이나 입체(3D)의 밀도를 계산한다면 어떻게 되는가? 컴퓨터에서 그림을 그리듯이 폐곡선(閉曲線)이 된다면? 극좌표계로 바꾸어서 적용해야 하나? 불연속이 없을 뿐 아니라, 갑자기 꺾이는 일도 없어야 한다.
직선 보간법을 생각하면 이렇다. 모든 면은 3각형으로 표현이 가능하다. 그러니 3점의 좌표를 알고 그 사이를 직선으로 연결하면 끝난다. 중간의 값은 그 3각형이 이루는 면 위에 있다. 모든 입체는 4면체(3각형 4개로 이루어진 것)로 표현이 가능하다. 그 다음은 머릿속이 복잡하다. 인간의 머리는 3차원을 못 벗어난다. 여기에 부드러운 spline 보간법을 적용하려고 한다면? 어렵다.(^^) 역시 수학을 잘해야 한다.
여기 방법 외에 실제로 컴퓨터에서 2D, 3D 그림을 그릴 때 사용하는 방법으로 베지에 곡선이라는 것이 있다. 아마도 프랑스 사람 베지에 같은데 이 사람이 만든 곡선 수식이 있다. 점 4개만 찍으면 그 4가지 점으로 결정되는 곡선이 하나 나온다. 양 끝의 점 2개는 말 그대로 곡선의 끝이다. 중간의 2개의 점은 곡선의 모양을 결정하는 점이다. PowerPoint나 포토샵, 일러스트레이터, 3D Max 등 모든 그림 그리기 소프트웨어에서 사용하고 있다. 보간법과는 약간 다른 것이다. 그리는 용도로 개발된 것이다. 보간법은 중간 값을 추정하는 것이다. 어딘가 글을 적은 것 같은데 위치를 모르겠다. 보통은 y=f(x) 형태로 함수를 나타내고 컴퓨터 화면에 (x, y) 좌표로 점을 찍는다. 그런데 이렇게 하면 문제가 있다. 축과 관계 없이 곡선을 그리려면 y=f(x) ▶ y=g(t), x=h(t) 형태로 바꾸어서 그린다. 즉, t 값에 따라 (x, y) 좌표가 결정되는 것이다. 예를 들어 원을 그릴 때 직각 좌표계보다는 극좌표계가 더 적합하다. 이 극좌표계의 각도가 바로 t에 해당된다. 각도 t에 따라 좌표 이동 거리가 일정하다. 마찬가지로 어떤 함수를 화면에 그릴 때는 이런 t값에 따른 (x, y) 좌표의 함수로 변환해서 이용한다. 그래야 어느 한 축의 점 간격이 너무 크거나 좁지 않게 되며 특정한 값에서 예외적인 처리를 하지 않게 된다. 예를 들어 원을 그릴 때 x 좌표에 따라 y값이 2개가 나온다. 양의 축과 음의 축에 2개를 그려야 한다. x좌표가 일정한 간격이면 y축 간격은 약간 불균일하다.
컴퓨터에서 곡선을 그리는 방법은 2가지다. 수식으로 표현하고 화면에 그릴 때만 점을 계산한다. 3D에서 NURBS(넓스!?)라는 것들은 이런 종류이다. 그런데 다각형(폴리곤) 형태로 점들을 그대로 기억하고 그리는 방식이 있다. 이 것은 직선 보간법과 같은 모양이다. 짧은 직선들의 집합이다. 이 두가지를 섞어서 사용한다. 즉, 곡선을 메모리에 기억할 때는 수식으로 하지만 화면에 나타낼 때는 다각형 형태로 표현하는 것이다. 수식 표현은 메모리가 절약되지만 계산 시간이 많이 소모된다. 후자는 그 반대이다. 그래서 2가지를 섞어서 이용한다.






