이번에는 수치해석에서 사용하는 interpolation 방법에 대해서 알아봅니다.
우리의 목적은 주어진 discrete data (xi,yi) for i=1,2,3,…,n(xi,yi) for i=1,2,3,…,n가 있을 때
두 데이터 points 사이에 있는 point의 value y를 구하고 싶은 것입니다.
또한 우리는 f′,f″, or ∫fdxf′,f′′, or ∫fdx도 알고 싶습니다.
(위에서 f″f′′까지 요구하는 이유는, 보통 기계공학에서 일반적인 DE는 order가 2nd order DE이므로, 두 번 미분한 값까지 아는 것이 좋기 때문입니다.)
주어진 데이터 안에서 알지 못하는 x에 대한 y값을 알 수 있는 방법은, 주어진 데이터를 가지고 시스템의 함수식을 예측해보는 방법이 있을 것입니다.
그 함수에 우리가 궁금한 y값에 해당하는 x값을 대입해보는 것입니다.
이 때 두 가지 방법이 있는데
1) find a smooth curve through the data
2) find a smooth curve pass through all the data

그림 출처 : en.wikipedia.org/wiki/Least_squares#/media/File:Linear_least_squares2.svg
1)의 경우는 least square method를 이용해 curve fitting하는 것을 생각할 수 있습니다. 그러나 수치해석에서는 논의하지 않습니다.
2)의 경우만 생각해서 주어진 데이터에 맞는 curve를 구하고, 이를 이용해 interpolation하는 방법을 살펴보겠습니다.
1. Polynomial interpolation
(xi,yi)(xi,yi) i=1,2,3,…,ni=1,2,3,…,n : 총 n개의 points를 데이터로 가지고 있습니다.
P(x)=a0+a1x1+a2x2+⋯+an−1xn−1P(x)=a0+a1x1+a2x2+⋯+an−1xn−1
이 n개의 points를 가지고 (n-1)차 polynomial을 만들고자 합니다.
미지수(Unknowns)는 a0,…,an−1a0,…,an−1 총 n개입니다.
{P(x1)=y1=a0+a1x1+a2x21+⋯+an−1xn−11when i=1P(x2)=y2=a0+a1x2+a2x22+⋯+an−1xn−12when i=2⋮P(xn)=yn=a0+a1xn+a2x2n+⋯+an−1xn−1nwhen i=n
위의 방정식을 matrix로 바꾸면 다음과 같습니다.
[1x1x21⋯xn−111x2x22⋯xn−12⋮1xnx2n⋯xn−1n][a0a1⋮an−1]=[y1y2⋮yn]
matrix [a0a1⋮an−1]를 구하기 위해서는
n by n matrix [1x1x21⋯xn−111x2x22⋯xn−12⋮1xnx2n⋯xn−1n]의 역행렬을 구해야하므로
앞서 구했던 대로 operation cost는 θ(n3)가 필요하며 stiffness가 크면 클수록 더 정확한 값을 구하기 어려워지므로 interpolation을 하는 것이 어렵습니다.
이렇게 computational cost issue 외에도 polynomial interpolation이 어려운 이유는 또 있습니다.
higher order polynomial일수록 polynomial을 만들면 "wandering"으로 인해 physical 현상을 잘 묘사하지 못합니다.
"wandering" 문제는 바로 다음에 다룰 Lagrange polynomial interpolation에서도 발생하는 문제이므로 Lagrange polnomial interpolation에서 마저 설명하겠습니다.
2. Lagrange Polynomial Interpolation
이 Lagrange polynomial interpolation은 모든 data point를 지나면서 smooth하게 polynomial을 구할 수 있습니다.
위에서 다룬 polynomial과 다른 점은 computational cost를 낮출 수 있다는 점입니다.
Lagrange polynomial을 구하는 과정
1) 각 point xj에 대한 degree n의 polynomial을 정의합니다.
Lj(x)=aj(x−x0)(x−x1)(x−x2)⋯(x−xj−1)(x−xj+1)⋯(x−xn)=αj∏ni=0,i≠j(x−xi)
Lj(x)는 (x−xj)를 제외한 나머지 항들의 곱으로 이루어진 n차 polynomial입니다.
Lj(xk)=0 if k≠j
Lj(xj)=αj∏ni=0,i≠j(xj−xi)
Lj 식에서 x=xj 외에 다른 xk point를 대입하면 0이 됩니다.
αj=1/∏ni=0,i≠j(xj−xi)으로 정의하면
Lj(xk)={0if k≠j1if k=j
으로 정리할 수 있습니다.
따라서 우리가 원하는 모든 데이터 포인트를 지나가는 lagrange polynomial
P(x)=∑nj=0yiLj(x)
polynomial of degree n의 조합이 됩니다.
예를 들어, 얻은 데이터 포인트가
i=0,1,2,3
xi=1,2,4,8
yi=1,3,7,11일 때
P(x)=1L0(x)+3L1(x)+7L2(x)+11L3(x)
where L0(x)=(x−x1)(x−x2)(x−x3)(x0−x1)(x0−x2)(x0−x3)
{L0(x0)=1L0(x1)=0L0(x2)=0L0(x3)=0
다음과 같이 3차 polynomial을 구했습니다. 이 polynomial에 x0,…,x3까지 대입해보면 이 polynomial이 모든 데이터 포인트를 지난다는 것을 알 수 있습니다.
P(x0)=L0(x0)=1=y0(∵L1(x0)=L2(x0)=L3(x0)=0)
P(x1)=3L1(x1)=3=y1(∵L0(x1)=L2(x1)=L3(x1)=0)
이와 같은 방식으로 모든 점을 지난다는 것을 확인할 수 있습니다.
이 Lagrange polynomial은 역행렬 계산이 필요없다는 점에서 계산 비용이 적습니다.
하지만 계산 비용을 줄였다고 해도 Lagrange polynomial interpolation, Polynomial interpolation 둘 다 사용하지 않습니다.
앞서 언급했던 "wandering" 문제 때문입니다.

이 그림을 보시면 실선이 Lagrange Polynomial이고 점선이 예상되는 behavior입니다. n차 polynomial로 만듦으로써 실제 데이터의 경향성을 제대로 반영하지 못하는 일이 발생하고 있습니다.
이와 같은 문제 때문에 Lagrange polynomial interpolation도 부적절할 수 있습니다.
따라서 polynomial interpolation, Lagrange polynomial interpolation과 다른 방식의 interpolation을 알아보겠습니다.
다음 글로 이어집니다.
'수치해석 Numerical Analysis' 카테고리의 다른 글
[수치해석] Numerical differentiation (1) (0) | 2021.03.19 |
---|---|
[수치해석] interpolation (2) - Spline interpolation (0) | 2021.03.12 |
[수치해석] Operation cost / Condition number(Stiffness) (0) | 2021.03.04 |
[수치해석] 수치해석 과정 예시 (0) | 2021.03.01 |
[수치해석] Introduction (0) | 2021.03.01 |