[경고] 아래 글을 읽지 않고 "삼각 함수 보간"을 보면 바보로 느껴질 수 있습니다.
[그림 1] 복소 평면에서 보간의 예(출처: wikipedia.org)
다항 함수 보간(polynomial interpolation)은 고차 다항식의 계수를 바꾸어서 함수값을 정확히 아는 점 혹은 표본점(sampling point) $(x_0, y_0)$, $(x_1, y_1)$, $\cdots$, $(x_n, y_n)$ 사이의 중간값을 채운다. 다항 함수 보간을 사용하는 대표적인 예는 라그랑주 보간(Lagrange interpolation)이다.
(1)
식 (1)이 좋은 보간법이기는 하지만, $x$가 커지면 $L_n (x)$의 함수값이 급격히 커질 수 있다. 그래서 큰 $x$에 대해서도 보간한 함수값이 커지지 않는 새로운 보간법이 필요하다. 보간에 사용하는 기저 함수(basis function)를 1차 함수 대신 삼각 함수(trigonometric function)를 쓰면, 보간 영역의 바깥[외삽(extrapolation)]에서 보간한 함수값이 매우 커지는 현상을 완화시킬 수 있다. 이와 같이 삼각 함수를 이용해서 함수를 보간하는 방법은 삼각 함수 보간(trigonometric interpolation)이라 한다[1]. 삼각 함수 보간에는 오일러의 공식(Euler's formula)을 적극적으로 사용한다.
(2)
오일러 공식을 이용해 $z$ = $e^{ix}$라 두면, 1차 함수 관계를 삼각 함수 관계로 손쉽게 바꿀 수 있다. 또한 우리가 고려하는 정의역은 실수에서 [그림 1]과 같은 복소 평면(complex plane)으로 확대된다. 더 구체적으로 알아보기 위해 먼저 실수 영역에서 삼각 함수 보간을 표현한다[1].
(3)
여기서 $0 \le x < 2 \pi$, $a_k, b_k$는 알고 있는 함수값으로 결정하는 계수이다. 식 (2)를 이용해 식 (3)의 삼각 함수를 복소 지수 함수(complex exponential function)로 바꾸어본다.
(4)
(5)
여기서 $\operatorname{Sa}(x)$ = $\sin x / x$이다. 따라서 $x_0, x_1$이 아무리 근접하더라도 함수의 미분이 존재하면, 삼각 함수 보간은 절대 발산하지 않는다.
정의역이 복소수로 확대되기는 했지만, 식 (5)의 우변은 분명 다항식이다. 만약 식 (1)에 제시한 라그랑주 보간을 사용하면, 삼각 함수 보간에 대한 공식을 쉽게 유도할 수 있다. 알고 있는 함수값의 개수[= $2n+1$]가 홀수인 경우는 다음과 같은 삼각 함수 보간으로 표현된다.
(6)
여기서 $0 \le x < 2 \pi$이다. 라그랑주 보간의 기저 함수를 참고해서, 식 (6)의 삼각 함수 보간을 이루는 기저 함수 $t_k(x)$를 다음처럼 얻는다.
(7)
여기서 유한번 곱한 $e^{ix}$의 최대 차수가 $n$이 되도록 $e^{in(x_k - x)}$를 맨앞에 곱한다. 식 (7)의 우변에 의해 $t_k(x_m)$ = $\delta_{km}$이 성립한다. 여기서 $\delta_{km}$은 크로네커 델타(Kronecker delta)이다. 식 (7)에 복소 지수 함수의 항등식을 적용한다.
(8)
그러면 식 (7)은 매우 간단한 삼각 함수 관계식으로 바뀐다[1].
(9)
여기서 $t_k(x+2\pi)$ = $t_k(x)$이므로 $t_k(x)$는 주기가 $2 \pi$인 주기 함수(periodic function)이다. 아는 함수값의 개수[= $2n$]가 짝수인 경우도 홀수와 비슷하게 $F_n(x)$와 $t_k(x)$를 정의한다.
(10)
(11)
여기서 $t_k(x_m)$ = $\delta_{km}$이다. 다만 식 (11)에서 $t_k (x)$를 구성하는 $e^{ix}$의 최대 차수는 $n - 0.5$가 되어서 정수가 아니다. 추가적으로 식 (11)은 식 (9)처럼 사인 함수만으로 표현될 수 있다.
(12)
여기서 $t_k(x+2\pi)$ = -$t_k(x)$이다. 기저 함수 $t_k(x)$는 주기가 $4 \pi$이지만, $x$가 $2 \pi$만 바뀌어도 원래 함수값과 부호만 다를 뿐 종속성이 나타난다. 그래서 식 (12)의 $x$도 $0 \le x < 2 \pi$로 제한되어야 한다.
이상을 종합해서 식 (6)과 (10)의 결과에서 $2n \to N$ 및 $2n-1 \to N$으로 각각 바꾸면, 아는 함수값의 개수가 홀수든 짝수든 같은 공식으로 삼각 함수 보간을 할 수 있다. 하지만 짝수인 경우는 아쉽게도 $t_k (x)$에 나오는 $e^{ix}$의 최대 차수는 분수가 된다.
식 (4)는 푸리에 급수와 비슷한 유한 급수이므로, $c_k$를 다음처럼 구할 수 있다.
(13)
만약 $x_m$이 균등하게 분포되면, $x_m$ = $2 \pi m / (2n+1)$[$m$ = $0, 1, \cdots, 2n$]이라 정할 수 있다. 그러면 이산 푸리에 변환(discrete Fourier transform, DFT) 개념을 도입해서 편하게 $c_k$를 구한다.
(14)
여기서 $l$ = $-n, -n+1, \cdots, n-1, n$이다. DFT의 푸리에 계수는 $(2n+1)c_k$이므로, DFT로 계산해 $c_k$를 정할 수도 있다.
두 표본점 $x_0, x_1$이 매우 가까운 경우도 삼각 함수 보간이 가능할까? 두 표본점의 차이 $x_1 - x_0$이 분모에 있기 때문에 기저 함수 $t_k(x)$의 크기가 매우 커질 수도 있다. 두 표본점이 매우 근접한 경우의 보간 특성을 파악하기 위해 식 (9) 혹은 (12)를 다음처럼 변형한다.
(15)
(16)
(17)
식 (16)에 정의한 두 함수값의 차이 평균 $y_d$는 다음처럼 함수의 미분 $y'$와 연결된다.
(18)
평균값의 정리(mean value theorem)에 의해, 구간 $[x_0, x_1]$ 사이에 있는 적당한 $x_d$에 대해 $y'$ = $y'(x_d)$ = $\Delta y / \Delta x$가 성립하는 미분이 존재한다. 식 (18)을 식 (17)에 대입해서 깔끔하게 정리한다.
(19)
[참고문헌]
[1] G. E. O. Giacaglia, "Trigonometric interpolation," Celestial Mechanics, vol. 1, pp. 360–367, Sep. 1970.
안녕하세요.
답글삭제작성해주신 글 잘 읽었습니다.
다름이아니라 적어주신 글에서 함수값의 수에 따라 삼각함수의 보간이 달라지는데 그 이유나 논문을 알려주실수 있으신가요?
참고문헌에는 이와 관련된 내용이 안나와서,,,ㅠㅠ
부탁드리겠습니다.
기본 발상은 [1]를 참고했어요. 참고문헌 [1]에서는 함수값이 짝수라도 홀수처럼 $x = 0$을 기준으로 보간이 되도록 했어요. 이러면 홀수와 짝수 경우가 같은 점을 기준으로 보간이 됩니다. 이게 당연하지만 결과식이 너무 복잡해요. 그래서 저는 식 (12)에서 이걸 무시하고 최종 결과가 간단해지도록 했어요. 전체적인 내용은 [1]을 따라갔기 때문에, 식 (12)가 [1]의 결과와 달라도 저라면 참고문헌을 [1]로 할 것 같아요.
삭제감사합니다.
삭제전파거북이님 덕분에 많은 것을 알아가는 거 같습니다.
코로나 조심하시고 좋은 하루 보내세요!
다시 한번 감사드립니다.