푸리에 급수와 푸리에 변환

 

해당 글은 “조제프 푸리에의 업적 - 푸리에 급수와 푸리에 변환”라는 제목으로 제출한 “수학과 문명” 과목의 과제물을 수정한 것이다.

1. 조제프 푸리에와 그의 발견

조제프 푸리에(Jean-Baptiste Joseph Fourier; 1768 – 1830)는 프랑스에서 태어나 혁명의 혼란 속에서 젊은 시절을 보냈던 수학자이자 물리학자이다. 본래 푸리에는 본인이 유도한 열전도 방정식을 풀기 위해 푸리에 해석이라는 이론을 전개했다.

1807년 12월 21일 열린 프랑스 과학원 회의에서 39세 수학자이자 물리학자였던 푸리에는 수학사에 새롭고 효과적인 장을 여는 논문을 발표했다. 당시 과학자와 마찬가지로 푸리에는 열의 전도에 관한 실용적인 문제에 관심을 두었고 발표한 논문 또한 열전도에 관한 기초적인 논문이었다. 하지만 그 논문을 발표하면서 유계인 폐구간에서 정의된 임의의 함수는 그래프가 어떠한 모양이라 할지라도 순전히 삼각함수인 사인 함수와 코사인 함수의 선형결합으로 표현할 수 있다는 놀라운 주장을 했다 [1].

이 과정 속에서 등장한 것이 푸리에 급수와 푸리에 변환이다. 푸리에는 이들에 관해 수학적으로 명백한 증명은 하지 못했다. 실제로 1829년 비둘기집 원리로 유명한 독일의 수학자 디리클레(Johann Peter Gustav Lejeune Dirichlet)가 디리클레의 정리를 발표함에 따라 푸리에의 주장이 과장되었음이 밝혀졌다[1].

디리클레의 정리는 다음과 같다.

폐구간 $[-\pi, \pi]$위에서 $f(x)$가 유계이고 단가 함수이며 단지 유한 개의 불연속점과 유한 개의 최대값과 최솟값을 가진다면, $f(x)$의 푸리에 급수는 $f(x)$가 연속인 모든 점에서 $f(x)$에 수렴하고 $f(x)$가 불연속인 각 점에서는 $f(x)$의 좌극한과 우극한의 평균값에 수렴한다 [1].

하지만 푸리에 급수와 푸리에 변환은 현대에 다양한 분야에 응용되고 있다. 특히 컴퓨터 과학 분야에서도 신호처리, 이미지 처리, 데이터 압축 등에 유용하게 사용되는 필수적인 존재다. 더욱이 쿨리-튜키 알고리즘(Cooley-Tukey algorithm) 등으로 그 유용성이 더 높아졌고 고속 푸리에 변환(FFT - Fast Fourier Transform)이 가능해짐에 따라 알고리즘 분야에서도 속도를 높이는 수단으로 유용하게 사용되고 있다.

이처럼 유용한 푸리에의 업적들을 살펴보고자 한다.

2. 푸리에 급수

푸리에는 같은 주기를 반복하는 파의 경우 그 형태가 복잡하더라도 단순한 파동들의 선형결합으로 표현할 수 있다는 것을 발견했다. 마치 $n$차원 유클리드 공간에 존재하는 임의의 위치벡터 $\vec{p}$를 단위 벡터들에 대한 성분으로 분해할 수 있듯이 어떠한 복잡한 파동을 단순한 파동으로 분해할 수 있다는 것이다.

푸리에 급수에서 단순한 파동은 $\sin{\omega t}$, $\cos{\omega t}$와 같은 삼각함수로 나타낸다. 각 단순한 파동은 복잡한 파동 $f(t)$에 포함되어 있는 모든 주기를 가지고 있어야 하기 때문에 복잡한 파동 $f(t)$의 기본 주파수 $\omega$에 대한 정수배 주파수 $n\omega$를 가지고 있다. 즉, 주기가 $f(t)$와 일치하는 단순 파동부터 $f(t)$에 포함된 단순 파동 중 주기가 가장 짧은 파동까지 선형결합을 하는 것이다. 그리고 각 단순 파동은 그 세기인 진폭을 가지고 있어야 한다. 즉, 각 단순 파동들을 표현하는 삼각함수들의 계수를 말한다. 이들을 수식으로 표현하면 다음과 같다.

\[f(t)=a_0+\sum_{n=1}^∞(a_n \cos⁡{n\omega t}+b_n \sin{⁡n\omega t})\]

그렇다면 여기서 의문 점은 $a_n$, $b_n$을 어떻게 구하느냐는 것이다. 이는 삼각함수의 직교성을 이용하여 해결한다.

두 벡터 $\vec{v}$, $\vec{u}$의 직교성을 파악할 때에는 내적을 다음과 같이 이용한다.

\[\vec{v} \cdot \vec{u}=0\]

이를 만족하면 두 벡터는 직교한다는 것을 알 수 있다.

벡터가 아닌 두 연속 함수 $f(x)$, $g(x)$에 대한 직교성은 다음을 이용한다.

\[(f,g)=\int_a^bf(x)g(x)dx=0\]

이를 이용한 삼각함수의 직교성은 다음과 같다.

\[(\sin{⁡n\omega x}, \cos{⁡m\omega x})=\int_0^T\sin{⁡n\omega x} \cos{⁡m\omega x} dx=0\] \[(\cos{n \omega x}, \cos{m \omega x})=\left\{\begin{matrix} \int_{0}^{T} \cos{n \omega x}\cos{m \omega x}dx=0 & \left ( n \ne m \right ) \\ \int_{0}^{T} \cos{n \omega x}\cos{m \omega x}dx\ne 0 & \left ( n = m \right ) \end{matrix}\right.\] \[(\sin{n \omega x}, \sin{m \omega x})=\left\{\begin{matrix} \int_{0}^{T} \sin{n \omega x}\sin{m \omega x}dx=0 & \left ( n \ne m \right ) \\ \int_{0}^{T} \sin{n \omega x}\sin{m \omega x}dx\ne 0 & \left ( n = m \right ) \end{matrix}\right.\]

즉, 자기 자신을 내적하지 않은 한 0이 나온다는 것을 알 수 있다. 이를 이용하여 $a_n$, $b_n$을 구한다.

$a_0$은 단순히 양 변을 주기에 대해 적분하여 얻는다.

\[\int_0^T f(t)dt=\int_0^T a_0dt+\int_0^T \sum_{n=1}^\infty (a_n\cos{n\omega t}+b_n\sin{n\omega t})dt=\int_0^T a_0dt=a_0T\]

$\int_0^T \sum_{n=1}^\infty (a_n\cos{n\omega t}+b_n\sin{n\omega t})dt$은 주기함수의 특성에 의해 0이 되었음을 알 수 있다. 그렇다면 $a_0$은 다음과 같다.

\[a_0=\frac{1}{T} \int_0^T f(t)dt\]

이제 모든 $a_n$에 대해 구해야 한다. 그렇다면 주어진 식에서 임의의 자연수 $k$에 대해 $a_k$는 살려 두고 $k$가 아닌 자연수 $m$에 대해 $a_m$을 계수로 하는 $\cos{⁡m\omega t}$을 제거하고 $b_n$을 계수로 하는 $\sin{⁡n\omega t}$ 또한 제거해 주어야 할 것이다. 삼각함수의 직교성에서 같은 함수를 곱하지 않으면 0이 된다는 점을 이용하여 양 변에 $\cos{⁡k\omega t}$를 곱하고 주기에 대해 적분해 주면 $a_m$과 $b_n$을 제거해 줄 수 있다. 이를 하면 다음과 같다.

\[\int_0^T f(t)\cos{k\omega t}dt=\int_0^T a_0\cos{k\omega t}dt+\int_0^T\sum_{n=1}^\infty (a_n\cos{n\omega t}\cos{k\omega t}+b_n\sin{n\omega t}\cos{k\omega t})dt\] \[=\int_0^T a_0\cos{k\omega t}dt+\sum_{n=1}^\infty\left ( \int_0^T a_n\cos{n\omega t}\cos{k\omega t}dt+\int_0^T b_n\sin{n\omega t}\cos{k\omega t}dt \right )\]

이때, 앞서 말한바와 같이 삼각함수의 직교성에 의해 $\cos{⁡k\omega t}$와 일치하는 경우를 제외하고 모두 0이 되어 다음과 같다. 단, $a_0$는 주기함수의 특성에 의해 0이 된다.

\[\int_0^T f(t)\cos{k\omega t}dt=\int_0^T a_k\cos^2{k\omega t}dt\]

$\cos{⁡2\theta}=\cos^2{⁡\theta}-\sin^2{\theta}=2\cos^2{\theta}-1$이므로 $\cos^2{k\omega t}$를 다음과 같이 풀어줄 수 있다.

\[\cos^2{k\omega t}=\frac{\cos{⁡2k\omega t}+1}{2}\]

따라서 다음과 같다.

\[\int_0^T f(t)\cos{k\omega t}dt=a_k\int_0^T \frac{\cos{2k\omega t}+1}{2}dt=\frac{a_k}{2}\left [ \frac{1}{2k\omega}\sin{2k\omega t}+t \right ]_{0}^{T}=\frac{a_k}{2}\left ( \frac{1}{2k\omega}\sin{2k\omega T}+T \right )\]

이때, $\sin{⁡2k\omega t}$의 주기는 $\frac{T}{2}$이므로 $\sin{⁡2k\omega T}=0$임을 알 수 있다. 고로 다음과 같다.

\[\int_0^T f(t)\cos{k\omega t}dt=\frac{1}{2}a_kT\]

따라서 $a_k$는 다음과 같다.

\[a_k=\frac{2}{T}\int_0^T f(t)\cos{k\omega t}dt\]

$b_k$또한 위와 같은 방식으로 구해주면 다음과 같다.

\[b_k=\frac{2}{T}\int_0^T f(t)\sin{k\omega t}dt\]

이제 복잡한 파동인 $f(t)$을 단순한 파동으로 분해하는데 필요한 모든 작업이 완료되었다. 정리하면 다음과 같다.

\[f(t)=a_0+\sum_{n=1}^∞(a_n \cos⁡{n\omega t}+b_n \sin{⁡n\omega t})\] \[a_0=\frac{1}{T} \int_0^T f(t)dt\] \[a_k=\frac{2}{T}\int_0^T f(t)\cos{k\omega t}dt\] \[b_k=\frac{2}{T}\int_0^T f(t)\sin{k\omega t}dt\]

이때, $a_0$만 따로 정의하지 않을 수 있는 다음의 형태가 주로 쓰인다.

\[f(t)=\frac{a_0}{2}+\sum_{n=1}^∞(a_n \cos⁡{n\omega t}+b_n \sin{⁡n\omega t})\]

이를 다음과 같은 오일러 공식의 주기성을 이용하여 깔끔하게 표현할 수 있다.

\[e^{ix}=\cos{⁡x}+i \sin{x}\]

여기서 $i$는 허수 단위인 $i=\sqrt{-1}$이다. 식에서 보이는 바와 같이 $e^{ix}$는 주기성을 가지고 있다. 이를 이용하여 앞서 유도한 푸리에 급수를 다음과 같이 깔끔히 표현할 수 있다.

\[f(t)=\sum_{n=-\infty}^\infty C_n e^{in\omega t}\] \[C_n=\frac{1}{T} \int_0^T f(t)e^{-in\omega t}dt\]

최종적으로 복잡한 파동함수 $f(t)$을 단순한 파동함수 $e^{in\omega t}$로 분해하는데 성공했다. 여기서 $C_n$이 바로 주파수에 대한 진폭을 나타내는 푸리에 계수이다.

3. 푸리에 변환

앞서 살펴본 바와 같이 푸리에 급수를 통해 어떤 주기함수를 이루는 주파수들을 분해할 수 있었다. 푸리에 변환은 주기함수에서 비주기함수로 확장한 것이다. 주기함수는 푸리에 급수에서 확인한 바와 같이 정수개의 주파수의 조합으로 표현할 수 있지만, 비주기함수는 크기가 큰 주파수부터 크기가 미세한 주파수들까지 무한히 많은 주파수들의 조합으로 표현된다. 즉, 푸리에 변환을 이용하면 주기함수 뿐만 아니라 비주기함수도 시간에 대한 함수에서 주파수에 대한 함수로 변환할 수 있다.

푸리에 변환은 푸리에 급수를 연속적으로 무한히 확장한 것과 같으므로 다음과 같이 푸리에 급수를 변형한 형태로 표현된다.

\[f(t)=\int_{-\infty}^\infty F(x)e^{i2\pi xt} dx\] \[F(x)=\int_{-\infty}^\infty f(t)e^{-i2\pi xt} dt\]

형태가 푸리에 급수와 매우 흡사하다는 것을 알 수 있다. 시간 $t$에 대한 함수 $f(t)$를 푸리에 변환하여 주파수 $x$에 대한 함수 $F(x)$를 구할 수 있다.

여기서 주목할 점은, 푸리에 변환이 역으로도 가능하다는 점이다. 즉, $f(t)$를 통해 $F(x)$로 변환했다면, $F(x)$만으로 $f(t)$을 구할 수 있다. 이를 푸리에 역변환이라 하는데, 이 성질 덕분에 다양한 분야에서 활용된다.

Fig1

Fig. 1. 푸리에 변환 전(왼쪽)과 푸리에 변환 후(오른쪽)[5]

4. 컴퓨터 과학에서의 푸리에 변환의 활용

컴퓨터 과학에서는 연속 데이터가 아닌 이산 데이터를 처리한다. 따라서 연속 함수에 대한 푸리에 변환이 아닌, 이산 푸리에 변환(DFF - Discrete Fourier Transform)이 사용된다. 일반적으로 DFF는 복소수 $x_0$, $x_1$, $\dots$, $x_{n-1}$에 대해 다음과 같은 형태이다.

\[f_j=\sum_{k=0}^{n-1} x_ke^{-i\omega jk}=\sum_{k=0}^{n-1} x_ke^{-\frac{2\pi i}{n} jk}  (j=0,\dots,n-1)\]

이러한 DFF를 이용하여 컴퓨터 과학에서는 다음과 같은 일을 수행한다.

데이터 압축: 인터넷 통신을 위해서는 적은 양의 데이터를 보내어 속도를 높이기 위한 데이터 압축이 필요하다. 허프만 인코딩 등의 압축 알고리즘이 존재하지만 이들은 데이터를 손실하지 않고 압축하는 무손실 압축 방식이기 때문에 압축률이 높지 않다. 반면 DFF를 이용해 압축하면 데이터를 조금 손실하는 대신에 압축률을 크게 높일 수 있다. 예를 들면 소리 데이터에서 비가청 주파수를 제외하고 저장하거나, 이미지를 수신 받을 때 주파수가 낮은 데이터부터 수신 받아 흐린 이미지에서부터 보여지는 등이다. Jpeg, mpeg 등의 파일 확장자를 가지는 이미지 및 영상 파일들이 DFF 방식을 사용하여 압축된다.

신호 처리: 주어진 데이터를 그대로 분석하는 것 보다 DFF로 변환된 데이터를 처리하는 것이 훨씬 간단하고 편리하다. 이는 푸리에 변환이 특정 주파수로 분해하는 과정을 특정한 특징을 가진 것들로 분해하는 것으로 활용할 수 있기 때문이다. 푸리에 변환이 특징을 분해해 내는 연산인 합성곱(Convolution) 중 하나라는 점을 생각하면 당연한 것이다. 예를 들어 노이즈가 발생한 이미지에서 노이즈를 제거하려고 할 때 주어진 이미지에서 노이즈를 제거하기는 매우 힘들다. 하지만 DFF로 이미지를 변환하면 특정 성질을 가진 영역대로 나뉘기 때문에 노이즈에 해당하는 영역을 따로 처리할 수 있다.

알고리즘의 성능 개선: DFF가 알고리즘의 성능 개선에도 활용될 수 있다. 본래 주어진 그대로 DFF를 수행하면 시간 복잡도가 $O(n^2)$이기 때문에 느리지만, 고속 푸리에 변환(FFT – Fast Fourier Transform)을 이용하면 $O(n\log{⁡n})$이 들어 빠르게 DFF를 수행할 수 있다. 즉, 두 배열이 주어졌을 때 두 배열에 대한 Convolution 연산을 FFT를 이용하여 $O(n\log{⁡n})$만에 해결할 수 있다. 이러한 연산의 예로 매우 큰 두 수에 대한 곱을 생각할 수 있다. 고전적인 방법으로 큰 두 수를 곱하려면 $O(n^2)$이 필요하지만 FFT를 사용해 $O(n\log{n})$만에 해결할 수 있다.

위의 모든 활용은 다음의 장점을 이용한 것이다.

Fig2

Fig. 2. 푸리에 변환을 하여 문제를 쉽게 해결하고 푸리에 역변환을 수행할 수 있다[2]

즉, 그냥 풀면 어려운 문제를 푸리에 변환이 된 상태에서 풀면 쉽다는 점을 이용한다. 원래 어려운 문제를 푸리에 변환으로 변환된 쉬운 문제로 변형하여 해결하고 푸리에 역변환으로 답을 얻어내는 것이다.

참고문헌

[1] Eves, Howard Whitley. 수학의 위대한 순간들, 허민, 오혜영 옮김, 1983.
[2] Wikipedia contributors, "Fourier transform," Wikipedia, The Free Encyclopedia, https://bit.ly/30NhP92 (accessed October 6, 2019).
[3] Wikipedia contributors, "Fourier series," Wikipedia, The Free Encyclopedia, https://bit.ly/2IsI26g (accessed October 6, 2019).
[4] Weisstein, Eric W, "Fourier Series," From MathWorld--A Wolfram Web Resource, https://bit.ly/2tcksSB (accessed October 6, 2019).
[5] 한화택, "쉽게 알아보는 공학이야기 11 - 푸리에 급수," 삼성디스플레이 뉴스룸, https://bit.ly/2pQgzoL (accessed October 6, 2019).