파이썬(Python)

Interpolation 이란? (Lagrange interpolation 설명 및 파이썬으로 구현해보기)

끄적끄적아무거나 2021. 6. 14. 10:48
반응형

Interpolation 이란? 

그림1

샘플링(sampling)이란 연속적인(Continuous) 신호를 컴퓨터에서 처리하기 위해 이산(discrete) 신호로 변경하는 작업이다. 가령 온도 센서가 있으면 컴퓨터가 온도 센서를 읽기 위해 ADC(analog to digital conversion) 과정을 거쳐서 디지털 값을 컴퓨터가 읽게 된다.

 

인터포레이션(Interpolation)은 샘플링에 반대 되는 개념이다. 그림1과 같이 샘플링 된 값을 다시 연속적인 신호로 바꾸는 작업이다. 여기서 중요한 부분은 얼마나 원 신호에 가깝게 복원하는가 이다. (waveform approximation)

 


라그랑지안 다항식 보간법 (Lagrange polynomial interpolation)

 

라그란주, 라그랑주, 라그랑지안 등등 발음에 따라 다양하게 불리는 해당 보간법(Interpolation)은 Sinc interpolation 과 함께 진동 제어기에서 가장 많이 사용하는 보간법 중 하나이다. 

 

진동 신호 발생기 (vibration waveform generator) 는 사인파, 랜덤파, 충격파 등을 발생시켜 진동 장비를 구동한다. 이때 파형은 Continuous waveform 이므로 컴퓨터에서 만든 신호를 interpolation으로 변형해야 한다. 여기서 사용하는 Lagrange polynomial interpolation 전개 방식에 관해 정리해 보겠다. 

 

  • 샘플링 갯수(N)에 맞추어 (N-1) 차 함수 식을 발생시킨다.
  • 분자는 한 샘플링 포인트 당 한개 식을 남기고 나머지는 0을 만들어 준다.
  • 분모는 한 포인트에 대해 값이 1이 발생끔 만들어 준다.

위 포인트로는 이해가 어려우므로 3개의 샘플링 포인트에 대한 2차 식이 유도된 결과를 확인하여 이해해보자

그림2

그림2에서 3개의 샘플링 포인트로 2차 식을 만들었다. 위 조건 처럼 각 포인프 값을 입력시 0이 되거나 1이 되는 식으로 변한다. 가령 ax를 넣으면 다항식의 첫번째식은 ay만 남고 나머지는 0이 된다.

 


Lagrange polynomial interpolation 파이썬으로 구현해 보기

 

코드>>

from scipy.interpolate import lagrange
import numpy as np

x = np.array([0, 1, 2, 3])
y = x**3
poly = lagrange(x, y)
print(poly)

 

결과>>

   3
1 x

 

주석>>

 

코드는 x값을 0, 1, 2, 3 총 4개 값에 대해 y=x^3 식에 대한 결과 값이므로 샘플링은 아래와 같다.

(0,0) (1,1) (2,8) (3,27)

이를 라그랑지안 인터폴래이션 하여서 결과는 두줄로 나왔다. 간단히 말하면 x^3 이다. 샘플4개로 3차식을 얻은것이다. 이 경우 정확하게 waveform 파형 식을 얻었지만 일반적으로는 유사하게 따라간다. 파이썬을 사용해서 그림2의 수식을 쉽게 전개 할 수 있다.

 

 

반응형