Fundamentals/Linear Algebra

[Linear Algebra] Lecture 26-(2) 정규직교기저와 푸리에 급수 그리고 오일러 공식(Orthonormal basis, Fourier series and Euler's formula)

츠벤 2018. 1. 1. 02:51

이번 강의에선 지난 강의에 이어서 푸리에 급수(Fourier Series)에 관한 이야기를 좀더 하겠다. 푸리에 급수와 선형대수와의 유사성을 살펴보고 이어서 푸리에 급수의 계산 및 표현방식에 있어서 훨씬 효율적인 형태인 오일러 공식에 대해 설명하도록 하겠다. 

 

 

 

4. 정규직교기저의 확장과 푸리에 급수의 직교성

 

- Orthonormal basis expansion

 

Lecture 26-(1)에서 설명했듯이 푸리에 급수는 선형대수의 연산으로 설명할 수 있다. 이를 위해 먼저 알아볼 것은 정규직교기저(orthonormal basis)를 이용한 투영(projection), 혹은 전개(expansion)이다. 정규직교벡터에 대한 내용은 Lecture 17-(1)을 참고하자. 

 

임의의 n차원에 대한 정규직교기저벡터(orthonormal basis vector)가 다음과 같이 존재한다고 가정해보자. 

 

 

식 (17.1)은 n차원 공간에 대한 정규직교기저벡터를, (17.2)는 이를 행렬(matrix)의 형태로 만든 것이고, 이때 Q의 크기는 nxn, rank=n이다. 이들 기저벡터들은 임의의 가중치(weight)를 각 기저에 곱하여 n차원 공간에 존재하는 어떠한 벡터로도 만들어질 수 있다. 이 벡터를 v라고 했을 때 다음과 같이 식을 정리할 수 있다. 

 

 

식 (18.1)은 정규직교기저 q에 가중치 x가 각각 곱해진 형태를 전개(expansion)하여 표현한 것이고, 이를 행렬의 연산 형태로 표현한 것이 (18.2)이다. 즉 정규직교기저의 전개(Orthonormal basis expansion)라고 할 수 있다. 정규직교기저벡터가 있다면 위의 식과 같은 연산을 통해 우리는 n차원 공간의 어떠한 벡터 v도 만들 수 있다. 

 

여기서 우리가 궁금한 것은 어떤 벡터 v를 만들기 위해선 각각의 기저벡터에 얼마만큼의 가중치를 곱해야 하는가? 이다. 간단히 생각하면 Q의 역행렬(inverse matrix)을 구하여 (18.2)의 양변에 곱해주면 될 것이다. 더구나 Q는 정규직교벡터들로 이루어진 정방행렬(정규직교행렬)이기 때문에 역행렬은 Q의 전치(transpose)를 통해 아주 쉽게 구할 수 있다. 물론 맞는 얘기지만 푸리에 급수의 직교성(orthogonality)과 연결지어 이해하기 위해 좀 더 세부적으로 쪼개서 생각해보자. 

 

식 (18.1)을 봤을 때 가중치 벡터 x중에서 먼저 x1을 구하기 위해선 어떻게 해야할까? 가중치들이 곱해진 벡터들이 정규직교기저벡터임을 생각하면 이를 어렵지 않게 구할 수 있다. x1을 구하기 위해선 바로 (18.1)의 양변에 q1의 전치(transpose)를 곱해주면 된다. 아래의 식을 보자. 

 

 

식 (19.1)은 양변에 q1의 전치를 곱해준 모습이다. x1에 대한 항은 똑같은 정규직교기저를 곱한 것이기 때문에 이들의 내적은 1이 된다(동일한 벡터이기 때문에 두 벡터 사이의 각이 0도 이므로 cos(0)=1). q1을 제외한 나머지 벡터들은 전부 q1과 직교(orthogonal)하기 때문에 0이 된다. 따라서 각 가중치의 계산식은 (19.3)과 같이 정리할 수 있다. 여기까지 정리한 식 (19)가 푸리에 급수의 직교성과 연결지어 이해하기 위한 핵심 아이디어이다. 이 둘을 어떻게 연결지어 이해할 수 있을까? 푸리에 급수의 식을 다시 꺼내서 비교해 보도록 하자. 

 

 

 

 

- Orthonormal basis and Fourier series expansion

 

바로 이전 강의에서 다루었듯이 푸리에 급수의 식은 cos함수와 계수 an, sin함수와 계수 bn, 그리고 a0의 선형조합의 형태로 이루어진다. 이 식을 전개(expansion)한 것과 식 (18)에서 다루었던 정규직교기저(orthonormal basis)의 전개식과 비교를 해보자. 

 

 

식 (20.2)는 푸리에 전개식(Fourier expansion)을, 식 (21.2)는 정규직교기저의 전개(Orthonormal basis expansion)를 각각 나타낸다. 우리는 앞서 푸리에 급수의 계수를 구하기 위한 핵심아이디어가 직교성(orthogonality)라고 배웠다. 그런데 이 푸리에 급수의 직교성에 대한 성질은 식 (21)의 정규직교기저의 개념과 일맥상통한다. 푸리에 급수에서의 직교성이라 함은 예를 들어 cos(x)를 기준으로 봤을 때 cos(2x), cos(3x), ... 등과 sin(x), sin(2x), sin(3x), ... 등 모든 sin함수 및 다른 주파수를 가지고 있는 모든 cos함수와 직교(orthogonal)하다는 것이다. 이 말은 cos(x)와 cos(2x)와 같이 직교한 두 함수의 곱을 한 주기(-PI ~ PI or 0 ~ 2PI)의 구간에서 적분(integral)했을 때 0이 된다는 것이다. 정규직교기저의 경우에도 동일한데, 가령 q1과 q2를 내적(inner product)했을 때 결과가 0이 되고 이 둘은 직교한다고 할 수 있다. 

 

결국 cos(x)는 자기 자신과의 곱에 대한 적분은 1이 되고 나머지 모든 sin과 cos(kx)함수와의 곱의 적분에 대해서는 0이 되므로, 모든 cos(nx)와 sin(nx) (n은 정수)함수를 푸리에 급수의 기저(basis)로 봤을 때 이들은 선형대수의 정규직교기저와 같다고 할 수 있다. 이는 어떤 n차원 공간의 정규직교기저 q1, ... qn이 있을 때 q1은 자기 자신과의 내적은 1이 되고 나머지 qn과의 내적은 0이 되므로 이 둘은 완전히 같은 개념으로 볼 수 있는 것이다. 단지 직교성에 대한 개념을 벡터(vector)끼리의 내적(inner product)연산으로 표현한 것인지, 아니면 연속인(continuous) 함수의 적분(integral)으로 표현한 것인지가 그 차이라고 할 수 있다. (바로 지난 강의에서 적분은 내적을 연속적으로 표현한 것임을 기억하자)

 

 

- Coefficients

 

이제 계수(coefficient)에 대해 이야기 해보자. 푸리에 전개식 (20.2)에서 계수는 a0, an, bn등이다. 정규직교기저 전개식 (21.2)에서 계수는 x1, x2, ... 라고 할 수 있다. 푸리에 급수에선 계수들을 구하기 위해 f(x)의 식 양변에 구하고자 하는 계수에 해당하는 기저함수인 sin, 혹은 cos함수를 곱하고 적분하여 계산하였다. 정규직교기저의 경우에도 동일하게 구하고자 하는 계수에 대한 기저벡터를 식의 양변에 곱하여 계산하였다. 이 둘에 대한 식을 비교하여 살펴보자. 

 

 

 

식 (22)는 푸리에 계수 a1을 구하는 과정을 표현한 것이다. (22.1)은 푸리에 전개식의 양변에 a1에 대한 기저함수 cos(x)를 곱해준 모습이고 (22.2)는 이를 적분한 것이다. 적분한 결과 (22.3)과 같이 cos(x)cos(x)항을 제외한 나머지 항은 0이 되어 사라지고 (22.4)와 같이 a1에 대한 식이 정리된다. 

 

이번엔 식 (19)를 보자. 계수 x1을 구하기 위해 정규직교기저 전개식의 양변에 q1을 곱한 것이 (19.1)이다. 정규직교기저의 특성상 자기 자신과의 내적인 q1q1은 1이 되고 나머지는 수직(perpendicular)하기 때문에 (19.2)와 같이 0이 된다. 결과적으로 계수 x1에 대한 계산식은 (19.3)과 같이 정리할 수 있다. 푸리에 식과 비교해보면 a1은 x1과 같고, f(x)는 벡터 v, 기저벡터 q1은 cos(x)와 같다. 이와 같이 계수를 구하는 과정에서도 직교성(orthogonality)을 이용한다는 개념은 푸리에 급수나 선형대수의 정규직교기저나 동일하다

 

정리하자면 푸리에 급수는 선형대수와 연결지어 생각할 수 있으며 핵심 아이디어인 직교성(orthogonality)을 푸리에 급수에서는 sin과 cos이라는 함수(function)의 형태로써 사용한 것이고, 선형대수에서는 벡터로써 사용한 것이다. 이 둘은 모두 계수와 기저와의 선형조합(Linear combination)의 형태로써 표현되는데, 함수로 표현할 때는 적분, 벡터로 표현할 때는 내적이라는 연산을 적용한 것이다. 

 

이를 통해 우리는 어떤 주기함수를 여러 개의 주파수의 선형조합으로 표현하는 푸리에 급수와, 선형대수에서 정규직교기저의 선형조합을 통해 n차원의 임의의 벡터 v를 표현할 수 있다는 정규직교기저 확장(expansion)에 대한 개념사이의 연결고리를 찾을 수 있다. 그리고 그 연결고리는 바로 직교성(orthogonality)이다

 

 

 

 

 

5. 오일러 공식과 복소 푸리에 급수(Euler's formula and complex Fourier series)

 

- Euler's formula

 

지금부터 공부할 내용은 오일러 공식(Euler's formula)에 관한 내용이다. 오일러 공식을 공부하는 이유는 푸리에 급수의 계수에 대한 식을 굉장히 간단하고 계산하기 편리하게끔 바꿔주기 때문이고, 또한 이후에 공부할 푸리에 변환(Fourier Transform)을 하는데 있어서 없어서는 안될 개념이기 때문이다. 푸리에 급수에 적용하기에 앞서 오일러 공식에 대해 간단히 정리해보자. 

오일러 공식의 형태는 다음과 같다. 

 

 

식 (23)이 그 유명한 오일러 공식(Euler's formula)이다. 이공학도라면 반드시 한 번쯤은 공부했을 식이며 인터넷에서 방대한 자료를 쉽게 찾아볼 수 있다. 오일러 공식이 저렇게 생겼다는 것은 알겠는데, 왜 위와 같이 정의될 수 있는지 고민해본적은 많지 않을 것이다. 어떻게 위와 같이 정의할 수 있고, 또 의미하는 바가 무엇일까? 

 

일단 오일러 공식은 지수함수(exponential function) $e^x$로 부터 시작된다. 지수함수는 미분을 해도 자기 자신과 같아지는 굉장히 좋은 특성을 가진 함수이다. 지수함수는 테일러 급수(Taylor series)를 통해 정의할 수 있는데, Lecture 23-(2)에서 다룬 적이 있다. 지수함수의 정의를 다시 써보면 아래와 같다. 

 

 

식 (24)는 지수함수를 x=0에서의 테일러 급수를 통해 정의한 모습이다. 여기서 오일러는 지수함수의 지수부 x를 허수 jx로 만들어서 오일러 공식을 만들어냈다. x를 허수 jx로 바꾸면 어떻게 되는지 살펴보자. 

 

 

식 (25.1)과 (25.2)는 지수함수의 지수부를 허수 jx로 바꾸어 정리한 것이고, (25.3)은 이를 실수부(real part)와 허수부(imaginary part)로 분리하여 정리한 것이다. 그런데 이렇게 정리한 것이 어떻게 cos과 sin함수가 될 수 있을까? cos과 sin함수를 마찬가지로 테일러 급수로 정리해보면 그 형태가 보일것이다. 

 

 

식 (26.1)의 cos함수의 테일러 급수는 (25.3)의 지수함수의 실수부에 해당하고, (26.2)의 sin함수의 테일러 급수는 허수부에 해당한다. 따라서 복소지수함수는 cos과 sin함수의 조합으로 표현할 수 있다. 복소지수함수를 표현함에 있어서 보통 허수부는 알파벳 j나 i를 사용하고, x는 각도를 나타내는 기호 세타(theta, $\theta$)로 표현하기도 한다. 또한 실수부를 x축, 허수부를 y축으로 하여 복소평면(complex plane)에 복소지수함수를 표현할 수도 있다. 이제 이 오일러 공식을 푸리에 급수에 적용해보자. 

 

 

 

 

- Complex Fourier Series

 

우리가 지금부터 할 일은 앞서 배웠던 푸리에 급수의 식을 오일러 공식을 이용하여 간단하게 만드는 것이다. 즉 아래의 식과 같이 만드는 것이 목적이다. 

 

 

식 (27)은 기존의 삼각함수의 선형조합의 형태로 이루어진 푸리에 급수의 식을 지수함수(Exponential function)가 포함된 복소 푸리에 급수에 대한 식으로 정리한 것이다. 삼각함수의 형태일 땐 구해야할 계수가 a0, an, bn등 총 3개인 반면, 복소 푸리에 급수식은 단 하나의 계수 cn에 대해서만 구하면 된다. 기존 방식에 비해 훨씬 식이 간결하고 효율적이다. 

 

그렇다면 어떻게 푸리에 급수의 식을 복소 푸리에 급수의 식으로 정리할 수 있을까? 바로 앞서 공부했던 오일러 공식을 이용하면 된다. 아래의 식을 보자. 

 

 

식 (28.1)은 기존의 오일러 공식을, (28.2)는 오일러 공식에서 허수부의 부호가 반대인 켤레(conjugate)를 나타낸다. 이 둘을 서로 더하거나 빼면 어떤 결과가 발생할까? 바로 아래의 식과 같이 될 것이다. 

 

 

식 (29.1)은 복소지수함수(complex exponential function)와 그의 켤레를 서로 더한 결과를, (29.2)는 서로 뺀 결과를 나타낸다. 이를 통해 우리는 sin과 cos함수를 복소지수함수의 연산으로 각각 표현할 수 있다. 눈치가 빠른 분들은 여기 까지 공부했다면 기존의 푸리에 급수식의 sin과 cos을 식 (29)의 복소지수함수의 식으로 대체하여 정리하면 되겠구나! 하고 생각할 것이다. 맞다. 하지만 그 과정에서 약간의 트릭이 필요하다. 일단 푸리에 급수에 (29)의 복소지수함수를 대입하여 정리해보자. 

 

 

먼저 푸리에 급수식에 (29)에서 정리한 식을 대입하기 전에 필요한 과정이 있다. 푸리에 급수에서 sin과 cos의 입력값 x는 임의의 주파수를 나타낼 수 있는 정수 n이 곱해진 nx이다. 따라서 (29)를 푸리에 급수에 대입하기 위해선 x를 nx로 바꾼 뒤 대입해야 한다. (29)의 x를 nx로 교체하면 (30.1)과 같이 정리할 수 있으며, 이를 푸리에 급수에 그대로 대입한 것이 (30.2)이다. 여기서 식을 전개하여 (30.3)과 같이 정리한 뒤, 복소지수함수와 그의 켤레로 각각 묶어서 정리해주면 (30.4)가 된다. 이때 계수 bn에는 1/2j가 곱해져 있는데 여기서 1/j는 분자, 분모에 똑같이 j를 곱해서 정리하면 -j가 되므로 분자를 -jbn으로 정리할 수 있다. 마지막으로 분모를 하나로 정리하면 (30.6)과 같이 정리할 수 있다. 

 

여기서 마지막 식인 (30.6)에서 첫 번째 시그마항과 두 번째 시그마항을 비교해보자. 첫 번째 시그마항의 계수는 (an-jbn)/2이고, 두 번째 시그마항의 계수는 (an+jbn)/2으로 허수부만 부호가 다르다. 마찬가지로 복소지수함수도 부호가 다른 것을 확인할 수 있다. 즉 두 항이 켤레의 관계임을 알 수 있다. 우리가 하고싶은 것은 이 켤레의 관계를 깨고 하나의 복소지수함수로 정리할 수 있도록 만드는 것이다. 어떻게 할 수 있을까? 힌트는 시그마의 인덱스 n에 있다. 

 

켤레의 관계를 없애고 식을 하나로 만들기 위해선 두 번째 시그마항의 복소지수함수의 부호를 +로 만들어주면 된다. 즉 $e^{-jnx}$를 $e^{jnx}$로 만들어야 한다. 이를 위해선 두 번째 시그마항의 n의 부호를 반대로 바꿔주면 된다. 어떻게 n의 부호를 반대로 만들어 줄 수 있을까? 일단 무작정 n을 -n으로 바꿔서 식을 정리해보자. 

 

 

식 (30.7)은 두 번째 시그마항의 n을 무작정 -n으로 치환하여 정리한 것이고, 두 번째 시그마의 -n을 n으로 바꾸어 순서대로 다시 정리한 것이 (30.8)이다. 여기서 두 번째 시그마항은 수평선을 기준으로 봤을 때 원래 1에서 무한대까지의 합을 y축을 기준으로 뒤집어서 음의 영역의 n인덱스로 바꾼 것으로 생각할 수 있다. 

 

이렇게 놓고 보니 두 개의 시그마항을 하나의 시그마항으로 합칠 수 있을 것 같이 보인다. 왜냐하면 두 항 모두 양의 복소지수함수로 묶여있고, 첫 번째 시그마항은 1부터 무한대(infinite)까지 더하고, 두 번째 시그마항은 음의 무한대(negative infinite)부터 -1까지 더하기 때문이다. 또한 n=0에 대한 값은 a0로 생각할 수 있기 때문에 결과적으로 식 (30.10)에서와 같이 a0는 c0로, 첫 번째 계수항은 cn, 두 번째 계수항은 음의 인덱스에 대한 cn으로 생각하여 식을 하나로 합칠 수 있는 것이다. 

 

여기서 식 (30.8)에서 (30.9)로 넘어가는 과정이 조금 헷갈릴 수 있는데, an은 cos함수로 계산되는 계수이며 cos(x)=cos(-x)를 만족하는 우함수(even function)이다. 따라서 음의 입력값이 들어가도 결과값은 같기 때문에 $a_n=a_{-n}$으로 정리할 수 있다. 반면에 bn의 경우엔 -sin(x)=sin(-x)를 만족하는 기함수(odd function)를 통해 계산되므로 $-b_n=b_{-n}$으로 정리할 수 있으며 이렇게 정리한 것이 (30.9)이다. 두 시그마항의 계수가 같고 복소지수함수의 부호 또한 같기 때문에 식을 하나로 합쳐서 식 (30.11)과 같이 복소지수함수로 정리할 수 있다. 

 

이렇게 하여 sin과 cos함수로 복잡하게 이루어진 푸리에 급수의 식을 하나의 계수항과 복소지수함수(Complex exponential function)로 심플하게 구성된 복소 푸리에 급수(Complex Fourier Series)의 식으로 정리하였다. 

 

 

 

 

- Coefficient of Complex Fourier Series

 

이제 복소 푸리에 급수의 계수 cn을 구하는 방법을 공부해보자. cn을 구하는 방법은 두 가지가 있다. 첫 번째는 기존의 계수 an과 bn의 계산식을 cn의 계산식에 그대로 대입하여 정리하는 것이다. 두 번째 방법은 an과 bn을 구하던 방식과 같이 양변에 복소지수함수를 곱하여 적분해주는 것이다. 우선 첫 번째 방법으로 cn을 계산해보자. 

 

 

식 (31.1)과 (31.2)는 기존의 an과 bn을 구하기 위한 공식이다. 이 두 공식을 (31.3)의 cn에 그대로 대입하여 정리한 것이 (31.4)이다. 여기서 공통으로 포함된 pi와 f(x)와 같은 항들을 밖으로 빼서 정리해주면 (31.5)와 같이 정리할 수 있는데, 이때 괄호안의 식은 cos(nx)-jsin(nx)가 된다. 그런데 이 식은 앞서 살펴봤던 오일러 공식의 켤레(conjugate)인 (28.2)와 같은 것을 볼 수 있다. 따라서 오일러 공식의 켤레로 식을 대체해주면 식 (31.6)과 같이 cn을 구하는 공식을 정리할 수 있다. 

 

첫 번째 방식은 기존에 정리했던 공식을 활용하여 그대로 대입하여 계산하는 방식이다. 반면 지금부터 알아볼 두 번째 계산방식은 an과 bn을 계산하던 것 처럼 복소지수함수의 직교성(orthogonality)을 이용하여 계산하는 방법이다. 우선 복소지수함수의 직교성에 대해 알아보자. 

 

 

식 (32.1)은 복소지수함수와 그의 켤레의 곱을 $-\pi$ ~ $\pi$구간에서 적분한 것이다. 켤레를 곱한 이유는 곱의 결과가 실수(real number)가 나오도록 하기 위함이다. 원래의 복소지수함수와 그의 켤레는 서로 다른 주파수상수 n과 m이 각각 곱해져있다. 이를 적분한 식이 (32.2)이고, n-m을 k로 치환한 식이 (32.3)이다. 

 

이제 n과 m이 다른 경우와 n과 m이 같은 경우, 즉 주파수가 서로 다른 경우와 같은 경우를 비교하여 살펴보자. (32.4)는 n과 m이 다른 경우에 적분의 계산 결과를 나타낸다. 오일러 공식을 이용하여 삼각함수로 풀어서 계산하면 그 결과가 0이 된다. 이는 n과 m이 어떤 값이던 서로 다른 정수인 경우에 전부 해당된다. 

 

이와는 반대로 (32.5)는 n과 m이 같은 경우, 즉 주파수가 같은 경우의 적분계산결과이다. n과 m이 어떤 값이던 간에 값이 같다면, 적분의 결과는 $2\pi$가 된다. 따라서 (32.6)과 같이 n=m이면 $2\pi$, nm이면 0이 된다. 

 

정리하자면 복소지수함수와 그의 켤레에 대한 곱을 한 구간에서 적분을 한다는 것은 오일러 공식에 따라 두 개의 주기신호를 내적(inner product)한다는 의미고, 또한 선형결합(Linear combination)하는 것이다. 즉 두 주기 신호를 내적함에 있어서 오일러 공식을 이용하여 복소지수함수로 보다 간단히 표현하고 계산한 셈이다. 이렇게 복소지수함수를 이용하여 내적을 해도 두 신호의 주파수가 다르면(n과 m이 다르면) 내적 값이 0이 되어 직교(orthogonal)한다. 다시 말하면 복소지수함수도 직교성(orthogonality)을 만족한다는 것이다. 우리는 이와 같은 복소지수함수의 직교성을 이용하여 복소푸리에급수의 계수 cn을 계산할 수 있다. 계산 방법은 아래와 같다. 

 

 

복소푸리에급수(Complex Fourier series)의 식 (33.1)의 양변에 다른 주파수를 가진 켤레복소지수함수 $e^{-jmx}$를 곱하고 $-\pi$ ~ $\pi$구간에서 적분하여 (33.2)와 같이 정리한다. (33.2)의 우변의 적분식에서 시그마(sigma)와 계수 cn을 적분 밖으로 빼서 정리하면 (33.3)과 같이 된다. 이때 식 (32.6)에서 정리한 것과 같이 적분식은 n과 m이 같을 때에만 0이 아닌 수가 되어 살아남게된다. 따라서 시그마는 n=m일 때에만 고려하기 때문에 (33.4)와 같이 계수 cn과 n=m일 때의 적분값 2PI만이 남게 된다. 이때 좌변의 적분식에는 -jmx로 정리되어 있는데, n=m이기 때문에 -jnx로 정리할 수 있다. cn을 계산하는 최종식인 (33.5)는 앞서 an과 bn을 대입하여 정리한 식 (31.6)과 일치함을 볼 수 있다. 

 

이렇게 하여 우리는 삼각함수로 이루어져 있는 푸리에 급수의 식을 복소지수함수(Complex Exponential function)를 이용하여 복소푸리에급수(Complex Fourier Series)로 간단히 표현할 수 있었다. 마지막으로 푸리에 급수와 복소푸리에급수를 비교해보자. 

 

 

같은 기능을 하는 식이지만, 식의 형태만 봐도 (34.2)의 복소푸리에급수가 훨씬 간단한 형태임을 확인할 수 있다. 푸리에 급수는 계산해야 할 계수도 a0, an, bn등 총 3개인 반면, 복소푸리에급수는 cn 하나만 계산하면 된다. 식의 표현 방법이나 계산의 효율성 측면에서도 복소푸리에급수가 훨씬 우수하다. 하지만 푸리에 이론에 대한 깊은 이해를 위해선 삼각함수의 선형조합으로 구성된 푸리에 급수를 먼저 학습하고 이해하는 것이 더 좋다. 비록 실제 구현에는 복소푸리에급수가 사용되겠지만, 푸리에 이론, 나아가 라플라스 방정식(Laplace's equation)을 공부하기 위해서도 이러한 변환과정을 기초부터 잘 이해하는 것이 중요하다. 

 

식 (34.3)은 복소푸리에급수를 임의의 주기 T에 대해서 정리한 것이다. 보다 수월한 개념설명을 위해서 지금까지 주기를 $2\pi$로 가정하고 설명하였으나, 임의의 주기를 가진 함수를 정의하기 위해선 (34.3)과 같이 임의의 주기 T를 고려한 식을 사용하면 된다. 즉 지금까지의 식에는 T에 $2\pi$를 대입하면 결과적으로 같은 식이 된다. 

 

 

 

 

 

6. 복소 푸리에 급수의 구현(Implementation of Complex Fourier series)

 

- Square wave(Complex Fourier series)

 

바로 지난 강의에서 푸리에 급수로 구현했던 사각파(square wave)를 복소푸리에급수를 이용하여 구현해보자. 우선 지난 강의에서 다루었던 사각파의 정의에 관한 식을 이용하여 복소푸리에급수의 계수 cn을 계산해보자. 

 

 

식 (13.1)은 지난 강의에서 다루었던 사각파(square wave)에 대한 식이다. 사각파 함수 f(x)를 cn의 식에 대입하여 정리한것이 (35.1)이다. 지난 번과 마찬가지로 구간을 $-\pi$ ~ $0$와 $0$ ~ $-\pi$로 나누어 식을 정리하면 (35.2)와 같이 되고, 여기서 적분을 수행하여 정리하면 (35.3)을 거쳐 (35.4)가 된다. 

 

여기서 유의해야 할 포인트가 존재하는데, 바로 인덱스 n에 따라 분기가 발생한다는 점이다. 식 (35.4)의 복소지수함수를 오일러 공식(Euler's formula)을 이용하여 전개하면 (35.5)와 같이 정리할 수 있다. 이때 분기는 인덱스 n이 홀수(odd number)일 때 복소지수함수값이 -1, 짝수(even number)일 때 1이 된다는 것이다. 즉 n이 홀수면 cos(PI), cos(3*PI), ...가 됨에 따라 -1이 되고 sin함수의 값은 sin(PI), sin(3*PI), ...가 됨에 따라서 0이 되기 때문이다. 반대로 n이 짝수면 cos(2*PI), cos(4*PI), ... 는 전부 1이 되고 나머지 sin함수는 마찬가지로 0이 된다. 

 

이와 같이 n이 짝수냐, 홀수냐에 따라 복소지수함수의 값이 달라지고, 식 (35.4)를 이러한 분기에 따라 정리하면 아래 식과 같다. 

 

 

n이 홀수(odd number)인 경우 식 (35.7)과 같이 사각파의 계수 cn에 대한 계산식이 도출된다. 반면 n이 짝수(even number)인 경우엔 그 결과가 (35.9)와 같이 0이 되는 것을 볼 수 있다. 결과적으로 사각파에 대한 복소지수함수는 n이 홀수일때만 작용하게 된다. 다시 말하면 사각파에 대한 복소푸리에급수는 오직 홀수 조파(odd harmonics)만 갖는다는 것이다

 

또한 cn의 계산식 (35.7)을 보면 허수를 나타내는 j가 곱해져 있음을 볼 수 있다. 이는 곧 우리가 만들고자 하는 사각파가 오직 sin함수의 조합만으로 형성됨을 의미한다. 이전 강의에서 일반 푸리에 급수로 구현했을 때도 cos함수의 계수 an은 모두 0이고 sin함수의 계수 bn만이 살아남았음을 기억하자. 관련된 힌트는 sin함수의 테일러 급수식 (26.2)에서도 얻을 수 있는데, 식이 홀수항 만으로만 구성되었다는 것을 주목하자. 

 

마지막으로 살펴볼 것은 n=0일 때의 계수 c0이다. 보통 복소푸리에급수의 계수 cn을 계산할 때도 마찬가지로 c0를 따로 계산해봐야 한다. c0는 어떻게 계산되는지 살펴보도록 하자. 

 

 

식 (36)과 같이 c0는 0인 것을 볼 수 있다. 따라서 c0는 계산을 따로 하지 않아도 무관하다. 하지만 여기서 c0에 대해 언급을 하는 이유는 사각파의 계수계산식을 구현할 때 이 c0를 계산하는 부분을 주의해야하기 때문이다. 식 (35.7)의 cn 계산식을 보면 분모에 n이 있는데, 이 식을 이용하여 c0를 그대로 계산해버리면 0으로 나눔에 따라 값이 무한대(infinite)가 되어버린다. 따라서 구현할 때는 c0에 관한 처리를 따로 해주어야 한다. 이제 구현을 해보고 마무리 짓도록 하자. 

 

 

- MATLAB implementation

 

아래 그림은 사각파(square wave)를 복소푸리에급수(complex Fourier series)로 구현하여 나타낸 그래프이다. 

 

 

 

Fig. 5 복소푸리에급수(Complex Fourier Series)를 이용한 사각파의 구현

 

 

Fig. 5는 복소푸리에급수(Complex Fourier Series)를 이용하여 사각파를 구현한 것이다. 일반 푸리에 급수로 구현했을 때와 동일한 결과를 보이는 것을 알 수 있다. 아래는 MATLAB 구현 코드이다. 

 

 

 

for문 안은 홀수(odd number) 인덱스에만 연산을 하고 제로인덱스는 건너뛰기위한 처리가 추가되었다. 물론 위의 홀수와 제로인덱스 처리부를 넣지 않고 구현하는 방법도 존재하며 구현 방법은 다양하기 때문에 자신만의 방법대로 코드를 작성하면 되겠다. 

또한 임의의 주기를 갖는 사각파를 구현하려면 식 (34.3)을 이용하여 구현하면 된다. 적분의 범위와 지수함수의 인수에 임의의 주기 T를 적용하여 식을 계산하고 구현하면 임의의 주기를 갖는 사각파를 구현할 수 있다. 

 

 

7. 마치며

 

이번 강의에서는 선형대수의 정규직교기저(orthonormal basis)와 푸리에 급수 사이의 연관성을 공부하였다. 정규직교기저의 전개(expansion)와 푸리에 급수의 전개는 동일한 개념으로 설명할 수 있으며 그 핵심에는 직교성(orthogonality)이 있음을 배웠다. 또한 푸리에 급수를 오일러 공식(Euler's formula)을 이용하여 복소푸리에급수(Complex Fourier Series)로 확장하였으며, 기존의 삼각함수로 이루어진 식보다 훨씬 간결하다. 또한 다음 강의에서 다룰 푸리에 변환(Fourier Transform)을 공부하는데에 있어서 필수적인 과정이므로 잘 이해하고 넘어가도록 하자.