Last Updated on 2024-01-06 by BallPen
신호 분석에 자주 사용하는 푸리에 급수의 전개 원리를 알아보겠습니다.
이번 글에서는 푸리에 급수(Fourier series) 전개를 다룹니다.
푸리에 급수는 어느 주기 함수를 \sin함수와 \cos함수의 결합으로 표현하는 수학적 방법을 말합니다.
푸리에 급수는 과학 측정이나 신호처리 분야에서 많이 사용되는데요. 예를 들어 어느 신호에 잡음이 심하게 섞여 원래 신호의 주파수 성분을 알아보기 힘들때가 있어요. 그때 원래 신호의 주파수 성분을 찾아주는 도구로서 푸리에 급수는 유용하게 사용됩니다.
아래는 이번 글의 목차입니다.
Contents
1. 테일러 급수 복습
푸리에 급수로 들어가기 전에 먼저 테일러 급수에 대해 간단히 복습하겠습니다.
무한히 미분가능한 어떤 함수 f(x)가 있을 때 f(x)의 원점근처에서 f(x)를 다항함수의 합으로 표현할 수 있습니다.
\tag{2} \begin{align} f(x) &= f(0) + xf^\prime (0) + {{x^2}\over{2! }}f^{\prime \prime}(0) + {{x^3}\over{3!}}f^{\prime \prime \prime}(0) + \cdots\\ &=c_0 + c_1 x + c_2 x^2 + c_3 x^3 + \cdots \end{align}
이와 같이 어떤 함수를 급수의 형식으로 표현하는 것을 테일러급수라고 합니다.
이때 테일러급수로 만들어진 항의 수를 더 많이 사용할수록 원점근처에서 근사 함수가 원래함수 f(x)와 점점 가까워지는 것을 이전 글에서 소개한 바 있어요.
이제부터 설명할 푸리에 급수도 테일러 급수와 개념적으로 비슷합니다.
2. 푸리에 급수 (Fourier Series)
2-1. 주기함수
주기적 신호란 일정 모양의 파형이 거리 또는 시간에 따라 주기적으로 반복되는 신호를 말합니다. 예를 들어 아래 [그림1]에 있는 f(x)=\sin (x)는 주기가 T=2\pi인 가장 대표적인 주기 함수입니다.
[그림 1]에서와 같이 주기 함수는 어느 x에서의 함수값 f(x)와 x+2\pi에서의 함수값 f(x+2\pi)가 서로 동일한 값을 갖습니다. 이것을 식으로 표현하면 아래와 같습니다.
\tag{1} \begin{align} f(x) &=f(x+2 \pi) \end{align}
예를 들어 [그림 1]에서 x=2.50에서의 함수값인 f(x) = \sin (2.50)은 0.60입니다. 또한 (x+2 \pi)=(2.50+2\pi)=8.78에서의 함수값인 f(x+2 \pi) = \sin (8.78)도 0.60이 됩니다. 그러므로 f(x)와 f(x+2 \pi)의 값이 서로 같아 (1)식이 성립함을 알 수 있습니다.
2-2. 푸리에 급수
푸리에 급수의 기본 개념은 주기가 T_0인 어느 주기 함수 f(t)를 \sin과 \cos함수의 합으로 표현할 수 있다는 거에요.
이때 변수를 거리 x가 아닌 시간 t로 바꾸었는데요. 그 이유는 분석대상 신호의 변수가 보통 시간인 경우가 많기 때문입니다.
이것을 식으로 표현하면 아래와 같아요. 이것을 푸리에 급수라고 합니다.
\tag{3} f(t) = \cdots + c_{(-2)} e^{i(-2)\omega_o t} + c_{(-1)} e^{i(-1)\omega_0 t} + \color{black}{ c_0 } \color{black}+ c_1e^{i(1)\omega_0 t} + c_2 e^{i(2)\omega_0 t} + \cdots
여기서 \omega_0 = 2 \pi f_0 = {{2\pi}\over{T}}의 관계를 가지며, \omega_0를 각진동수, f_0를 진동수라고 합니다.
한편 위에서 말씀드리기를 푸리에 급수는 \sin과 \cos함수의 합으로 주어진다고 했는데요. (3)식을 보면 \sin과 \cos은 전혀 보이지 않아요.
이를 보이게 하기 위해서는 아래의 오일러 공식을 (3)식의 각 항에 적용하면 됩니다.
\tag{4} e^{i \theta} = \cos {\theta} + i \sin {\theta}
또한 (3)식을 \sum을 이용하여 간결하게 정리하면 아래와 같이 쓸 수 있어요. 그러면 비로소 \sin과 \cos이 잘 보입니다.
\tag{5} \begin{align} f(t) &= \sum_{n=-\infty}^{\infty} c_n e^{in\omega_0 t}\\ &=\sum_{n=-\infty}^{\infty} c_n \big( \cos{n \omega_0 t + i\sin{n\omega_0 t}} \big) \end{align}
(5)식에서 n은 정수이며, c_n을 푸리에 계수(Fourier coefficients)라고 합니다. 결국 푸리에 계수만 구하면 푸리에 급수를 최종적으로 만들어 낼 수 있게 되죠.
2-3. 푸리에 계수
위에서 말씀드렸듯이 문제는 푸리에 계수 c_n을 어떻게 구하느냐의 문제가 남습니다.
푸리에 계수를 구하기 위해 f(t)양변을 e^{ir\omega_0 t}로 내적 해봐요. 여기서 r은 정수에요.
이때 내적이란 벡터와 벡터를 곱셈하는 방법 중의 하나를 말하는데요. 함수의 내적에 대한 내용을 잠시만 복습해 보겠습니다. 이 부분이 어려운 분은 무시하고 넘어가도 상관없습니다.
[함수의 내적]
어느 두 벡터가 있을때 내적은 다음과 같이 표현됩니다.
\tag{R-1} \vec{A} \cdot \vec{B} = |\vec{A}||\vec{B}| \cos \theta
그러므로 두 벡터의 사이각 \theta가 0^{\circ}인 경우 벡터의 내적은 |\vec{A}||\vec{B}|가 되고, \theta가 90^{\circ}인 경우 내적은 0이 됩니다.
그래서 임의의 어느 두 벡터가 직교하는지의 여부를 판단하는데 내적을 활용할 수가 있어요.
이와 동일하게 복소함수로 주어지는 어떤 벡터함수 f_1과 f_2가 있다고 생각해보세요. 구간 [a,b]에서 두 함수의 내적은 다음과 같이 수학적으로 정의됩니다.
\tag{R-2} \begin{align} (f_1 \cdot f_2) = \int_a^b f_1(x)f_2^* (x)dx \end{align}
이때 한 함수의 켤레복소수를 곱한 후 적분하게 되는데요. 그 이유는 내적의 결과가 실수가 되도록 하기 위한 것입니다.
예를 들어 a\hat{x} + b\hat{y}인 벡터를 (a,b)로 표기한다면, 자신과 동일한 벡터를 내적했을때 (a,b)\cdot(a,b)는 a^2 + b^2이 됩니다. 이와 동일하게 (a+ib)\cdot(a+ib)는 (a+ib)(a-ib )가 되어 a^2 + b^2으로 동일한 결과가 얻어집니다.
한편 두 벡터가 직교함수인 경우 아래의 식과 같이 0이 됩니다.
\tag{R-3} \begin{align} (f_1 \cdot f_2) = \int_a^b f_1(x)f_2^* (x)dx =0 \end{align}
왜냐면 두 벡터의 사이각이 90^{\circ}이기 때문이에요.
[계속]
계속 진행하겠습니다.
f(t)양변을 e^{ir\omega_0 t}로 내적 해봐요.
그리고 내적 한다는 것은 (R-2)식에서와 같이 켤레복소수를 곱한 후 한 주기 동안 적분한다는 것을 기억하세요. 주기적으로 반복되는 함수이므로 한 주기만 적분해도 전체 구간의 특성을 이해할 수 있습니다.
(5)식의 f(t)를 적용하시면 됩니다.
\tag{6} \begin{align} \Big( f(t)\cdot e^{ir\omega_0 t} \Big) &= \int_0^T f(t) e^{-ir\omega_0 t} dt\\ &=\int_0^T \Big( \sum_{n=-\infty}^{\infty} c_ne^{in\omega_0 t} \Big)e^{-ir\omega_0 t} dt\\ &=\int_0^{T} \Big(\sum_{n=-\infty}^{\infty}c_n e^{i(n-r) \omega_0 t}\Big) dt\\ &=\int_0^T \sum_{n=-\infty}^{\infty} c_n \Big( \cos{(n-r)\omega_0 t +i\sin{(n-r)\omega_0 t\big)}} ~dt\\ \color{blue}n=r일때,\\ &{\color{blue} =\int_0^T c_n dt}\\ & \color{blue}=c_n T\\ \color{red}n\not= r일때, \\ &\color{red} =\int_0^T \sum_{n=-\infty}^{\infty} c_n \Big(\cos k \omega_0t +i\sin k\omega_0 t\Big) ~dt\\ &\color{red}=0 \end{align}
결국 (6)식의 파랑색 수식과 같이 n과 r이 동일한 경우, 내적 결과는 c_n T가 된다는 것을 알 수 있습니다.
반면에 빨강생 수식과 같이 n과 r이 서로 다른 경우, n-r이 또 하나의 정수인 k가 되므로 \sin과 \cos의 한 주기에 걸칠 적분은 0이 됩니다. 이것이 뜻하는 것은 n과 r이 다르면 내적이 되는 두 벡터함수 f(t)와 e^{ir\omega_0 t}가 직교한다는 의미를 갖습니다.
결국 (6)식의 파랑색 수식 부분만을 활용하여 푸리에 계수 c_n을 다음과 같이 표현할 수 있게 됩니다.
\tag{7} \begin{align} c_n = {{1}\over{T}}\int_0^T f(t)e^{-in\omega_0 t} dt \end{align}
푸리에 계수 c_n에 대해 조금만 더 알아보겠습니다.
(7)식에 따르면 c_n은 복소수로 주어지게 됩니다. 즉, 아래의 (8)식과 같이 푸리에 계수 c_n을 표현할 수 있어요.
\tag{8} \begin{align} c_n = a_n-ib_n~~~~(n이 ~양수인 ~경우)\\ c_n = a_n + ib_n~~~~(n이 ~음수인 ~경우) \end{align}
그런데(8)식에서 허수기호 앞의 부호가 서로 다른데요. 물론 수학적으로 저렇게 표현되는 이유를 증명할 수 있습니다만, 간단한 예를 들어 그 이유를 설명해 보겠습니다..
+n인 경우를 생각해보세요. 그러면 저 위에 있는 (5)식을 다음과 같이 전개할 수 있어요.
\tag{9} \begin{align} f(t) &= \sum_{n=1}^{\infty}c_n (\cos n \omega_0 t + i\sin n\omega_o t)\\ &=\sum_{n=1}^{\infty}\Big((a_n - i b_n)(\cos n\omega_0 t + i \sin n \omega_0t)\Big)\\ &= \sum_{n=1}^{\infty}\Big(a_n \cos n\omega_0 t + b_n \sin n\omega_0t\\ ~&~~~~~~~~~~~~~~~~~~~~~~+ia_n \sin n\omega_o t -i b_n \cos n\omega_0 t \Big) \end{align}
이번에는 -n인 경우 다음과 같이 전개할 수 있어요.
\tag{10} \begin{align} f(t)&=\sum_{n=-1}^{-\infty}c_n (\cos (-n) \omega_0 t + i\sin (-n)\omega_o t)\\ &=\sum_{n=-1}^{-\infty}\Big((a_n + i b_n)(\cos n\omega_0 t - i \sin n \omega_0t)\Big)\\ &=\sum_{n=-1}^{-\infty}\Big(a_n \cos n\omega_0 t + b_n \sin n\omega_0t\\ &~~~~~~~~~~~~~~~~~~~~~~-ia_n \sin n\omega_o t +i b_n \cos n\omega_0 t \Big) \end{align}
그러면 (9)식과 (10)식을 서로 합하면 n=0을 제외한 n=-\infty에서 \infty까지로 넓어집니다. n=0인 경우는 나중에 아래 예제에서 볼 수 있겠지만 실수의 상수(c_0)가 나오게 됩니다.
그리고 전개식에서 허수기호가 붙은 항들은 모두 무시하세요. 그래야 등호의 양쪽이 모두 실수함수가 되기 때문이에요.이 관계를 반영하여 (9)와 (10)식을 종합하여 정리하면 최종적으로 다음과 같이 표현할 수 있게 된 답니다.
\tag{11} \begin{align} f(t) &= \sum_{n=-\infty}^{\infty} c_n e^{in\omega_0 t}\\ &=c_0 +\sum_{n=-\infty}^{\infty} c_n \big( \cos{n \omega_0 t + i\sin{n\omega_0 t}} \big)_{n=0제외}\\ &=c_0+\sum_{n=-\infty}^{\infty} \big(a_n \cos n\omega_0 t + b_n \sin n\omega_0 t \big)_{n=0제외} \end{align}
(11)식의 가장 마지막 줄이 푸리에급수를 공부할 때 가장 많이 보게되는 식일 거에요. 다시 한번 더 말씀드리면 n=0인 경우의 푸리에 계수가 c_0이고, c_n의 실수부가 a_n, 허수부가 b_n이라는 것을 기억하세요.
3. 푸리에 급수 예제 풀이
다음 예제를 풀어보죠.
[문제]
T=2\pi인 주기함수가 다음과 같이 주어질 때 푸리에 급수를 구해 보세요.
\tag{12} f(t) = \begin{cases} p & -{{{\pi}\over{2}}< t < {{\pi}\over{2}}} \\ 0 & {{\pi}\over{2}} < t < {{3\pi}\over{2}} \end{cases}
[풀이]
(7)식으로 푸리에 계수 c_n을 구한 후 (11)식의 마지막 줄에 대입하여 정리하면 됩니다.
이때 적분 구간을 -{{\pi}\over{2}}에서 {{\pi}\over{2}}로 설정해도 됩니다. 그 이유는 {{\pi}\over{2}}에서 {{3\pi}\over{2}}까지는 0으로 문제가 주어졌기 때문이죠.
제일 먼저 n=0인 경우를 알아봐요
\tag {S-1} \begin{align} c_0 &= {{1}\over{T}} \int_0^T f(t) e^{-i n \omega_0 t} dt\\ &={{1}\over{2\pi}}\int_{- {{\pi}\over{2}}}^{{\pi}\over{2}}pe^{-i (0)\omega_0 t}dt\\ &={{p}\over{2\pi}}[t]_{-{{\pi}\over{2}}}^{{\pi}\over{2}}\\ &={{p}\over{2}} \end{align}
n=0을 제외한 다른 계수는 다음과 같습니다.
\tag{S-2} \begin{align} c_n &= {{1}\over{T}} \int_0^T f(t) e^{-i n \omega_0 t} dt\\ &= {{1}\over{2\pi}} \int_{-{{\pi}\over{2}}}^{{\pi}\over{2}} p e^{-i n\omega_0 t} dt\\ &={{p}\over{2\pi}}\int_{-{{\pi}\over{2}}}^{{\pi}\over{2}}\Big(\cos(n\omega_0 t)-i\sin(n\omega_0 t)\Big)dt\\ &={{p}\over{2\pi}}\Big( \int_{-{{\pi}\over{2}}}^{{\pi}\over{2}} \cos(n\omega_0 t) dt - i\int_{-{\pi}\over{2}}^{{\pi}\over{2}}\sin(n\omega_0 t)dt \Big)\\ &={{p}\over{2\pi}}\Big(\Big[{{1}\over{n\omega_0}}\sin(n\omega_0 t)\Big]_{-{{\pi}\over{2}}}^{{\pi}\over{2}} - i\Big[-{{1}\over{n\omega_0}}\cos(n\omega_0 t)\Big]_{-{{\pi}\over{2}}}^{{\pi}\over{2}}\Big)\\ &={{p}\over{2n\pi \omega_0}} 2\sin\big({{n\pi\omega_0}\over{2}}\big)+i{{p}\over{2n\pi\omega_0}}(0)\\ &={{p}\over{n\pi\omega_0}}\sin \big({{n\pi\omega_0}\over{2}}\big)\\ &={{p}\over{n\pi (2\pi/T)}}\sin\big( {{n\pi(2\pi/T)}\over{2}} \big)\\ &={{p}\over{n\pi}}\sin{{n\pi}\over{2}} \end{align}
이때 위에서 말씀드렸습니다만 푸리에계수 c_n은 실수부 a_n, 허수부 b_n으로 주어지는데요. (S-2)식을 전개하는 과정에서 허수부 b_n이 0이되어 실수부만 남게 되었습니다.
그래서 (S-2)식의 가장 마지막 답을 (11)식의 a_n에 대입하면 됩니다.
결국 문제에 주어진 주기함수의 푸리에 급수는 다음과 같이 쓸 수 있습니다.
\tag{S-3} f(t) = {{p}\over{2}} + {\sum_{n=-\infty}^{+\infty}}\Big({{p}\over{n\pi}} \sin{{n\pi}\over{2}} \cos n\omega_0 t \Big)_{n=0제외}
급수의 모양을 간결하게 보이기 위해 만일 p=1이라고 가정하면 결국 푸리에 급수는 다음과 같습니다.
\tag{S-4} \begin{align} f(t) &= \cdots - {{1}\over{3\pi}}\cos3 \omega_0 t +0+ {{1}\over{\pi}} \cos \omega_o t + {{1}\over{2}} + {{1}\over{\pi}} \cos \omega_o t+0 - {{1}\over{3\pi}}\cos3 \omega_0 t + \cdots\\ &={1 \over 2} + {2 \over \pi} \cos \omega_0 t -{{2}\over{3 \pi}}\cos 3\omega_0 t + \cdots \end{align}
위 결과는 n=-3, -2, -1, 0, 1, 2, 3인 경우에 대해 정리한거에요. 그런데 n=-2와 n=2인 경우에는 계산하면 푸리에 계수가 0이 됩니다. 또한 재미있는 것은 n이 양수인 경우와 음수인 경우가 대칭적으로 나타나 n=0 항을 제외한 다른 항들의 계수가 2배가 된다는 거에요.
이를 반영해서 (S-4)식의 마지막 줄을 (S-3)식의 형태로 다시 쓰면 다음과 같습니다. 이때 \sum의 시작점이 n=1로 변경됩니다.
\tag{S-5} f(t) = {{p}\over{2}} + {\sum_{n=1}^{+\infty}}\Big({{2p}\over{n\pi}} \sin{{n\pi}\over{2}} \cos n\omega_0 t \Big)
지금까지 푸리에 급수 전개에 대한 원리와 기본 개념을 설명드렸습니다. 앞으로 몇 편에 걸쳐 푸리에 급수와 변환에 대한 글이 이어질 거에요. 참고하세요.