반응형

특잇값 분해(Singular value decomposition, SVD) - 개념2

 

0) 서론

저번 포스팅까지 해서 '도대체 왜 특잇값 분해라는 개념이 생겼나'에 대해서 살펴보았습니다.

정확히는 고윳값 분해(EVD)에서 조금 더 확장(n개의 축은 직교하니?)을 하고 싶었으나, 그 확장하고 싶은 개념이 EVD로 해결이 안되니까 이리저리 궁리를 시작한 그 시발점이죠!

저번 포스팅에서 '특잇값 분해가 태동'! 이라고 말했으나, 사실 '개념적 태동'이 여기서 시작된 거지, 아직 특잇값 분해의 개념에 가까이 가려면 아주 조금 더 나아가야 합니다.

그래서 마련한 '개념2'!

 

 

1) 비대칭 행렬에서는 왜 안되지...?

저번 포스팅에서 대칭 행렬에서는 EVD로 직교하는 축들을 찾을 수 있는데, 비대칭 행렬에서는 EVD로 직교하는 축들을 찾을 수가 없었다고 했습니다.

그 이유는 EVD는 행렬 자체의 본질적인 축들을 찾아주는 거라, 대칭 행렬에서는 본질적인 축들이 무조건 직교하지만, 비대칭 행렬에서는 본질적인 축들이 직교하지 않기 때문이죠.

그런데 비대칭 행렬에서는 왜 '본질적인 축들이 직교하지 않는지' 생각해 보신 적 있으신가요?

 

행렬에 의한 선형 변환에서는 가장 크게 나누어서 '확대/축소(scaling)'와 '회전(rotation)'의 두 가지 변환이 있습니다.

 

여기서 대칭 행렬은 본질적인 축은 직교한 채로 '확대/축소'의 성질만 가지고 있는 행렬이라 EVD시에 나오는 각 축(벡터)이 그대로 직교하게 되죠.

스펙트럼 정리(Spectral Theorem)라고 하는데, "스케일링 성질만 가진 행렬(즉, 대칭 행렬)은, 그 본질적인 축으로 이루어진 '직교하는 세트(Basis)'를 반드시 찾을 수 있다."는 정리죠.

 

그러나 비대칭 행렬은 '회전'의 성질까지 가지고 있어, 무조건 EVD시에 각 축(벡터)이 직교가 깨지게 됩니다.

쉽게 말해 좌표 축이 비틀리게 되는 거죠.(스케일링과 회전을 동시에 가하기때문에 어떤 특정한 방향으로 분포가 밀리게(shearing)됩니다.)

그리고 비틀린 좌표축은.. 당연히 직교가 깨지게 되겠죠.

 

따라서 EVD만으로는 절대로 비대칭 행렬에서의 직교 축들을 찾을 수 없습니다.

계속해서 '본질적인 축들'만을 찾으려고 하니까요.

 

그러면 개념을 바꿔야 합니다.

행렬 $A$가 어떤 선형 변환을 일으킨다고 했을 때, 선형 변환 후에 직교인 축(벡터)들을 찾고 싶다면, 그에 해당하는 선형 변환 전에도 직교인 축(벡터)들을 '같이' 찾아야 한다는 것이죠.

 

즉, 다시말해

특잇값 분해는 "'선형 변환 직교하는 축'을 찾는 것"이며, 이를 위해서는 '변환 직교하는 축'을 반드시 함께 찾아야 한다.

로 귀결됩니다!

 

 

2) 변환 전 직교 축은 대체 무엇?

일단 우리는 여기서 임의의 행렬 $A$로 변환한 후에도 직교인 축을 찾고 싶습니다. 그리고 이걸 찾으려면 변환 전에도 직교인 축을 찾아줘야한다는 것을 알았습니다.

그런데, 여기서 문제가 발생합니다.

변환 전에 직교 축을 대체 무엇으로 설정할 것인지?

에 대한 아주 큰 문제가 발생하죠.

 

 

3) 마무리

자, 여기서 오늘의 포스팅은 끊습니다!

왜냐구요? 바로 다음 장부터 아주 중요한, 말그대로 SVD의 핵심 내용이 시작되니까요!

'개념'파트로써는 여기서 마무리입니다.

 

뭔가 이제 막 이해가 된 것 같아서 두근두근 하지 않나요?

이제 진짜 왜 SVD가 필요한지 알 것 같지 않나요?

반응형
반응형

특잇값 분해(Singular value decomposition, SVD) - 개념

 

0) 서론

오늘은 특잇값 분해(SVD)에 대해서 포스팅을 해보려고 합니다.

보통은 '특이값 분해'라고 쓰는 경우도 많은데, 공식 명칭(이랄까.. 맞춤법 규정상?)은 사이시옷이 들어간 형태라고 하네요!

특잇값 분해는 고윳값 분해에서 한발 더 나아간 내용이므로, 먼저 고윳값 분해 관련 포스팅(피보나치 수열을 선형대수로 풀어보자)을 보고 오시면 좋을 것 같습니다.

위의 포스팅은 독립된 고윳값 분해에 관련된 포스팅은 아니지만, 피보나치 수열을 선형대수로 풀어보기 위해 꼭 거쳐야 하는 고윳값 분해에 대해서 설명하고 있어 개념 이해도 쉬울 뿐더러 '피보나치 수열'이라는 직접적인 예시도 들고 있어, 링크에서 바로 이동하는 '고윳값 분해'파트만 보셔도 좋고, 아예 포스팅 전체를 보셔도 좋을 것 같습니다!

어찌되었든, 특잇값 분해에 대해서 한번 알아볼까요?

 

 

1) 고유값 분해를 기억하시나요?

$ Av=\lambda v $로 정의되었는데요

여기서 '행렬곱'이란 특정 공간에서의 '선형변환'을 의미한다고 본다면 이 식은

 

벡터 $v$를 행렬 $A$로 변환($Av$)한 결과가 원래 벡터 $v$의 방향은 그대로 둔 채 크기만 λ배 한 것과 같은 벡터 $v$가 있니?

 

라고 물어보는 식이 됩니다.

그리고 "네 있어요!"하면서 벡터 $v$를 찾으면 등호 관계에 따라 $\lambda$도 결정되게 되죠.

우리는 이 과정에서 결정된 벡터 $v$를 '고유벡터' 그리고 스칼라 값인 $\lambda$를 '고유값'이라고 부릅니다.

 

다시 말해 이 고윳값 분해(EVD)의 가장 큰 목적은 바로

행렬의 변환을 거쳐도 변하지 않는 벡터(고유벡터(아이겐 벡터;아이젠 벡터;eigen vector))를 찾기

였습니다.

그리고 이 벡터에 상수배만큼 곱해주는 부분이 고윳값(eigen value)이었구요.

그리고 이것을 약간 다르게 표현해 보자면

행렬 $A$가 가하는 변환의 '본질적인 축'(characteristic axes)을 찾는 것

이라고 볼 수 있습니다.

그리고 n x n 행렬에서는 무조건 축이 n개가 나오죠.

 

 

2) 기하학적으로 다시 설명해볼까요?

행렬 A를 하나의 '공간 변환기'라고 상상해 봅시다. 이 변환기는 벡터들을 입력받아 새로운 위치로 이동시키는 역할을 합니다.

예를 들어, 2차원 평면의 모든 점(벡터)들을 어딘가로 옮기는 것이죠.

 

이 변환이 시작되면, 대부분의 벡터들은 원래와 다른 방향으로 휙 돌아가 버립니다.

그런데 이 혼란스러운 움직임 속에서도, 마치 폭풍의 눈처럼 고요하게 자신의 방향을 유지하는 특별한 벡터들(v)이 존재할 수 있습니다.

 

이 벡터들은 변환 A를 거치더라도 방향이 바뀌지 않고, 단지 그 자리에서 늘어나거나(λ>1), 줄어들거나(0<λ<1), 혹은 방향이 반대로 뒤집힐(λ<0) 뿐입니다.

 

바로 이 변환의 '숨겨진 축'과도 같은 특별한 벡터를 고유벡터(v)라고 부르고, 그 축 방향으로의 '변화율' 혹은 '힘의 크기'를 고윳값(λ)이라고 부릅니다.

 

결국 고유값 분해란, 어떤 복잡한 선형 변환(A)의 가장 본질적인 '축'과 '힘'을 찾아내는 과정이라고 할 수 있습니다.

 

자, 이렇게 고윳값 분해는 "A로 변환해도 자기 자신과 평행한 방향(v)이 존재하는가?"에 대한 질문이 그 시작이었습니다.

 

 

3) 특이값 분해?

자, 여기서 사람들이 생각합니다.

음? 그러면 행렬 $A$로 변환해도 방향이 동일한 벡터도 찾을 수 있으면, 행렬 $A$로 변환해도 동일하게 '직교'하는 축들도 찾을 수 있는거 아냐?

 

직교성(Orthogonality)에 관련된 건 직교성 관련 포스팅(푸리에 급수에서 나온 파트기는 하지만..)을 한번 보고 오시면 바로 이해가 되실 겁니다.(물론 가신 김에 푸리에 파트를 전부 보고 오셔도 참 좋습니다)

간단하게 말해서 서로 수직으로 만나는가(좀 더 어렵게 말해서 공간상 Mutually Exclusive, 상호 배타적인가)를 말하는 겁니다.

(추가적으로 직교기저(Orthogonal basis)라는 용어는 컨설팅 용어인 MECE(Mutually Exclusive Collectively Exhaustive)랑 정확하게 매치된답니다!(직교는 위에서 말했다 시피 ME, 기저는 각 축의 최소단위로 기저들을 조합하면 CE가 되죠!) 재미있지 않나요?)

 

그리고 다시 말해보자면,

고윳값 분해를 해서 '직교축'도 찾을 수 있나?

가 되겠죠?

 

그러나 위에서 우리가 살펴보았듯이, 고윳값 분해는 애초에 '행렬 $A$'에 내재되어 있는 '본질적인 축'을 찾아내는 겁니다.

따라서, 대칭 행렬(Symmetric matrix)에서는 이 '본질적인 축'이 직교하기 때문에 고윳값 분해 만으로도 직교축을 찾을 수 있습니다.

하지만 안타깝게도 비대칭 행렬(Asymmetric matrix)에서는 EVD만으로는 직교축을 찾을 수가 없었지요..

 

그래서 사람들은

현재 '직교축'을 나타내는 벡터를 어떤 행렬로 선형변환 하더라도 그 결과가 계속해서 '직교축'을 나타내 주는 벡터(와 그 값)를 찾고 싶어졌습니다.

그리고 여기서 태동한 것이 바로 '특잇값 분해(SVD)'랍니다!

(자세히 보면, '행렬의 본질적인 축' 만으로는 행렬 변환 이후의 '직교성'을 정의할 수가 없습니다. 그래서 여기서 우리는 '현재 직교축'을 나타내는 벡터를 추가해서 '행렬 변환 후에도 직교인 축'을 찾아내려고 하는 겁니다.)

 

 

4) 마무리

무조건 첫 포스팅은 '짧게' 가려고 노력하고 있습니다.

애초에 요 근래에 다루는 내용들이 포스팅 단 하나만으로는 절대로 다룰 수 없는 내용들이기도 하구요!

오늘은 이 특잇값 분해가 왜 발생했는지, 그리고 본질적으로 무엇인지 개념을 살펴보았습니다!

반응형
반응형

푸리에 오디세이(Fourier Odyssey): 라플라스 변환(Laplace Transform)

 

0) 서론

딱 포스팅을 들어오시자마자 '엥?'하고 놀라신 분들 있으실거라 믿습니다.

 

"아니 푸리에 오디세이에 '푸리에'말고 '라플라스'가 등장한다고?"

(푸리에도 사람이름, 라플라스도 사람이름입니다.)

 

네, 바로 대망의 푸리에 오디세이 그 마지막 장의 주제는 '라플라스 변환'입니다.

 

왜 이 라플라스 변환이 푸리에 오디세이의 최종장이 되는지 이제부터 한번 살펴볼까요?

 

 

1) 라플라스 변환과의 연결!?

푸리에 오디세이의 최종장이 왜 '라플라스 변환'이냐 하면...

푸리에 변환이 라플라스 변환의 발전에 직접적인 영향을 주었다는 사실을 알고 계신가요?

라플라스 변환은 푸리에 변환을 일반화하고 특정 문제를 해결하기 위해 확장한 형태로 볼 수 있습니다.

즉, 이전에 말했던 '푸리에'라고 하는 산의 꼭대기에서 볼 수 있는 '그 너머의 세상' 바로 그것이죠!

 

 

2) 푸리에 변환의 한계

푸리에 변환은 신호 분석에 매우 강력한 도구이지만, 결정적인 한계가 하나 있었습니다.

바로 변환이 수렴(converge)하려면 함수(신호)가 특정 조건을 만족해야 한다는 점입니다.

가장 중요한 조건은 시간이 무한대로 갈 때 신호의 크기가 0에 가까워져, 신호의 전체 에너지(크기를 제곱해서 적분한 값)가 유한해야 한다는 것입니다.

 

하지만 현실의 많은 물리계나 공학 시스템에서는 시간이 지남에 따라 크기가 계속 커지는, 즉 발산(diverge)하는 함수가 자주 나타납니다.

예를 들어, 공진(resonance) 현상이나 불안정한 시스템의 반응이 그렇습니다. 푸리에 변환은 이런 함수들을 다룰 수 없었습니다.

 

 

3) 라플라스 변환의 해결책: 강제 수렴

라플라스 변환은 이 문제를 해결하기 위해 푸리에 변환에 '감쇠 인자(damping factor)'라는 개념을 도입했습니다.

 

아이디어는 간단합니다.

원래 발산해서 다룰 수 없었던 함수 $f(t)$에, 시간이 지날수록 급격히 작아지는 지수함수 $e^{-σt}$를 곱해버리는 것입니다.

이 σ(시그마)가 바로 감쇠 인자입니다.

 

이렇게 하면, 원래 발산하던 함수도 강제로 크기가 줄어들게 되어 푸리에 변환이 가능한 형태로 바뀝니다.

 

이것이 라플라스 변환의 핵심입니다.

 

- 푸리에 변환:

$ F(\omega) = \int_{-\infty}^{\infty} f(t)e^{-i \omega t} dt $

- 라플라스 변환:

$ L(s) = \int_{0}^{\infty} f(t)e^{-st} dt $

 

한가지 재밌는 사실은 라플라스 변환은 '시점(=0)'이 존재하는 문제를 풀기위해 고안되었다는 사실입니다.

그래서 적분 시점이 0부터이지요.

이론상 -∞부터도 계산할 수는 있어서 이렇게 계산하는 것을 양측 라플라스 변환, 0부터 시작하는걸 단측 라플라스변환이라고도 합니다.

 

여기서 라플라스 변환의 변수 s는 복소수, 즉 s=σ+iω입니다.

$e^{-i \omega t}$ 부분: 푸리에 변환과 마찬가지로 신호를 주파수 성분으로 분해하는 역할을 합니다.

$e^{-\sigma t}$ 부분: 신호를 강제로 수렴시키는 감쇠 인자 역할을 합니다.

 

결론적으로, 라플라스 변환은 푸리에 변환이 다루지 못했던 발산하는 함수까지 분석할 수 있도록 '강제 수렴'이라는 안전장치($e^{-\sigma t}$)를 추가한 확장판이라고 할 수 있습니다.

이 덕분에 제어 공학, 회로 이론 등 시스템의 안정성을 분석하는 분야에서 필수적인 도구가 되었습니다.

 

 

4) 라플라스 변환은 무슨 의미가 있는가?

1] 시스템 특성 분석

푸리에 변환이 주로 주어진 신호 자체의 주파수 구성을 분석하는 데 의미가 있다면, 라플라스 변환은 주로 시스템의 고유한 특성을 분석하는 데 강력한 의미가 있습니다.

 

라플라스 변환의 가장 중요한 결과물은 전달함수(Transfer Function)(H(s))입니다.

전달함수는 시스템의 '주민등록증'이나 'MBTI 성격 유형'과 같습니다.

어떤 입력 신호가 들어오기 전, 그 시스템이 근본적으로 어떻게 행동할지를 알려주는 고유 정보를 가지고 있죠.

 

예를 들어, 전달함수를 통해 s-평면 위에 '폴(Pole)'이라는 점들의 위치를 찍어보면, 그 시스템이 안정한지, 불안정한지, 얼마나 빠르게 반응하는지, 진동하는지 등의 모든 핵심적인 특성을 한눈에 파악할 수 있습니다.

 

조금 더 나아가 볼까요?

푸리에 변환의 결과인 '스펙트럼'은 2차원이었습니다.(주파수vs크기, 주파수vs위상)

그럼 전달함수의 결과는 몇 차원일까요?

 

전달함수의 결과는 3차원입니다.

  • 바닥 (2D 평면): 입력값인 s-평면 ($s = \sigma + i\omega$)이 바닥을 이룹니다. 가로축은 감쇠/성장을 나타내는 $\sigma$, 세로축은 주파수를 나타내는 $\omega$입니다.
  • 높이 (z축): s-평면의 각 점 $(s)$에 해당하는 라플라스 변환의 출력값 $F(s)$의 크기, 즉 $|F(s)|$를 높이로 표시합니다.

 

그러나 사실 이 전달함수를 3차원으로 다 그려보지는 않습니다.

 

보통 2차원으로 살펴보게 되는데,

여기서 제일 쉽게 전달함수를 보는 방법은 크게 두 가지가 있습니다.

  1. 폴-영점 지도(Pole-zero map)
    3차원 지형의 높낮이를 모두 무시하고, 하늘에서 s-평면을 내려다보며 가장 중요한 지형지물인 산봉우리(폴)와 호수(영점)의 위치만 지도에 표시하는 방식입니다.(산봉우리(Pole) 위치: X 로 표시, 호수(Zero) 위치: O 로 표시)

    이 2차원 지도 한 장만 있으면, 산봉우리(X)들의 위치를 보고 시스템의 안정성, 응답 속도 등 가장 근본적인 특성을 즉시 파악할 수 있습니다.


  2. 보드 선도 (Bode Plot)(특정 경로 탐사 보고서)
    3차원 지형 전체를 보는 대신, 우리가 가장 관심 있는 특정한 경로를 따라 걸어가면서 높이(크기)와 지형의 기울기(위상) 변화를 기록한 보고서입니다. 그리고 이 '특정한 경로'가 바로 푸리에 변환에 해당하는 허수축($\sigma=0$)입니다.

    즉, 보드 선도는 라플라스 변환이라는 거대한 3차원 세계에서 푸리에 변환에 해당하는 부분만 잘라내서 상세히 분석하는 것입니다.

    보드 선도는 두 개의 2차원 그래프로 구성됩니다.
    - 크기 선도 (Magnitude Plot): 주파수($\omega$)에 따라 신호의 크기를 얼마나 증폭시키거나 감소시키는지를 나타냅니다. (지도의 '고도' 정보)
    - 위상 선도 (Phase Plot): 주파수($\omega$)에 따라 신호의 위상(타이밍)을 얼마나 변화시키는지를 나타냅니다. (지도의 '경사' 정보)

    이 그래프는 특정 주파수의 입력에 시스템이 어떻게 반응하는지를 보여주기 때문에 필터나 제어기를 설계할 때 절대적으로 필요한, 가장 실용적인 지도입니다.

 

2] 미분을 곱셈으로

라플라스 변환이 '계산의 제왕'으로 불리는 이유는 단 하나, 미적분 방정식을 단순한 대수(사칙연산) 문제로 바꿔주기 때문입니다.

(과거 푸리에 변환이 함수간의 conv 연산을 주파수 영역에서 단순한 곱센 연산으로 처리할 수 있었다는 걸 기억하시나요?)

 

미분방정식은 풀기가 매우 까다롭습니다. 하지만 라플라스 변환을 이용하면 이 과정이 마법처럼 간단해집니다.

  • 미분 → 곱셈: 시간 영역에서의 미분($\frac{d}{dt}f(t)$)은 라플라스 변환을 거치면 단순히 s를 곱하는 것(sF(s))으로 바뀝니다.
  • 적분 → 나눗셈: 시간 영역에서의 적분(∫f(t)dt)은 s로 나누는 것($\frac{1}{s}F(s)$)으로 바뀝니다.

 

따라서 복잡한 미분방정식을 라플라스 변환하여 간단한 대수식으로 바꾼 뒤, F(s)에 대해 정리하고, 그 결과를 역변환(주로 표를 보고 찾음)하여 최종 답 f(t)를 구하는 방식을 사용합니다.

 

푸리에 변환으로도 미분을 곱셈(iω 곱하기)으로 바꿀 수 있지만, 라플라스 변환이 더 선호되는 이유는 다음과 같습니다.

  • 초기값 문제: 라플라스 변환은 시스템의 초기 조건(f(0))을 자연스럽게 수식에 포함시켜 주기 때문에 현실적인 문제 풀이에 훨씬 적합합니다.
  • 수렴 문제: 푸리에 변환은 발산하는 함수를 다룰 수 없지만, 라플라스 변환의 σ 성분이 발산하는 함수도 강제로 수렴시켜 분석할 수 있게 해줍니다. 이 때문에 불안정한 시스템도 다룰 수 있습니다.

 

 

5) 라플라스 변환이있다면 마찬가지로 라플라스 역변환이라는 것도 있나?

네 당연히 있습니다.

그러나 라플라스 변환자체가 복소평면(s-plane)이 연관되어있다보니 엄청나게 어렵고 복잡한 식이 나타납니다.

 

$f(t) = \mathcal{L}^{-1}\{F(s)\} = \frac{1}{2\pi i} \int_{\gamma-i\infty}^{\gamma+i\infty} F(s)e^{st} ds$

 

이 식은 브롬위치 적분(Bromwich integral)이라고 불리며, 복소수 평면에서 특정 경로를 따라 적분해야 하므로, 복소해석학에 대한 깊은 이해가 없으면 직접 계산하기가 거의 불가능합니다. 실제로 공학 문제를 풀 때 이 정의를 직접 이용하는 경우는 거의 없습니다

(여기서 $\gamma$의 역할: ​$\gamma$는 적분 경로를 결정하는 실수 값입니다. ​적분은 복소 평면에서 실수부가 $\gamma$인 수직선($Re(s) = \gamma$)을 따라 $\gamma - i\infty$ 에서 $\gamma + i\infty$ 까지 수행됩니다.
이때 $\gamma$는 매우 중요한 조건이 있는데, 바로 $F(s)$의 모든 특이점(singularities)보다 오른쪽에 위치해야 한다는 것입니다.
즉, 적분 경로가 $F(s)$가 불안정해지는 모든 점들을 피해서 그 오른쪽에 그어져야 올바른 역변환 값을 얻을 수 있습니다.)

 

그럼 역변환은 쓰임새가 없을까요?

 

아니죠! 위에서 ‘계산의 제왕'이라는 말이 나왔던걸 기억하실 겁니다.

 

라플라스 변환을 하면 원래 식이 매우 간단해지고 이 변환식을 간단히 정리해서 역변환을 하면 정말 쉽게 답을 구할 수 있답니다.

 

그런데 역변환은 매우 어렵다면서요

 

그래서 수학자들이 미리 간단한 함수들에 대한 변환/역변환 표, 이른바 '라플라스 변환 쌍(Laplace Transform Pairs)'을 미리 만들어놨죠!

 

그때그때마다 연산을 매번 하는 것이 아니라 미리 연산된 결과를 그때그때 적용하는 거랍니다!




 

6) 마무리

이로써 기나긴 '푸리에 오디세이'를 모두 마칩니다.

 

이 모든 과정을 아주 단순히 한 문장으로 써보면 다음과 같습니다.

주기 함수를 분석하려다 보니 푸리에 급수가 나왔고, 비주기 함수를 다루려고 주기를 무한대로 보냈더니 푸리에 변환이 되었으며, 심지어 발산하는 불안정한 함수까지 다루기 위해 감쇠 인자를 추가했더니 라플라스 변환이 탄생했습니다.

 

이 거대한 서사에 몸을 맡겨주신 여러분 감사합니다.

 

대성하십시오!

반응형
반응형

푸리에 오디세이(Fourier Odyssey): 푸리에 변환 for 컴퓨터(Fourier Transform for computer)

 

0) 서론

저번 포스팅까지 해서 우리는 '푸리에 ~~~'의 모든 개념과 도구 그리고 표현들에 대해서 알아보았습니다.

사실상 저번 포스팅까지가 이 푸리에 오디세이의 클라이맥스, 즉 가장 높은 산을 등정하여 그 정상까지 올라온 것이라고 할 수 있겠죠!

 

이제는 이 정상이 어떻게 생겼는지도 한번 살펴보고, 이 정상에서만 볼 수 있는 경치를 음미하며 살살 하산하면 이제 이 대장정은 끝을 맞이합니다.

 

오늘은 이 정상 즉 '푸리에 변환'이 컴퓨터에서 어떻게 활용되는지 한 번 살펴보도록 하겠습니다.

 

 

1) 컴퓨터에서의 푸리에 변환

사실상 개념적으로만 봐도, 이 푸리에 변환이라는건 정말 현대사회에서 없으면 안될 이론 같아 보이죠?

모든 신호 처리의 근간이 되니까요.

 

그러나 우리가 지금까지 경험해 왔듯이 이 수식은 계산이 극악으로 복잡하다는 최악의 단점이 있습니다.

특히나 비주기 함수까지 '완벽하게' 분석을 하려면,  '적분', '연속', '무한'의 개념이 필수적으로 필요하죠.

 

그러나 이 신호처리에서 컴퓨터라는 엄청난 계산장치를 사용하지 않고 사람이 매번 계산을 한다던가 하는건 정말 매우 비효율적이죠.

더군다나 실시간 처리는 완전히 요원할 것입니다.

 

근데 컴퓨터는 '적분', '연속', '무한'이 세 가지를 정말 제일 못합니다.

따라서 컴퓨터에게 이 푸리에 변환을 맡기지 못하느냐... 하면, '네 푸리에 변환의 원래 식 자체는 절대 못맡깁니다'가 답입니다.

 

그러나 하늘이 무너져도 솟아날 구멍은 있다고, 컴퓨터는 대신에 '단순', '반복' 작업을 세상에서 제일 잘합니다.

그리고 이런 컴퓨터를 위해 등장한 것이 바로 이산 푸리에 변환(Discrete Fourier Transform, DFT)와 고속 푸리에 변환(Fast Fourier Transform, FFT)이며, 이것이 오늘날 모든 디지털 신호 처리의 심장 역할을 하게 됩니다.


각 개념을 간단하게 말하자면 컴퓨터는 '연속'이 아니라 연속처럼 보이는 '이산'값(샘플링&양자화라고도 하죠)만을 취급할 수 있기 때문에 나온 것이 이산 푸리에 변환(Discrete Fourier Transform), 그리고 계산이 너무 복잡하기 때문에 알고리즘상 속도를 개선시켜 나온게 고속 푸리에 변환(Fast Fourier Transform) 입니다.

 

그리고 여기서 재밌게도 똑같은 '푸리에 변환'이라는 타이틀을 달고 있지만, 컴퓨터에게 시키는 작업은 엄밀히는 '푸리에 급수'로 근사하는 작업입니다.

왜냐면 컴퓨터는 '연속'을 처리하지 못하고 '이산'적이기 때문이죠.

 

다시 한 번 정리하죠.

 

  • 우리는 컴퓨터라는 엄청난 계산 장치를 활용하면 푸리에 변환을 훨씬 빠르고 정확하게 사용하여 실생활에 많은 도움을 줄 수 있다는걸 알고있습니다.

  • 그러나 컴퓨터는 '적분', '무한', '연속'이라는 개념이 들어간, 수학적으로 완벽한 '참 값'을 주는 푸리에 변환(적분)을 그 자체로는 절대로 처리하지 못합니다.

  • 그래서 어떻게 하면 컴퓨터에게 이 푸리에 변환을 시킬 수 있을까 고민했습니다.

  • 일단 연속이 불가능 하기때문에(실제로 컴퓨터는 연속 데이터를 처리하지 못합니다) 샘플링으로 이 값을 이산화 된 값으로 바꿉니다.(여기서 나이퀴스트-샤넌 샘플링 정리(Nyquist–Shannon Sampling Theorem)이란 것이 있는데, 간단히 말해 최대 주파수의 두 배 속도로 샘플링을 하면 원래 신호를 완벽하게 샘플링(추출)할 수 있다는 정리입니다.)

  • 그리고 샘플링을 하려면, '구간'이 필요하기 때문에 신호를 특정한 구간(window)으로 자릅니다.

  • 이 구간 안에서 이산화된 값을 푸리에 급수로 계산하여 '근사값'을 얻습니다.(연속은 푸리에 적분, 이산은 푸리에 급수였죠?)


그래서 실제적으로 컴퓨터는 '푸리에 급수'만 쓰는 격입니다.

 

 

2) 컴퓨터에서의 푸리에 변환의 문제점 - 구간(Window) 설정의 문제점

위에서 이산푸리에 변환과 고속푸리에변환 모두 우리가 잘라낸 유한한 구간(Window)의 데이터가 영원히 주기적으로 반복된다고 '강제로 가정'하고 계산합니다.

그리고 여기서 이 구간이 짧으면 ‘언제’ 시작되었는진 정확하게 알아도 ‘어떤 주파수'가 들어있는지는 불명확해지고, 반대로 이 구간이 길면 ‘시간'이 불명확해져도 ‘어떤 주파수'가 들어있는지가 명확해지죠.

푸리에 변환판 불확정성 원리(Gabor-Heisenberg 불확정성 원리)라고 볼 수 있겠네요.(시간 분해능 vs 주파수분해능)
(시간 영역에서의 정밀도($\Delta t$)와 주파수 영역에서의 정밀도($\Delta f$)의 곱은 특정 상수($\frac{1}{4\pi}$)보다 항상 크거나 같다는 것이 수학적으로 증명되어 있습니다. $\Delta t \cdot \Delta f \geq \frac{1}{4\pi}$)

 

참고로 이 구간(window)는 전적으로 분석 목적에 따라 달라집니다.

  • 리듬/타악기 분석: '언제' 쳤는지가 중요하므로 짧은 구간을 씁니다.
  • 화성/선율 분석: '무슨 음'인지가 중요하므로 긴 구간을 씁니다.
  • 음성 분석: 말은 '시간'에 따라 빠르게 변하지만 '음높이'도 구별해야 하므로, 그 중간의 적절한 값 (보통 20~30ms)을 경험적으로 사용합니다.

 

 

3) 컴퓨터에서의 푸리에 변환의 문제점 - 급수에서 적분으로 확장시에 발생했던 문제점들

과거 '푸리에 적분' 포스팅에서 왜 급수에서 적분으로 개념을 확장해야 하는지 세가지 문제점을 말씀드렸는데 기억나시나요?

 

  • 1) 내가 정한 L값에 따라 주파수 성분이 멋대로 바뀌고(기본주파수는 L과 관련이있죠?)
  • 2) 억지로 자른 경계면(대표적으로 x=0)의 불연속 문제(Gibbs phenomenon:불연속점이 있는 함수를 푸리에 급수로 근사할 때, 불연속점 주변에서 오버슈팅(overshooting)이 발생하는 현상) 때문에 있지도 않던 '유령' 주파수들이 잔뜩 튀어나옵니다
  • 3) 더불어 단 한번만 있는 신호였는데도 2L주기를 가지고 무한히 반복하는 신호처럼 호도하기까지하죠.

 

이렇게 세 가지 큰 문제점 때문에 푸리에 급수에서 푸리에 적분으로 개념 확장이 필수적이었죠.

 

근데, 지금은 또 반대로 푸리에 적분(변환)에서 푸리에 급수와 유사한 이산적인 도구로 근사를 하고 있습니다.

따라서 저 세가지 문제가 따라올 수밖에 없겠죠?

 

그러면 이 문제들은 어떻게 해결할 수 있을까요?

 

물론, '근원적인 해결'은 불가능합니다. 애초에 저 문제들을 해결하려고 적분으로 확장한건데, 그걸 다시 급수와 유사한 이산적인 도구를 사용하는 상황에서 무조건 이 문제들은 발생할 수밖에 없죠.

 

그래서 공학적으로 여러가지 트릭을 써서 이 문제들을 '완벽히 제거'한 것은 아니지만, '충분히 무시할 수 있을 만큼 잘 관리하고 완화하는' 방식으로 해결하고 있습니다.

 

1] 내가 정한 L값에 따라 주파수 성분이 멋대로 바뀐다

원인: '유한한 길이($L$)'로 신호를 잘라내는 행위, 즉 '창(Windowing)'을 씌우는 행위 때문에 발생합니다.

 

해결: 영 채우기(Zero padding)

아까 위에서 구간(window)를 짧게 정의하면 시간 해상도가 올라가고, 길게 정의하면 주파수 해상도가 올라간다고 말씀드렸죠?

그리고 주파수 해상도가 높을수록 이 합성 신호에 들어있는 주파수들을 잘 분해할 수 있겠죠?

그래서 일정 길이 이상의 구간을 설정해주면 주파수 성분이 멋대로 바뀌는 것을 방지할 수 있습니다.

 

그런데 이 신호가 매우 짧은 신호라 구간을 길게 설정할 수 없으면 어떻게 될까요? 혹은 짧은 구간을 보고 싶은데 주파수 해상도는 높았으면 하는 경우에는요?

바로 이때 사용하는 방법이 영 채우기(Zero padding)입니다.

 

1초 짜리 신호를 분석하고 싶은데 이렇게 구간을 설정할 경우 주파수 해상도가 낮아지면, 이 1초짜리 신호 뒤에 9초 분량의 0 데이터를 덧붙여 총 10초짜리 신호를 만듭니다. 

DFT/FFT의 주파수 해상도( $\Delta f$ )는 총 샘플링 시간 ( $T = N \cdot \Delta t$ )에 반비례합니다. ( $\Delta f = 1/T$ )

신호 뒤에 0을 덧붙여 $T$를 10배로 늘리면, 주파수 해상도가 10배 더 조밀해집니다.

이것이 새로운 주파수 정보를 '창조'하는 것은 아니지만, 기존에 듬성듬성 보였던 주파수 스펙트럼을 훨씬 더 촘촘하게 보간(interpolation)하여 진짜 피크(peak) 주파수가 어디인지 더 정확하게 찾아낼 수 있게 해줍니다.

 

따라서 1번 문제도 어느정도 해결이 되었습니다.

 

 

2] 경계면 불연속과 '유령' 주파수 (Gibbs/Spectral Leakage)

원인:

억지로 자른 경계면의 불연속 문제 (Gibbs) 때문에 있지도 않던 '유령' 주파수들이 잔뜩 튀어나온다.

이것이 가장 심각한 문제일 수 있으며, 전문 용어로 '스펙트럼 누설(Spectral Leakage)'이라고 부릅니다.

신호를 단순히 네모난 칼(Rectangular Window)로 뚝 잘라내는 순간, 신호의 시작과 끝에 매우 급격한 '점프'(불연속점)가 생깁니다. 푸리에 해석의 관점에서 "급격한 변화 = 수많은 고주파 성분의 합"입니다.

따라서 DFT는 "아! 이 신호를 만들려면 원래 신호의 주파수뿐만 아니라, 이 '급격한 점프'를 만들기 위한 온갖 종류의 (있지도 않던) 고주파 성분들이 필요하구나!"라고 판단하여 '유령' 주파수를 스펙트럼 전체에 뿌려버립니다.

 

해결: 테이퍼링 윈도우 (Tapering Window)

네모난 '직사각형 창(Rectangular Window)'이 문제의 원흉입니다.

작동 원리: 신호를 네모로 뚝 자르는 대신, 양 끝을 0으로 수렴하도록 부드럽게 눌러주는 다른 모양의 창(Window Function)을 원본 신호에 곱해줍니다.

 

종류: 해닝(Hanning), 해밍(Hamming), 블랙맨(Blackman) 창 등이 유명합니다.

 

효과: 신호의 양 끝이 부드럽게 0이 되므로, 강제로 잘라낸 경계면에서의 '불연속 점프'가 사라집니다.

 

결과: "급격한 변화"가 사라졌으므로, DFT가 만들어내던 "급격한 변화를 만들기 위한 가짜 고주파 성분들", 즉 '유령' 주파수(Spectral Leakage)가 획기적으로 줄어듭니다.

 

한계: 물론 윈도우 함수를 사용하면 스펙트럼의 '주 피크'가 약간 뭉툭해지는(해상도 저하) 단점이 있지만, 스펙트럼 전체가 '유령' 주파수로 오염되는 것보다 훨씬 나은 절충안입니다.

 

 

3] 강제 주기성

원인: 이 또한 '유한한 길이($L$)'로 신호를 잘라내는 행위, 즉 '창(Windowing)'을 씌우는 행위 때문에 발생합니다.

컴퓨터는 $N$개의 샘플 데이터(총 시간 $T$)만 볼 수 있으며, DFT는 이 $N$개의 샘플이 영원히 반복된다고 가정합니다.

 

해결: 영 채우기(Zero padding)

이 또한 영 채우기(Zero padding)으로 해결이 가능합니다.

 

작동 원리: 우리가 분석하려는 실제 신호(예: 1초짜리 "딱!" 소리)가 있다면, 그 뒤에 9초 분량의 '0' (완전한 침묵) 데이터를 덧붙여 총 10초짜리 신호로 만듭니다.

강제 주기성 완화 예시:

Before: "[딱!][딱!][딱!][딱!][딱!]" → 실제와 전혀 다른 신호

After: "[딱! ....(침묵 9초).... ][딱! ....(침묵 9초).... ]"

이렇게 하면 "딱!" 소리가 10초에 한 번씩 울리는 신호가 됩니다. 여전히 주기적이긴 하지만, 원래 신호인 '단발성 소리'와 훨씬 더 유사해졌습니다. 주기($L$)를 충분히 길게 늘려서 주기성으로 인한 왜곡(Aliasing)을 최소화하는 것입니다.

 

이 기법들은 완벽한 수학적 '해결'이라기보다는, 공학적인 '절충(Trade-off)'과 '최적화'에 가깝습니다.

 

 

 

4) 마무리

그 동안 등반하시느라 고생하셨을 여러분을 위해 오늘은 이 푸리에 변환이 컴퓨터에서 실제로 어떻게 작동되는지에 대해 개념적으로 간단하게 알아보는 시간을 가졌습니다.

 

의외로 재밌지 않나요?

 

푸리에 급수의 한계를 돌파하기 위해 수학적으로 푸리에 적분이라는 개념으로 확장시키고 이것이 결국 푸리에 변환이라는 개념을 창출하였는데,

이 엄청난 개념을 활용하기 위해서는 컴퓨터라는 계산기계의 활용이 필수적이 되었으나,

이 계산기계의 태생적 한계로 확장된 수학적 개념을 사용하지 못하고 다시 푸리에 급수와 같은 형태로 회귀하면서,

이 두 문제(정확성 vs 컴퓨터 이용 가능성)를 해결하기 위해 또 다른 방법론들이 도입되었다는 사실이요!

 

그리고 재밌게도 이 두 지점이 '수학'과 '공학'을 가르는 요소이지 않나 싶어요.

수학은 "어떻게 해서든 가장 '엄밀하고 정확한' 정보를 얻을 수 있느냐" 라면

공학은 "이 개념을 어떻게 현실과 잘 타협할 것이냐" 니까요!

 

약간의 쉬어가는 코너였습니다.

 

이제 이 기나긴 푸리에 오디세이도 슬슬 마지막 포스팅만 남았습니다.

 

푸리에라는 산 꼭대기 위에서만 볼 수 있는 절경이 남았다구요!

 

조금만 더 힘내보죠!

반응형
반응형

푸리에 오디세이(Fourier Odyssey): 복소 푸리에 변환(Complex Fourier Transform)

 

 

0) 서론

이번 포스팅은 지금까지 우리가 유도해온 복소 푸리에 변환을 개념적으로 한 번 더 살펴보고, 예제를 풀어보는 시간을 가질까 합니다!

 

 

1) 결과식 뜯어보기

이전까지의 포스팅을 차근차근 따라오셨으면 사실 식 자체를 받아들이는데 큰 문제는 없습니다.

그러나 문제는 결과식만 보면 ‘이게 뭔뜻이야?’하는 경우가 많다는 거죠..

 

그래서 한번 결과식을 다시한번 뜯어보겠습니다.

 

$ F(\omega) = \int_{-\infty}^{\infty} f(t)e^{-i \omega t} dt $

 

이 푸리에 변환 식이 무슨뜻일까요?

여기서 f(t)는 원래 함수입니다. 이 함수를 -무한대에서 무한대까지 특정 주파수 $e^{-i \omega t}$랑 얼마나 비슷한지를 계산하는 함수라고 생각하시면 됩니다.

내적개념으로 ‘두 함수의 곱의 적분이, 두 함수가 얼마나 서로 비슷한지 알려준다'로 생각하셔도 좋고,

동역학적으로 f(t)가 계수인 $\omega$속도로 회전하는 벡터를 전체시간($(-\infty, \infty)$)에 대해 다 더했을 때(적분) 상쇄되는 것 빼고 남는 성분이 뭐냐 라고 생각해도 무방합니다.

 

그리고 여기서 사실 한발짝 더 나아가보면, 위에서 ‘켤레복소수'를 언급했었습니다.

사실상 복소수영역에서 A라는 복소함수와 B라는 복소함수의 내적은 A와 B*(켤레복소수)의 곱으로 계산합니다.

그래서 우리는 원래 항상 $e^{i \omega t}$를 기준으로 생각하지만(역변환 식에서는 제대로 $e^{i \omega t}$를 곱해줍니다) 내적개념상 푸리에 변환식에서는 -부호가 붙은 켤레복소수인 $e^{-i \omega t}$를 곱하는거죠!

 

\begin{align}

F_c(\omega) &= \int_{-\infty}^{\infty} f(t) \cos(\omega t) dt \\

F_s(\omega) &= \int_{-\infty}^{\infty} f(t) \sin(\omega t) dt

\end{align}

같은 맥락에서 삼각함수의 형태는 이해가 훨씬 쉽죠. 복소지수보다 더 직관적입니다.
(여기서는 내적개념으로 이해하는게 제일 쉽겠네요)

 

 

 

2) 적분 영역 살펴보기

적분 영역에 대해서도 결과만 보면 의아하실 수 있습니다.(뭐 차근차근 따라오셨다면 딱히 헛갈리실 것 없겠지만..)



\begin{align}

f(x) &= \frac{1}{\pi} \int_{0}^{\infty} [F_c(\omega)\cos(\omega x) + F_s(\omega)\sin(\omega x)] d\omega \\

F_c(\omega) &= \int_{-\infty}^{\infty} f(t) \cos(\omega t) dt \\

F_s(\omega) &= \int_{-\infty}^{\infty} f(t) \sin(\omega t) dt

\end{align}

삼각함수형태가 더 직관적이므로, 여기서부터 설명을 해보자면

 

여기서 푸리에 변환 부분(Fc, Fs)에서 적분구간이 -무한대~무한대인이유는 함수전체에서 해당 파형이 얼마나 들어있나를 알아내기 위한 필터이기때문이고,

전체식에서 0부터 무한대인 이유는 그 모든 주파수 성분을 다 모아서 적분하기 때문이죠.(왜 0부터인지는 마이너스 주파수 설명하면서 설명드렸죠? 삼각함수형태에서는 마이너스 주파수가 없습니다.)

 

\begin{align}

f(x) &= \frac{1}{2\pi} \int_{-\infty}^{\infty} F(\omega) e^{i \omega x} d\omega \\

F(\omega) &= \int_{-\infty}^{\infty} f(t)e^{-i \omega t} dt

\end{align}

 

마찬가지로 복소지수형태도 마찬가지입니다.

다만, 복소지수의 경우 마이너스 주파수가 있어서 원래함수로 복원할 때 적분구간이 -무한대~무한대가 되죠.



 

3) 왜 푸리에 적분(역변환)에서 복소지수함수형태랑 삼각함수형태에서 계수가 달라요?

이거는 애초에 cos과 sin이 복소지수로 어떻게 표현되는지 보시면 바로 이해가 됩니다.

잘 생각해보세요. 둘 다 2로 나눴던거 기억나시나요? 그겁니다.

 

다시한번 개념적으로 살펴보면 복소지수함수 하나는 sin이던 cos이던 양/음의 주파수 두개를 가지게 되므로 2로 나눠주어야하는거죠!

재미있게도 이 결과는 적분 구간과도 형태적으로 일치합니다. 복소지수 형태에서는 적분 구간이 $(-\infty,\ \infty)$로 두 배가 되면서, 계수 역시 1/2이 붙는 형태가 되죠. 이렇게 연관 지어 기억하시면 더 쉽습니다.

 

 

4) 상수 계수의 의미

마지막으로.. 복소푸리에변환에서 $\frac{1}{2\pi}$'상수 계수'의 경우 우리는 항상 계산하면서 '급수->적분->변환'의 개념을 살려서 '역변환'에 몰아놨는데요(삼각함수로 나타낸 푸리에 변환에서는 $\frac{1}{\pi}$),

이 상수계수는 사실 어디에 붙어있어도 크게 상관은 없어서 혹시 다른 문헌에서 보시다가 이 부분이 조금 달라도 너무 당황하시진 않으셔도 됩니다.(심지어 이 $2\pi$를 $\omega = 2\pi f$관계를 이용해서 지수로 넣어버릴 수도 있어요. 그러면 상수계수가 사라지죠)

 

어찌됐든 중요한 건 복소푸리에변환에서 정변환과 역변환을 한 번씩 거치면 총 $\frac{1}{2\pi}$가 곱해져야 원래 함수로 돌아온다는 약속 그 자체입니다.
(왜 $\frac{1}{2\pi}$가 곱해져야하는지는.. 가장 쉽게는 주파수를 radian단위계로 만들었기때문에 다시 돌려놔 주어야 한다는거고, 중간정도로는 삼각함수처럼 자기자신과의 내적 적분시 $2\pi$만큼 배가된다는 개념, 어렵게는 디랙델타함수로 유도할 수 있습니다.)

 

삼각함수 형식 푸리에 변환에서 잘 안쓰지만 그래도 삼각함수에서는 왜 $\frac{1}{\pi}$여야하냐면, 삼각함수의 제곱의 한주기 적분은 정확히 π이기 때문입니다.

원래 함수 f(x)에 cos을 곱해서 ‘자기자신과 같은 성분'만 뽑아낼 때 f(x)의 cos성분과 곱해준 cos이 곱해져 [계수*cos²]이 생기기 때문에 π로 나눠 줘야 원래 cos성분의 계수값이 나오죠.



 

5) 예제

이야~ 여기까지 모든 '푸리에 ~~~'에 대해 알아보았습니다!

그러면 예시 문제를 하나 풀어보지 않을 수 없겠죠?

진짜진짜 쉬운 예시문제를 풀어보겠습니다!

 

디랙 델타함수라는 것이 있습니다.

이 함수는

  1. $t=0$이 아닌 모든 곳에서 값은 0입니다.
  2. ($t \neq 0 \to \delta(t) = 0$)$t=0$에서 값은 무한대입니다. ($\delta(0) = \infty$)
  3. 전체 구간에 대해 적분하면 그 값은 1입니다. ($\int_{-\infty}^{\infty} \delta(t) dt = 1$)

이 세가지 특징을 가지는 함수인데요.

따라서 우리가 이산 상황에서 크로네커 델타를 썼던 것과 마찬가지로, 샘플링 특성을 가지고 있죠.

쉽게 생각해서 '딱 0인 점에서만 피크가 찍히는 함수'라고 생각하셔도 됩니다.

 

1] 델타함수를 푸리에 변환하기

그럼 이 델타함수를 푸리에 변환하면 어떻게 될까요?

\begin{align}
F(\omega) &= \mathcal{F}\{\delta(t)\} \\
&= \int_{-\infty}^{\infty} \delta(t)e^{-i\omega t} dt
\end{align}



델타 함수의 'Sifting Property' (샘플링 성질)에 의해, ∫ f(t)δ(t) dt = f(0) 입니다.

여기서 정리하면 $ f(t) = e^{-i\omega t} $ 가 되므로, t=0일 때의 값 $ f(0) = e^{-i\omega 0} = 1 $ 입니다.

따라서,

$ F(\omega) = 1 $

입니다.

 

수식으로는 간단하게 풀렸는데, 그럼 그 의미는 무엇일까요?

시간영역에서 디랙 델타함수처럼 생긴 그래프를 만들려면, 주파수 영역에서 주파수의 크기(진폭)가 1인 모든 주파수 성분을 다 더해야한다.

입니다.

 

역변환 관점이 직관적으로 이해하기 쉬워서 역변환 관점에서 서술했지만, 반대로 변환관점에서 서술해본다면 다음과 같을 겁니다.

시간영역에서 디랙 델타함수처럼 생긴 그래프는, 주파수 영역에서 주파수의 크기(진폭)가 1인 모든 주파수 성분으로 분해된다.

 

조금 더 살펴보자면, 모든 주파수 성분을 다 더하면 0점에서는 모든 주파수 성분이 '보강 간섭'을 일으켜서 무한대의 크기가 되고, 그 외 지점에서는 모든 주파수 성분이 '상쇄 간섭'을 일으켜서 0이 된다고 볼 수 있겠네요!

 

여기서 또한 재밌는 사실을 하나 뽑아낼 수 있는데, 어떤 식을 푸리에 변환 했다가 역변환하면 다시 자기 자신으로 돌아와야 하잖아요?

그렇다면 주파수 영역에서 1인 함수를 역변환 했을 때 다시 디랙델타함수가 나와야 할 것입니다.

 

$ \delta(t) = \mathcal{F}^{-1}\{1\} $

그러면 다시 푸리에 역변환 식으로 풀어쓰면

 

\begin{align}
\delta(t) &= \frac{1}{2\pi} \int_{-\infty}^{\infty} 1 * e^{i\omega t} d\omega \\
\delta(t) &= \frac{1}{2\pi} \int_{-\infty}^{\infty} e^{i\omega t} d\omega \\
2\pi \delta(t) &= \int_{-\infty}^{\infty} e^{i\omega t} d\omega \\
2\pi \delta(k) &= \int_{-\infty}^{\infty} e^{ik x} dx \quad (일반화)
\end{align}

즉, 재밌게도 디랙델타함수는 새로운 적분표현을 가지게 됩니다.

 

 

2] 1인 상수함수를 푸리에 변환하기

그럼 이번엔 반대로 시간 영역에서 1인 함수를 푸리에 변환하면 어떻게 될까요?

 

\begin{align}
F(\omega) &= \mathcal{F}\{1\} \\
&= \int_{-\infty}^{\infty} 1 * e^{-i\omega t} dt \\
&= \int_{-\infty}^{\infty} e^{i(-\omega) t} dt \\
\end{align}

 

여기서 아까 찾은 델타 함수의 적분 표현 $ 2\pi \delta(k) = \int_{-\infty}^{\infty} e^{ik x} dx $를 이용합시다.

$ k = -\omega, \ x = t $로 놓고 정리하면

\begin{align}
F(\omega) &= \int_{-\infty}^{\infty} e^{i(-\omega) t} dt \\
2\pi \delta(-\omega) &= \int_{-\infty}^{\infty} e^{i(-\omega) t} dt \\ \\
F(\omega) &= 2\pi \delta(-\omega)
\end{align}

가 되겠네요.

 

여기서, 디랙델타함수는 우함수($\delta(-x) = \delta(x)$)이므로

$ F(\omega) = 2\pi \delta(\omega) $


즉, 시간영역에서 1인 상수 함수를 푸리에 변환하면 $ 2\pi \delta(\omega) $라는 함수를 얻습니다.

 

그리고 이 수식의 의미는

시간 영역에서 영원히 1인 신호($f(t)=1$)를 만들기 위해서는, 오직 하나의 주파수($\omega=0$, 즉 DC 성분)만 필요하며, 그 성분의 총량(세기)은 정확히 $2\pi$여야 한다

는 뜻입니다.(역변환 관점 서술)

 

 

6) 마무리

이번 포스팅에서는 지금까지의 개념들을 한번 싹 정리해보는 시간을 가졌습니다.

아무래도 복소지수함수로 넘어오면서 다시 짚어봐야 할 개념들도 많고, 이래저래 챙겨야하는게 많은 포스팅이었네요!

그래도 잘 따라와 주셔서 감사합니다!



사실상 이 푸리에 오디세이의 어려운 부분은 이번 포스팅까지로 정리되었다고 볼 수 있습니다.

어떻게보면 두번째 기착지네요!


다음에는 가벼운 내용으로 '푸리에 ~~~'의 활용과 한번 더 개념 확장 정도만 하면 이 대장정은 끝을 맞이합니다!

이 푸리에 오디세의 대단원의 막까지 같이 달려주시죠!

얼마 안남았습니다!

반응형
반응형

푸리에 오디세이(Fourier Odyssey): 복소 푸리에 적분(Complex Fourier Integral)

 

0) 서론

저번 포스팅에서는 우리가 삼각함수로 만들어본 푸리에 급수를 복소지수함수꼴로 변형해 보았습니다.

더불어 더 나아가서 처음부터 복소지수함수 형태로도 유도해보았는데요.

이렇게 두 가지 경로를 전부 확인해 보는 것이 크게 도움이 되기 때문에 포스팅이 조금 길어져도 두 가지 모두 확인해 보았습니다.

 

이번에는

 푸리에 적분을 복소지수함수표현으로 나타내보겠습니다.

이제 우리는 cos, sin으로 만들어진 푸리에 적분표현도 알고 복소지수함수로 표현된 푸리에 급수표현도 아니까 이번에도 푸리에 적분을 두가지 방법으로 다 구해보죠.

먼저 cos, sin으로 표현된 푸리에 적분을 복소지수함수로 표현해보겠습니다.

그 이후 복소지수함수로 표현된 푸리에 급수를 푸리에 적분으로 확장해보도록 하죠.

 

또한 푸리에 변환은 개념적 도약이지만, 이미 우리는 그 단계를 거쳐왔으므로 여기서는 푸리에 적분에서 자연스럽게 푸리에 변환까지 유도합니다.

 

 

1) cos, sin으로 표현된 푸리에 적분을 복소지수함수로 변환하기

cos과 sin으로 표현된 푸리에 적분은 다음과 같았습니다.

\begin{align}

f(x) &= \int_{0}^{\infty} [A(\omega)\cos(\omega x) + B(\omega)\sin(\omega x)] d\omega \\

A(\omega) &= \frac{1}{\pi} \int_{-\infty}^{\infty} f(t) \cos(\omega t) dt \\

B(\omega) &= \frac{1}{\pi} \int_{-\infty}^{\infty} f(t) \sin(\omega t) dt

\end{align}

 

이제 직접 변환해봅시다.

1단계: 계수 함수 $A(\omega)$와 $B(\omega)$를 f(x) 식에 대입하기

먼저, $f(x)$를 나타내는 첫 번째 식에 $A(\omega)$와 $B(\omega)$의 적분 정의를 직접 대입합니다.

$f(x) = \int_{0}^{\infty} \left[ \left(\frac{1}{\pi} \int_{-\infty}^{\infty} f(t) \cos(\omega t) dt\right)\cos(\omega x) + \left(\frac{1}{\pi} \int_{-\infty}^{\infty} f(t) \sin(\omega t) dt\right)\sin(\omega x) \right] d\omega$

 

2단계: 적분 순서 변경 및 식 정리

$f(t)$와 $\frac{1}{\pi}$는 ω에 대한 적분에서 상수 취급할 수 있으므로, 적분 순서를 바꾸고 공통된 항을 묶어줍니다.

$f(x) = \frac{1}{\pi} \int_{0}^{\infty} \int_{-\infty}^{\infty} f(t) [\cos(\omega t)\cos(\omega x) + \sin(\omega t)\sin(\omega x)] dt \, d\omega$

 

3단계: 삼각함수 합차 공식을 이용한 단순화

대괄호 [] 안의 항은 코사인의 덧셈정리, cos(A - B) = cosAcosB + sinAsinB와 정확히 일치합니다. 이를 이용해 식을 단순화합니다.

$f(x) = \frac{1}{\pi} \int_{0}^{\infty} \int_{-\infty}^{\infty} f(t) \cos(\omega(x-t)) dt \, d\omega$

 

4단계: 오일러 공식을 사용하여 cos을 복소지수함수로 변환

이제 핵심 단계입니다. 오일러 공식 $\cos\theta = \frac{e^{i\theta} + e^{-i\theta}}{2}$를 적용하여 $\cos(\omega(x-t))$를 복소지수함수 형태로 바꿉니다.

$f(x) = \frac{1}{\pi} \int_{0}^{\infty} \int_{-\infty}^{\infty} f(t) \left( \frac{e^{i\omega(x-t)} + e^{-i\omega(x-t)}}{2} \right) dt \, d\omega$

상수 1/2를 밖으로 빼내고, 두 개의 지수 항으로 식을 분리합니다.

$f(x) = \frac{1}{2\pi} \int_{0}^{\infty} \int_{-\infty}^{\infty} f(t) e^{i\omega(x-t)} dt \, d\omega + \frac{1}{2\pi} \int_{0}^{\infty} \int_{-\infty}^{\infty} f(t) e^{-i\omega(x-t)} dt \, d\omega$

 

5단계: 적분 구간 통합을 위한 변수 치환

현재 ω에 대한 적분 구간은 0부터 ∞까지입니다. 이것을 -∞부터 ∞까지로 합치기 위해 트릭을 사용합니다. 두 번째 항에 집중해 봅시다.

 

두 번째 항에서 변수를 ω′=-ω로 치환합니다.

-치환: ω′=-ω ⟹ ω=-ω′

-미분: dω′=-dω ⟹ dω=-dω′

-적분 구간: ω가 0→∞로 변할 때, ω′은 0→-∞로 변합니다.

 

이것을 두 번째 항에 적용하면 다음과 같습니다.

 

$두 번째 항 = \frac{1}{2\pi} \int_{0}^{-\infty} \int_{-\infty}^{\infty} f(t) e^{-i(-\omega')(x-t)} dt \, (-d\omega') $

 

$-d\omega'$의 마이너스 부호는 적분 구간의 순서($0 \to -\infty$)를 뒤집는 데($-\infty \to 0$) 사용될 수 있습니다.

 

$두 번째 항 = \frac{1}{2\pi} \int_{-\infty}^{0} \int_{-\infty}^{\infty} f(t) e^{i\omega' (x-t)} dt \, d\omega'$

 

여기서 $\omega'$는 더미 변수(dummy variable)이므로 다시 ω로 이름을 바꿔도 무방합니다.

 

$두 번째 항 = \frac{1}{2\pi} \int_{-\infty}^{0} \int_{-\infty}^{\infty} f(t) e^{i\omega(x-t)} dt \, d\omega $

 

6단계: 두 적분의 통합

이제 원래의 첫 번째 항과 변환된 두 번째 항을 봅시다.

 

적분구간이 연속되고, 두 항의 내부 적분 형태가 완전히 똑같으므로, ω에 대한 적분 구간을 합칠 수 있습니다.

 

\begin{align}

f(x) &= \frac{1}{2\pi} \int_{0}^{\infty} \int_{-\infty}^{\infty} f(t) e^{i\omega(x-t)} dt \, d\omega + \frac{1}{2\pi} \int_{-\infty}^{0} \int_{-\infty}^{\infty} f(t) e^{i\omega(x-t)} dt \, d\omega \\

f(x) &= \frac{1}{2\pi} \int_{-\infty}^{\infty} \left[ \int_{-\infty}^{\infty} f(t) e^{i\omega(x-t)} dt \right] d\omega

\end{align}

 

마지막으로, 지수 항을 $e^{i\omega x} \cdot e^{-i\omega t}$로 분리하여 식을 최종 형태로 정리합니다.

$ f(x) = \frac{1}{2\pi} \int_{-\infty}^{\infty} \left[ \int_{-\infty}^{\infty} f(t) e^{-i\omega t} dt \right] e^{i\omega x} d\omega $

 

삼각함수 형태에서 복소지수형태로 '푸리에 적분'을 유도하였습니다.

 

7단계: 푸리에 변환 쌍(Pair) 정의

$ f(x) = \frac{1}{2\pi} \int_{-\infty}^{\infty} \left[ \int_{-\infty}^{\infty} f(t) e^{-i\omega t} dt \right] e^{i\omega x} d\omega $

여기서 대괄호 [] 안의 부분은 시간 함수 $f(t)$를 주파수 함수로 변환하는 푸리에 변환(Fourier Transform)으로 정의됩니다.

 

$ F(\omega) = \int_{-\infty}^{\infty} f(t) e^{-i\omega t} dt $

 

7단계의 결과를 푸리에 변환식을 써서 다시 나타내면

$ f(x) = \frac{1}{2\pi} \int_{-\infty}^{\infty} F(\omega) e^{i\omega x} d\omega $

이렇게 되고, 이것을 우리는 '푸리에 역변환'이라고 부릅니다.

 

그리고 푸리에 변환과 역변환을 묶어서 푸리에 변환쌍이라고 부릅니다.

 

더불어 복소지수 형태는 '푸리에 적분'에서 생기는 계수가 바로 주파수 스펙트럼이 되어 식이 훨씩 깔끔해 졌습니다.(삼각함수로 나타낸 푸리에 적분에서는 계수 상태일땐 $\frac{1}{\pi}$가 붙어있다가, 푸리에 변환으로 정의한 식에서는 또 빠지고 그랬습니다.)




2) 복소지수함수로 표현된 푸리에 급수를 푸리에 적분으로 확장

삼각함수 형태에서 푸리에 급수를 푸리에 적분으로 확장하는 것과 기본 개념이 완전히 동일하기 때문에, 아마 기시감을 많이 느끼실거라 생각합니다.

개념상 그때와 중복되는 내용이 많겠지만, 그럼에도 불구하고 제대로 이해하고 있는지 한번씩 점검해보시면 좋을 것 같습니다.

 

핵심 아이디어는 주기 2L을 무한대(L→∞)로 보내는 것입니다. 이렇게 하면 주기 함수가 비주기 함수로 확장되고, 이산적인 주파수 성분의 합(Σ)이 연속적인 주파수 성분의 적분(∫)으로 변하게 됩니다.

 

1단계: 복소 푸리에 급수 정의하기

주기가 2L인 함수 $f(x)$는 다음과 같은 복소 푸리에 급수로 표현됩니다.

 

복소 푸리에 급수

$ f(x) = \sum\limits_{n=-\infty}^{\infty} c_n e^{i \frac{n\pi}{L}x} $

복소 푸리에 계수

$ c_n = \frac{1}{2L} \int_{-L}^{L} f(x)e^{-i \frac{n\pi}{L}x} dx $

 

푸리에 급수에서 주파수는 $\frac{\pi}{L}$의 정수배(n)로 이산적입니다. 이를 연속적인 주파수 변수로 바꾸기 위해 새로운 변수를 정의합니다.

 

이산 각주파수(Discrete Angular Frequency):

$ \omega_n = \frac{n\pi}{L} $

주파수 간격(Frequency Spacing): 인접한 주파수 사이의 간격입니다.

$ \Delta\omega = \omega_{n+1} - \omega_n = \frac{(n+1)\pi}{L} - \frac{n\pi}{L} = \frac{\pi}{L} $

 

이제 이 새로운 변수들을 사용하여 원래의 푸리에 급수 식에 계수 $c_n$의 정의를 직접 대입하여 하나의 식으로 만듭니다. (적분 변수는 t로 바꾸어 x와의 혼동을 피합니다.)

 

$ f(x) = \sum\limits_{n=-\infty}^{\infty} \left[ \frac{1}{2L} \int_{-L}^{L} f(t)e^{-i \frac{n\pi}{L}t} dt \right] e^{i \frac{n\pi}{L}x} $

 

2단계: 식을 Δω로 표현하기

위에서 정의한 $ \Delta \omega = \frac{\pi}{L} $ 관계로부터 $\frac{1}{L} = \frac{\Delta\omega}{\pi}$를 얻을 수 있습니다. 이것을 $c_n$ 부분의 $\frac{1}{2L}$에 대입합니다.

$ f(x) = \sum\limits_{n=-\infty}^{\infty} \left[ \frac{\Delta\omega}{2\pi} \int_{-L}^{L} f(t)e^{-i \omega_n t} dt \right] e^{i \omega_n x} $

 

이제 식의 순서를 조금 바꾸어 합의 맨 뒤에 Δω가 오도록 합니다.

$ f(x) = \frac{1}{2\pi} \sum\limits_{n=-\infty}^{\infty} \left[ \int_{-L}^{L} f(t)e^{-i \omega_n t} dt \right] e^{i \omega_n x} \Delta\omega $

 

이 형태는 리만 합(Riemann Sum)의 형태와 매우 유사합니다.

 

3단계: 극한 취하기 (L→∞)

이제 함수의 주기를 무한대로 보내는 극한을 취합니다. L→∞가 되면 다음과 같은 변화가 일어납니다.

 

- 주기 → 비주기: 함수는 더 이상 주기적이지 않고, 전체 실수 범위에서 정의됩니다. 따라서 적분 범위도 $(-\infty, \infty)$로 확장됩니다.

- 주파수 간격 → 0: $\Delta\omega = \frac{\pi}{L}$ → 0. 주파수 간격이 무한히 작아져 미분소 dω가 됩니다.

- 이산 주파수 → 연속 주파수: 이산적인 값들($ω_n$)이 모든 실수 값을 갖는 연속 변수 ω가 됩니다.

- 합(Summation) → 적분(Integral): 리만 합의 정의에 따라, Δω→0일 때 합 ∑은 적분 ∫으로 바뀝니다.

 

이 극한을 위 식에 적용하면,

 

$ f(x) = \lim\limits_{L \to \infty} \frac{1}{2\pi} \sum\limits_{n=-\infty}^{\infty} \left[ \int_{-L}^{L} f(t)e^{-i \omega_n t} dt \right] e^{i \omega_n x} \Delta\omega $

는 다음과 같이 변환됩니다.

$ f(x) = \frac{1}{2\pi} \int_{-\infty}^{\infty} \left[ \int_{-\infty}^{\infty} f(t)e^{-i \omega t} dt \right] e^{i \omega x} d\omega $

 

4단계: 푸리에 변환 쌍(Pair) 정의

이제 위 식에서 대괄호 [] 안의 부분을 새로운 함수 $F(\omega)$로 정의합니다. 이것이 바로 푸리에 변환입니다.

$ F(\omega) = \int_{-\infty}^{\infty} f(t)e^{-i \omega t} dt $

 

이 $F(\omega)$는 각 주파수 성분 ω가 얼마나 강하게 포함되어 있는지를 나타내는 "주파수 스펙트럼"입니다.

 

이것을 f(x) 식에 다시 대입하면 역 푸리에 변환을 얻습니다.

$ f(x) = \frac{1}{2\pi} \int_{-\infty}^{\infty} F(\omega) e^{i \omega x} d\omega $

 

이로써 복소푸리에급수를 복소푸리에적분으로 변환하고, 거기에서 바로 푸리에 변환까지 유도해 보았습니다.

 

 

3) 마무리

저번 포스팅에서 한번에 달려야 할 부분이 많아 길어졌기에, 이번 포스팅은 깔끔하게 적분과 변환 유도까지만 진행해보았습니다.

이제 수식적으로 모든 유도는 끝났습니다.

다음 포스팅에서는 복소푸리에변환을 한번 더 개념적으로 살펴보고 간단한 예제를 한번 풀어보도록 하죠!

반응형
반응형

푸리에 오디세이(Fourier Odyssey): 복소 푸리에 급수(Complex Fourier Series)

 

0) 서론

저번 포스팅까지 '푸리에 ~~~'의 모든 개념을 첫 푸리에 급수가 태동한 sin, cos함수로 끝까지 살펴보았습니다.

그러나 사실 푸리에 적분부터는 복소지수함수(Complex exponential function)로 나타낸 표현이 일반적입니다만, 통일성을 위해 sin과 cos으로 만들어진 초기 푸리에 급수에서부터 저희는 변환까지 유도해 보았죠!

기착지에서 다시 출발한 지금, 저번 포스팅까지 쭉 따라왔었던 급수~변환까지 흐름을 다시한번 따라가되, 이번에는 복소지수함수로 진행해 볼까합니다!

그럼 다시 한번 그 여정을 떠나보죠!

푸리에 오디세이! 다시 출항합니다!

 

 

1) 복소지수함수로 나타내기

1748년 오일러는 sin과 cos을 복소지수함수로 표현을 확장합니다.(오일러의 공식: $ e^{i\theta} = \cos\theta + i\sin\theta$)<자세한 건 복소수 평면에서의 오일러 공식을 참조하세요!)

그리고 이에따라 sin과 cos으로 나타내던 모든 푸리에 해석은 모두 복소지수함수로 표현이 가능해지죠.

 

만약 복소지수함수로 표현하게 된다면, sin과 cos으로 나누어져있던 정보들을 단 하나로 통합할 수 있게 됩니다.

말 그대로 sin과 cos의 정보를 '복소평면에서의 원운동' 단 하나로 압축해서 표현할 수 있기 때문이죠.

 

그리고 이에따라 $a_n,\ b_n$으로 나누어져있던 계수는 $c_n$ 단 하나의 계수로 표현이 가능해지고, 그 진폭과 위상도

진폭 = $ |c_n| $

위상 = $ \tan^{-1} \left( \frac{Im(c_n)}{Re(c_n)} \right) = \arg(c_n) $

이렇게 간단하게 표현 가능해집니다.

 

그러면 이제 서론에서 말했던 것처럼 다시 처음으로 돌아가서 푸리에 급수부터 적분, 변환까지 복소지수함수형태로 나타내 볼까요?

일단 급수부터 변환해보죠! (다만 역사적으로 푸리에 급수는 원래 cos, sin으로 표기되었습니다. 즉, 이건 일부러 변환해보는 겁니다.)

 

 

2) 푸리에 급수를 복소지수함수 형태로 나타내기

1단계: 오일러 공식을 이용하면 cos x와 sin x를 다음과 같이 정리할 수 있습니다.

\begin{align}
e^{i\theta} &= \cos \theta + i \sin \theta \\
e^{-i\theta} &= \cos \theta - i \sin \theta \\ \\
\cos \theta &= \frac{e^{i\theta} + e^{-i\theta}}{2} \\
\sin \theta &= \frac{e^{i\theta} - e^{-i\theta}}{2i}
\end{align}

위의 두 식을 더해서 정리하면 cos이 표현이 되고, 빼서 정리하면 sin이 표현이되죠!

 

2단계: 푸리에 급수에 오일러 공식 대입

이제 원래의 푸리에 급수 식에 있는 cos과 sin 항을 방금 유도한 지수 함수 형태로 교체합니다. 여기서 $ \theta = n\frac{\pi}{L}x $입니다.

\begin{align}

f(x) = \frac{a_0}{2} + \sum_{n=1}^{\infty} \left( a_n \left(\frac{e^{i \frac{n\pi}{L}x} + e^{-i \frac{n\pi}{L}x}}{2}\right) + b_n \left(\frac{e^{i \frac{n\pi}{L}x} - e^{-i \frac{n\pi}{L}x}}{2i}\right) \right)

\end{align}

 

3단계: $e^{i\theta}$와 $e^{-i\theta}$항으로 묶기

이제 식을 $e^{i \frac{n\pi}{L}x}$항과 $e^{-i \frac{n\pi}{L}x}$항을 기준으로 다시 묶어줍니다.

\begin{align}

f(x) = \frac{a_0}{2} + \sum\limits_{n=1}^{\infty} \left( \left(\frac{a_n}{2} + \frac{b_n}{2i}\right)e^{i \frac{n\pi}{L}x} + \left(\frac{a_n}{2} - \frac{b_n}{2i}\right)e^{-i \frac{n\pi}{L}x} \right)

\end{align}

분모에 있는 허수 i를 분자로 올리기 위해 분모와 분자에 i를 곱해주면 ($\frac{1}{i} = -i$), 식은 다음과 같이 정리됩니다.

\begin{align}

f(x) = \frac{a_0}{2} + \sum\limits_{n=1}^{\infty} \left( \left(\frac{a_n - ib_n}{2}\right)e^{i \frac{n\pi}{L}x} + \left(\frac{a_n + ib_n}{2}\right)e^{-i \frac{n\pi}{L}x} \right)

\end{align}

 

여기서 sin과 cos을 하나의 복소지수함수로 만들면서 재밌게도, 푸리에 급수 수식에서 삼각함수 형태가 사라지는 대신 비슷한 모양($e^{i \frac{n\pi}{L}x}, e^{-i \frac{n\pi}{L}x}$)의 항이 생기는 것을 볼 수 있습니다.

 

$e^{i \frac{n\pi}{L}x}$를 다시 정리해보면 $e^{i \frac{\pi x}{L}\ n}$

$e^{-i \frac{n\pi}{L}x}$를 다시 정리해보면 $e^{i \frac{\pi x}{L}\ -n}$

여기서 우리는 양수 n을 가지는 $e^{i \frac{n\pi}{L}x}$를 '양수 인덱스', 음수 n을 가지는 $e^{-i \frac{n\pi}{L}x}$를 '음수 인덱스' 항이라고 부르겠습니다.

 

4단계: 복소 계수 $c_n$ 정의

이제 복잡한 계수 부분을 새로운 복소 계수 $c_n$으로 치환하여 식을 단순화합니다.

n=0:

$ c_0 = \frac{a_0}{2} $

 

n≥1 일 때 (양수 인덱스):

$ c_n = \frac{a_n - ib_n}{2} $

 

n≤-1 일 때 (음수 인덱스):

$ c_{-n} = \frac{a_n + ib_n}{2} \quad (n \ge 1) $

 

이제부터는 등식관계로 연결되어 있기 때문에 $c_n$만 가지고 연산을 진행할 것입니다.

즉, $a_n$, $b_n$을 당장은 고려하지 않을 것입니다. 그러나 등식으로 연결되어있으므로 $c_n$을 제대로 구해서 정리하면 후에 $a_n$, $b_n$도 깔끔하게 정리될 수 있겠죠?

 

이 새로운 계수들을 3단계의 식에 대입하면 다음과 같습니다.

\begin{align}

f(x) = c_0 + \sum\limits_{n=1}^{\infty} \left( c_n e^{i \frac{n\pi}{L}x} + c_{-n} e^{-i \frac{n\pi}{L}x} \right) \\

f(x) = c_0 + \sum\limits_{n=1}^{\infty} c_n e^{i \frac{n\pi}{L}x} + \sum\limits_{n=1}^{\infty} c_{-n} e^{-i \frac{n\pi}{L}x} \\

\end{align}

 

5단계: 합(Summation) 범위 통합

위 식을 보면 n이 양수일 때의 합과 음수일 때의 합으로 나뉘어 있습니다. 이것을 하나의 합으로 합칠 수 있습니다.

- $ \sum\limits_{n=1}^\infty c_n e^{i\frac{n\pi}{L}x} $는 n이 1부터 ∞까지의 합입니다.

- $ \sum\limits_{n=1}^\infty c_{-n} e^{-i\frac{n\pi}{L}x} $에서 인덱스를 k=-n으로 바꾸면, n이 1,2,3,…로 변할 때 k는 -1,-2,-3,…로 변합니다. 따라서 이 합은 $ \sum\limits_{k=-1}^{-\infty} c_k e^{i\frac{k\pi}{L}x} $와 같습니다. k는 더미변수이므로 다시 n으로 바꿔써주면 $ \sum\limits_{n=-1}^{-\infty} c_n e^{i\frac{n\pi}{L}x} $

 

이것들을 $c_0$ 항과 모두 합치면, n이 -∞부터 ∞까지 모든 정수를 포함하는 하나의 합으로 표현할 수 있습니다.

 

\begin{align}

f(x) = \sum\limits_{n=-\infty}^{\infty} c_n e^{i \frac{n\pi}{L}x}

\end{align}

 

이 식에 n=0을 대입하면, 바로 $c_0$가 나오고 그 외에는 위에서 정리한대로 양수 인덱스와 음수 인덱스를 합칠 수 있으므로 아주 깔끔하고 우아하게 수식을 단 하나의 항으로 나타낼 수 있게 됩니다.

 

6단계: 복소 계수 $c_n$의 적분 형태 유도

마지막으로, 계수 $c_n$을 $a_n$과 $b_n$을 거치지 않고 원래 함수 $f(x)$에서 바로 구할 수 있는 적분 형태로 유도합니다.

$c_n = \frac{a_n-ib_n}{2}\ (n\ge1) $에 원래 $a_n,\ b_n$의 적분 공식을 대입합니다.

(참고로 제가 위에서 등식으로 연결되어있어 $c_n$만 잘 정리해서 계산하면 나중에 $a_n$, $b_n$도 잘 정리될거라했죠? 여기서 '$c_{-n}$식으로는 안되냐!' 고 하면, 실제로 결과는 완전 똑같이 나온답니다!)

 

\begin{align}

a_n &= \frac{1}{L} \int_{-L}^{L} f(x)\cos\left(\frac{n\pi}{L}x\right) dx \quad (n=0, 1, 2, ...) \\

b_n &= \frac{1}{L} \int_{-L}^{L} f(x)\sin\left(\frac{n\pi}{L}x\right) dx \quad (n=1, 2, 3, ...) \\ \\

c_n &= \frac{1}{2} \left( \frac{1}{L}\int_{-L}^{L}f(x)\cos\left(\frac{n\pi}{L}x\right)dx - i \frac{1}{L}\int_{-L}^{L}f(x)\sin\left(\frac{n\pi}{L}x\right)dx \right) \\ &= \frac{1}{2L} \int_{-L}^{L} f(x) \left( \cos\left(\frac{n\pi}{L}x\right) - i\sin\left(\frac{n\pi}{L}x\right) \right) dx

\end{align}

 

여기서 괄호 안의 식은 오일러 공식에 의해 $e^{-i \frac{n\pi}{L}x}$ 와 같습니다. 따라서 $c_n$의 최종 형태는 다음과 같습니다.

 

\begin{align}

c_n = \frac{1}{2L} \int_{-L}^{L} f(x)e^{-i \frac{n\pi}{L}x} dx

\end{align}

 

그리고 우리는 n이 양수인 것에서 출발했지만, 재밌게도 이렇게 계산된 $c_n$은 $ c_0 $도 포함한답니다.

아까 $c_0 = \frac{a_0}{2}$이었고, $a_0 = \frac{1}{L} \int_{-L}^{L} f(x) dx $이었죠.

풀어보면

$ c_0 = \frac{1}{2L} \int_{-L}^{L} f(x) dx $가 되는데, 이건 아까 $c_n$식에서 n에 0을 대입하면 나오는 식과 동일합니다.

 

 

최종 결과

다시 정리하면, 복소 푸리에 급수(Complex Fourier Series)와 복소 푸리에 계수(Complex Fourier Coefficients)는

 

\begin{align}

f(x) &= \sum\limits_{n=-\infty}^{\infty} c_n e^{i \frac{n\pi}{L}x}\\

c_n &= \frac{1}{2L} \int_{-L}^{L} f(x)e^{-i \frac{n\pi}{L}x} dx \quad (n = 0, \pm1, \pm2, ...)

\end{align}

 

입니다.

 

그리고 재밌게도 cos, sin을 통합하여 두개의 항을 하나의 항으로 나타내자, 급수의 영역이 더 늘어난 걸($(-\infty, -1)$ 구간이 추가되었죠?) 보실 수 있습니다.

사실상 항이 많은 것보다는 영역이 2배인게 좀 더 깔끔하니 훨씬 간결한 식이 되었습니다.

 

 

3) 음수 인덱스에 의해 생겨나는 음수 주파수

그러나 여기서 자세히 살펴보면... 주파수가 음수인게 있네요!? 이게 가능한 일인가요?

 

이 의문의 핵심은 실수 신호인 코사인파 하나를 만들기 위해 두 개의 복소지수 함수가 필요하다는 점에 있습니다.

 

오일러 공식으로 코사인 함수를 다시 살펴보겠습니다.

$ \cos(\omega t) = \frac{e^{i\omega t} + e^{-i\omega t}}{2} = \frac{1}{2}e^{i\omega t} + \frac{1}{2}e^{-i\omega t} $

 

이 식을 해석하면 다음과 같습니다.

  • $e^{i\omega t}$: 복소 평면에서 반시계 방향(양의 방향)으로 회전하는 벡터를 나타냅니다. 이것이 바로 양의 주파수 (+ω) 성분입니다.
  • $e^{-i\omega t}$: 복소 평면에서 시계 방향(음의 방향)으로 회전하는 벡터를 나타냅니다. 이것이 바로 음의 주파수 (-ω) 성분입니다.

 

실수 세상의 단순한 코사인파(좌우 진동) 하나는, 복소 세상에서는 이 두 개의 반대 방향으로 회전하는 벡터(성분)가 합쳐져야만 만들어집니다. 두 벡터의 허수 부분(수직 방향)은 서로 상쇄되고, 실수 부분(수평 방향)만 남아 우리가 아는 진동이 되는 것이죠.

 

즉, 마이너스 주파수는 물리적으로 존재하지 않는 유령 같은 개념이 아니라, 실수 신호를 수학적으로 표현하기 위해 필연적으로 등장하는 짝(pair) 성분입니다.



 

4) 삼각함수로 나타낸 푸리에 급수에서는 음수 주파수가 안보이는데요?

원래의 푸리에 급수에서는 cos(nωt) 와 sin(nωt) 만 사용했습니다. 여기서는 주파수를 나타내는 n이 양수(n≥1)였죠.

 

마이너스 주파수 개념이 명시적으로 필요 없었던 이유는 코사인과 사인의 대칭성(우함수/기함수 성질) 때문입니다.

  • 코사인은 우함수(cos(-x)=cos(x))이므로, 음수 주파수 성분은 양수 주파수 성분과 완벽히 동일하여 이미 표현에 포함되어 있었습니다.($a_n = c_n + c_{-n} $)
  • 사인은 기함수(sin(-x)=-sin(x))이므로, 음수 주파수 성분은 양수 주파수 성분의 계수 부호를 바꾸는 것과 같아 그 효과가 계수에 흡수될 수 있었습니다.($b_n = i(c_n-c_{-n})$)

즉, 이 두 성질 덕분에 마이너스 주파수 성분은 양수 주파수 항 안에 그 효과가 '숨어' 있었던 셈입니다. 복소 푸리에 급수는 이 숨어있던 성분을 양과 음의 주파수로 명확하게 분리해서 보여주는 것입니다.

 

복소 푸리에 급수는 이렇게 숨겨져 있던 두 회전 성분을 명확하게 분리하여 보여주는 더욱 상세한 분석 방법인 것입니다.

 

따라서 이는 단순히 '항은 절반, 영역은 두 배'가 되는 표면적인 변환을 넘어, 합쳐져있던 '음의 주파수'와 '양의 주파수'를 더욱 자세하게 쪼개 볼 수 있는 방법까지 제공하는 매우 유용한 도구가 됩니다.

 

추가로 $c_n$과 f(x)가 real value만을 가지는 함수라고 했을 때 조금 재밌는 관계가 나오는데요, $c_n$을 켤레복소수로 만들면(=$c_{-n}$) real축에대해 대칭인 점을 얻을 수 있다고 했잖아요?

수식으로 써보면 $| c_n | = | c_{-n} |$이고 $ \arg(c_n) = -\arg(c_{-n}) $입니다.

즉 크기는 같고 위상이 반대라는 말이죠.

 

그리고 이것으로 재밌는 성질이 하나 도출되는데…

진폭은 우함수 성질, 위상은 기함수 성질을 가진다는겁니다!

 

그래서 사실 우리는 복소푸리에 급수에 대해 $(-\infty, \infty)$ 까지 계산을 수행하지만 사실은 한쪽만($(0, \infty)$) 수행해도 된다는 말이기도 합니다.(더 자세히는 들어가지 않겠습니다.)

 

 

5) 더 나아가기

근데 왠지 급수자체도 복소지수로 구해보고 싶지 않나요!?

 

사실 푸리에가 처음 제안한 방식은 삼각함수인 cos, sin으로 근사하는 방법이었고, 이것을 먼저 유도한 다음 복소지수로 넘어가는것이 사실 역서적으로나 개념적으로나 맞겠습니다만...

 

근데 왠지 아예 푸리에 급수 자체도 복소지수로 구해볼 수 있지 않을까 하는 도전정신이 일어나지 않나요?

 

일단 뭐니뭐니해도 우리를 가장 애먹였던 '직교성'만 잘 구할 수 있으면 사실 복소지수자체로 푸리에 급수를 구하는 것도 어렵지만은 않아보입니다.

 

핵심 아이디어는 주기 함수 $f(x)$를 'sin이나 cos그래프로 근사한다'는 개념이 아니라 '복소 평면에서 회전하는 벡터들의 합으로 표현하는 것'입니다. 각 벡터는 복소 지수 함수 $e^{i \frac{n\pi}{L}x}$로 나타낼 수 있습니다.

 

원래 삼각함수 푸리에 급수가 '원래 함수 그래프에 여러 파동의 모양을 맞춰보는' 느낌이었다면, 복소 푸리에 급수는 '회전 운동의 조합으로 원하는 궤적을 그리는' 느낌입니다. 즉, 복소 평면에서 각자의 속도로 회전하는 여러 벡터들을 조합하여, 그 끝이 최종적으로 함수 $f(x)$의 궤적을 따라가도록 만드는 것과 같습니다.

 

그리고 벡터의 덧셈 연산은 '평행사변형 법' 말고도 '삼각형 법' 즉, 한 벡터의 종점에 다른 벡터의 시점을 연결하는 방법도 있죠.

 

그래서 이 방법을 사용하면 최종 벡터의 끝이 한번쯤은 보았을 법 한 '그림그리는 펜'의 역할을 수행해서 그림도 그릴 수 있답니다!(물론 복소평면에서 그려지니까 함수 자체도 복소함수가 되어야겠죠?)

 

자, 이제 직접 구해봅시다.

 

1단계: 복소 푸리에 급수 형태 가정

먼저, 주기 2L을 갖는 함수 $f(x)$가 다음과 같은 복소 지수 함수의 무한합으로 표현될 수 있다고 가정합니다. 여기서 c_n은 각 주파수 성분의 크기와 위상을 나타내는 복소 계수입니다.

$ f(x) = \sum\limits_{n=-\infty}^{\infty} c_n e^{i \frac{n\pi}{L}x} $

이 부분도 사실은 '가정'입니다.

우리가 처음에 삼각함수로 푸리에 급수를 나타낼 때도 원래 처음엔 '이렇지 않을까?'하면서 식을 만들었었죠.

 

뭐 사실 복소 푸리에 급수 형태를 처음부터 생각해 낸다는건, 삼각함수 푸리에 급수 형태를 생각해내는 것보다 훨씬훨씬 어려울 겁니다.

 

그러나 일단 삼각함수 푸리에 급수의 도움을 받던, 어찌됐던 일단 '가정'에 성공했다고 치고 진행해봅시다.

 

이제 우리의 목표는 이 식에서 계수 $c_n$을 구해내는 것입니다.



2단계: 복소 지수 함수의 직교성(Orthogonality) 활용

계수 $c_n을$ 분리해내기 위해 복소 지수 함수의 중요한 성질인 직교성을 이용합니다. 두 복소 지수 함수 $e^{i \frac{n\pi}{L}x}$와 $e^{i \frac{m\pi}{L}x}$를 한 주기($-L$부터 $L$까지)에 대해 곱해서 적분하면, 두 주파수가 같을 때(n=m)만 0이 아닌 값이 나옵니다.

 

단, 내적을 계산할 때는 한쪽에 켤레 복소수(Complex Conjugate)를 취해주어야 합니다. 즉, $e^{i \frac{m\pi}{L}x}$의 켤레 복소수인 $e^{-i \frac{m\pi}{L}x}$를 곱합니다.

 

$\int_{-L}^{L} e^{i \frac{n\pi}{L}x} \cdot e^{-i \frac{m\pi}{L}x} dx = \int_{-L}^{L} e^{i \frac{(n-m)\pi}{L}x} dx = \begin{cases} 2L & \text{if } n=m \\ 0 & \text{if } n \neq m \end{cases}$

 

해당 결과는 직접 적분을 해봐도 되고, 뒤에 나올 '상대속도'개념으로 생각해도 명확하죠!

이 성질 덕분에 무한한 항들의 합에서 우리가 원하는 특정 계수($c_m$)만 정확히 "뽑아낼" 수 있습니다.

 

여기서 살짝 켤레복소수의 의미를 살펴보면,

  • 1) 대수적으로는 '허수'를 제거하기위해 사용합니다.
    더하면 2배의 실수만 나오고, 곱하면 각 성분을 거듭제곱한 것들끼리 더한 실수만 나오죠.
  • 2) 기하학적으로는 복소수의 '원점으로 부터의 길이'를 나타냅니다.
    각 성분을 피타고라스 정리로 정리하면 원래 복소수에 켤레복소수를 곱한 값이 나오죠
  • 3) 동역학에서 실제로 원운동을 하는 점으로 본다면, 반대방향의 회전을 나타냅니다.

 

그리고 재밌게도 복소지수에서 곱셈은 길이(계수)의 곱과 회전각도(지수)의 덧셈으로 나타나죠.

그래서 복소지수에 같은 켤레복소수를 곱하는 행위는 항상 회전각도를 0으로 만들어서 결과가 항상 '실수'가 나오게 하는 것 입니다.

 

그럼 만약에 회전 속도가 다른 두 복소수는 어떨까요?

켤레복소수는 '반대방향의 회전'을 뜻한다고 하였습니다.

즉, 이말은 A * (B*)를 곱하면 그 회전 속도는 '상대속도'개념이 됩니다. A에서 B를 봐도 되고, B에서 A를 봐도 되지만, 어찌됐든 그 상대속도가 0이면, 두 값은 어찌됐든 특정한 값(벡터의 합)을 가지고 회전한다는 뜻이고 상대속도가 0이 아니라면 한 주기동안 모든 방향을 공평하게 가리킨다 = 원운동이므로 평균하면 0이 된다 = 내적 개념에서 둘은 비슷한 점이 단 하나도 없다.

가 됩니다. 그래서 켤레복소수를 써야만 하는 거죠.

 

3단계: 특정 계수($c_m$) 분리하기

1단계에서 가정한 식의 양변에 특정 주파수 성분(m)에 해당하는 켤레 복소수 $e^{-i \frac{m\pi}{L}x}$를 곱해줍니다.

$f(x) \cdot e^{-i \frac{m\pi}{L}x} = \left( \sum\limits_{n=-\infty}^{\infty} c_n e^{i \frac{n\pi}{L}x} \right) \cdot e^{-i \frac{m\pi}{L}x}$

 

이제 이 식의 양변을 한 주기(-L부터 L까지)에 대해 적분합니다.

$ \int_{-L}^{L} f(x) e^{-i \frac{m\pi}{L}x} dx = \int_{-L}^{L} \left( \sum\limits_{n=-\infty}^{\infty} c_n e^{i \frac{n\pi}{L}x} e^{-i \frac{m\pi}{L}x} \right) dx $

 

우변의 적분과 합계 기호의 순서를 바꿀 수 있으므로, 식은 다음과 같이 정리됩니다.

$\int_{-L}^{L} f(x) e^{-i \frac{m\pi}{L}x} dx = \sum\limits_{n=-\infty}^{\infty} c_n \int_{-L}^{L} e^{i \frac{n\pi}{L}x} e^{-i \frac{m\pi}{L}x} dx$



4단계: 직교성을 적용하여 계수($c_n$) 공식 유도

이제 2단계에서 본 직교성을 우변에 적용할 차례입니다. 우변의 적분 값은 n=m일 때를 제외하고는 모두 0이 됩니다. 따라서 무한히 많던 합계(∑) 항들이 모두 사라지고 n=m인 단 하나의 항만 남게 됩니다.

$ \int_{-L}^{L} f(x) e^{-i \frac{m\pi}{L}x} dx = c_m \cdot (2L) $

 

이제 이 식을 우리가 구하려던 계수 $c_m$에 대해 정리합니다.

 

$c_m = \frac{1}{2L} \int_{-L}^{L} f(x) e^{-i \frac{m\pi}{L}x} dx$

 

여기서 인덱스 m은 특정 항을 지칭하기 위해 사용한 것이므로, 일반적인 인덱스 n으로 다시 바꾸어 써주면 복소 푸리에 계수를 구하는 최종 공식을 얻게 됩니다.



결론

복소 푸리에 급수

$ f(x) = \sum\limits_{n=-\infty}^{\infty} c_n e^{i \frac{n\pi}{L}x} $

복소 푸리에 계수

$ c_n = \frac{1}{2L} \int_{-L}^{L} f(x) e^{-i \frac{n\pi}{L}x} dx \quad (n = 0, \pm1, \pm2, ...)$



삼각함수로 나타낸 푸리에 급수에서의 변환과 똑같죠?

 

 

6) 마무리

와.. 오늘은 진짜 긴 호흡의 포스팅이었습니다.

아무래도 복소지수함수로 표현하다보니, 수식적인 부분도 바꿔야하고 더욱 큰 부분은 개념적으로 더 자세하게 살펴볼 것이 많아져서 그것들을 짚어보느라 좀 많이 길어진 것 같습니다.

진짜 여기까지 따라오셨으면 또 큰 산을 하나 넘은거나 마찬가집니다.

 

'개념의 확장'

이게 제일 어려운건데, 벌써 삼각함수로 나타낸 푸리에 급수에서 한번, 해석에서 한번, 변환에서 한번, 그리고 복소지수함수로의 변환에서 한번...

여러번의 개념의 확장을 거쳐 여기까지 당도하신거잖아요!

 

앞으로 남은 포스팅은 몇개 되지만, 지금까지보다 더 큰 개념의 확장은 없을 겁니다.(소소하게는 있겠지만요)

이미 여러분께서 확장하신 개념의 크기가 앞으로의 포스팅도 전부 커버할 것이라고 봅니다!

 

고지가 얼마 안남았습니다!

조금만 힘냅시다!

반응형
반응형

푸리에 오디세이(Fourier Odyssey): 푸리에 변환(Fourier Transform)

 

0) 서론

아 드디어 기나긴 여정을 지나 푸리에 변환(Fourier Transform)이란 곳에 도달했습니다!

저번 포스팅의 마무리에서 언급한 것처럼 더이상 수식적 변화를 다루지는 않을 겁니다.(아주 약간의 사소한 변화는 있습니다)

즉, 푸리에 변환이라는건 푸리에 적분을 바탕에 깔고, 급수->해석 으로 패러다임 전환을 했던 것과 같은 느낌을 가지는 그런 것입니다.

 

 

1) 푸리에 변환

그럼 도대체 푸리에 변환이란 무엇일까요?

 

엄밀히 따지자면 푸리에 적분과 수식 자체는 같습니다.(애초에 푸리에 변환은 '개념'입니다. 수식을 가지는 '도구'는 푸리에 적분입니다)

그런데 뭐가 다르냐구요? 보는 대상이 다릅니다.

 

푸리에 적분까지는 그 태생인 푸리에 급수의 영향(원 함수를 근사하기)을 벗어나지 못했습니다.

따라서 푸리에 적분도 보면 맨 앞에 원래 함수 'f(x) ='이 항상 붙습니다.

 

그러나 우리는 이제 여기서 계수들을 따로 떼서 독립적인 주파수함수로 보는겁니다.

따라서 '푸리에 변환'이라고 하면 '메인 포인트'가 '원래함수 f(x)'를 '주파수 영역으로 보기'가 되는거고, 반대로 푸리에 역변환을 해야 f(x)를 근사하기 즉, 푸리에 적분이 되는 겁니다.

 

즉, 이전까지 급수, 적분은 '원 함수에 근사를 시켰더니 그 계수가 주파수의 정보를 주더라' 라는 개념이었으면,

푸리에 변환은 목적 자체가 '주파수의 정보를 얻기위해 원함수를 조작하자'로 패러다임을 변환시킨거죠.

 

한 문장으로 정리됩니다.

 

개념적인 내용이라 여러번 반복해서 다시 정리하자면

  • 푸리에 적분 (역변환): f(x)라는 함수는 보통 시간(t) 또는 공간(x) 영역의 함수입니다. 푸리에 적분은 주파수 영역의 정보를 이용해 시간/공간 영역의 원래 함수 f(x)를 '재구성'하는 데 초점을 맞춥니다.
    f(x) = ∫ [주파수 정보] dω

  • 푸리에 변환: 반면 푸리에 변환은 시간/공간 영역의 함수 f(x)를 **'분해'**해서 그 안에 어떤 주파수(ω) 성분이 얼마나 들어있는지, 즉 주파수 영역의 함수 F(ω)를 얻어내는 데 집중합니다.
    F(ω) = ∫ f(x) [변환식] dx



사실, 급수나 적분과는 다르게 약간 추상적인 내용이므로 비유를 하나 들어보겠습니다.

 

푸리에 변환을 이해하는 가장 좋은 비유는 빛을 분해하는 프리즘입니다.

  • 원래 함수 f(t): 여러 색이 합쳐진 백색광입니다. 겉으로 봐서는 어떤 색이 얼마나 섞여 있는지 알 수 없습니다. (시간 영역)
  • 푸리에 변환 $\mathcal{F}(f(t))$: 프리즘의 역할을 합니다. 백색광을 통과시켜 색깔별로 쫙 펼쳐줍니다.
  • 변환된 함수 F(ω): 프리즘을 통과해 나온 무지개(스펙트럼)입니다. 빨간색은 얼마나, 파란색은 얼마나 강하게 포함되어 있는지 명확하게 보입니다. (주파수 영역)
  • 푸리에 역변환 $\mathcal{F}^{-1}(F(\omega))$: 프리즘을 거꾸로 통과시키는 것과 같습니다. 펼쳐진 무지개를 다시 모아 원래의 백색광으로 만듭니다.

 

이처럼 푸리에 변환은 그냥 보기에는 복잡한 하나의 신호(백색광)를 그 본질적인 재료(각 색깔의 빛)들로 분해해서 분석하는 강력한 도구인 셈입니다.



그리고 진짜 재밌는 부분은 이렇게 관점을 바꿈으로써, 단순한 계수를 만들어내는 함수가 아닌 시공간에 대한 원함수 f(x)를 다른 영역의 함수 F(ω)랑 1:1로 대응을 시킬 수 있었다는 겁니다.(그 전까지는 그냥 계수를 만들어내는 함수 그 이상도 이하도 아니었기 때문에 이런 생각을 못했던거죠. 푸리에 급수에서 해석으로의 관점변화와 유사합니다)

즉, 말 그대로 시공간에 대한 함수 f(x)를 주파수 스펙트럼에 대한 함수 F(ω)로 '변환'하는 거죠.(그리고 이 '변환'이라는건 하나의 '규칙' 또는 '연산자'로 본다는 의미입니다.)

 

 

2) 수학적으로 무슨 차이가 있는가?

수학적 계산(적분 공식)은 본질적으로 동일합니다. 하지만 이 개념적 전환이 다음과 같은 거대한 차이를 만들어냅니다.

  • 쌍대성(Duality)의 발견: '시간 영역'과 '주파수 영역'이라는 두 개의 독립적인 세계가 있으며, 푸리에 변환과 역변환을 통해 서로를 오갈 수 있다는 '쌍대성' 개념이 확립되었습니다. 이는 한쪽 세계에서 풀기 어려운 문제를 다른 쪽 세계에서 쉽게 풀 수 있는 길을 열었습니다.(컨볼루션(Convolution) 정리가 대표적입니다. 시간영역에서의 두 함수의 복잡한 컨볼루션 연산은 주파수영역으로 푸리에 변환 한 두 함수를 단순히 곱해서 역변환한 결과와 같다는 정리입니다.)
  • 연산자(Operator)로서의 변환: '변환'이라는 이름을 붙임으로써, 이 과정은 단순한 공식이 아니라 함수에 작용하는 하나의 수학적 연산자로 취급되기 시작했습니다. 이 연산자는 선형성(Linearity) 같은 중요한 성질을 가지며, 이를 통해 시스템 분석, 미분방정식 풀이 등 훨씬 복잡하고 추상적인 문제에 체계적으로 적용할 수 있게 되었습니다.
  • 분석의 대상화: 스펙트럼 자체를 주인공으로 만들면서, "이 신호는 저주파 성분이 강하다", "이 시스템은 특정 주파수를 차단한다"와 같이 주파수 관점에서 세상을 분석하고 해석하는 것이 자연스러워졌습니다.

 

결론적으로, 사인/코사인 관점에서의 발전은 수학 공식의 변화가 아닌, 공식을 해석하는 패러다임의 전환입니다. 함수를 재구성하는 '도구'였던 계수 함수를, 함수를 분석하는 '결과물'이자 독립적인 '스펙트럼 함수'로 바라보기 시작한 것이 바로 푸리에 적분에서 푸리에 변환으로의 핵심적인 지적 도약입니다.

 

 

3) 수식적으로는 어떻게 정의 되는데?

푸리에 적분과는 수식적으로 같다고 하였으나, 아주 약간 다른 부분이 있습니다.

 

푸리에 적분에서는

\begin{align}

f(x) &= \int_{0}^{\infty} [A(\omega)\cos(\omega x) + B(\omega)\sin(\omega x)] d\omega \\

A(\omega) &= \frac{1}{\pi} \int_{-\infty}^{\infty} f(t) \cos(\omega t) dt \\

B(\omega) &= \frac{1}{\pi} \int_{-\infty}^{\infty} f(t) \sin(\omega t) dt

\end{align}

 

이와같이, 계수 함수 안에 $ \frac{1}{\pi} $을 포함하였으나, 푸리에 변환에서는 '심플 이즈 베스트'원칙에 따라 이 상수부분이 없는 걸 채택합니다. 즉,

\begin{align}

F_c(\omega) &= \int_{-\infty}^{\infty} f(t) \cos(\omega t) dt \\

F_s(\omega) &= \int_{-\infty}^{\infty} f(t) \sin(\omega t) dt

\end{align}

 

이렇게 정의합니다. 여기서 Fc와 Fs는 cos에 대한 푸리에 변환, sin에 대한 푸리에 변환을 의미합니다.

 

따라서 푸리에 역변환은

\begin{align}

f(t) = \frac{1}{\pi} \int_{0}^{\infty} [F_c(\omega)\cos(\omega t) + F_s(\omega)\sin(\omega t)] d\omega

\end{align}

이렇게 쓰여지겠죠?

 

여기서도 관점이동이 보이시나요? 단순 푸리에 적분일때는 어떻게든 $ \frac{1}{\pi} $를 안쪽으로 넣어서 전체 식 자체가 '이쁘게 보이게'만들고, 푸리에 변환일때는 각각의 주파수 함수에 집중해서 거기서 $ \frac{1}{\pi} $를 빼는걸요!



4) 용어정리

자, 이제 우리는 '푸리에 ~~~'이라고 하는 모든 용어를 알게 되었습니다.

자세히 풀어써보자면 포스팅 순서대로, 푸리에 급수(Fourier Series), 푸리에 해석(Fourier Analysis), 푸리에 적분(Fourier Integral), 푸리에 변환(Fourier Transform)의 네 가지 용어죠.

자 여기서 개념적 이해를 돕기 위해 제가 약간 순서를 섞어 놓았는데요
(말그대로 '약간!'입니다. 혹시 깨달으셨나요? 포스팅이 개념-수학-개념-수학-... 처럼 단짠단짠, 밀당으로 구성되었다는 사실!)

여기에서 각 용어의 범위를 정확히 알려드리도록 하겠습니다.

 

1] 푸리에 해석(Fourier Analysis)

사실상 푸리에 해석이라는 것이 제일 최상위 개념입니다.

신호/함수를 주파수 성분으로 분해하여 분석하는 모든 이론과 학문 분야 자체를 의미합니다.

실제 포스팅에서도 개념상 큰 패러다임 전환이 있었던 파트였죠.

그리고 이 '최상위 개념'이란걸 표현하기 위해 사실상 푸리에 급수 바로 뒤에 배치해서 "푸리에 급수만으로도 '푸리에 해석'이란게 가능해요(=더 상위 개념으론 당연히 가능하겠죠?)"라는 걸 보여드리려고 했는데, 잘 전달되었는가 모르겠습니다!

 

2] 푸리에 급수(Fourier Series)

우리가 제일 처음 살펴보았듯이, 말 그대로 '푸리에 ~~~'라는 푸리에 오디세이(대장정)를 시작하는 사실상 제일 첫걸음입니다.

시작은 주기함수로 임의의 함수를 근사하려는 목적이었지만, 그 이면엔 '주파수 차원'을 엿볼 수 있는 강력한 개념을 숨기고 있었습니다.

'구간'이 정해져있어 주기함수를 다루는 방법론이 되며, '급수'라는 말에 걸맞게 이산(Discrete) 신호를 출력하게 됩니다.(이산 스펙트럼)

역사적으로 '급수'라는 말 자체가 '방법(도구)'과 '결과(개념)'를 모두 포함하고 있어(테일러 급수, 매클로린 급수 등 전부 '무한합의 방법'과 그 결과로 나타나는 '결과'를 한번에 통칭하죠) 푸리에 급수라는 말은 '근사하는 방법(도구)'과 '주파수 영역으로 분해(개념)'라는 두 가지 개념을 모두 포함하고 있습니다.

 

3] 푸리에 적분(Fourier Integral)

바로 이전 포스팅에서 살펴보았듯이, 푸리에 급수의 한계(주기)를 돌파하기위해 '비주기'으로 개념을 확장한 하나의 수학적 '도구'입니다.

푸리에 급수로 근사하기 어려운 비주기 함수를 근사하려는 목적이었죠.

이 푸리에 적분을 수행하면, 비주기 함수에 대한 '완벽한 수학적 참값'을 얻어낼 수 있으며, 연속 스펙트럼을 출력합니다.

 

4] 푸리에 변환(Fourier Transform)

사실 이 용어가 하나 추가되면서 엄청난 혼란을 주게 됩니다.

그리고 그 혼란의 근원은 푸리에 급수에서는 합쳐져있던 도구와 개념이 분리되어 표현된 용어이기 때문이죠.

주기함수에 대한 이산적인 결과를 도출하는 도구와 개념푸리에 급수라는 용어에 한꺼번에 포함되어 있었다면,

비주기함수에 대한 연속적인 결과를 도출하는 도구는 '푸리에 적분'으로 개념은 '푸리에 변환'으로 분리되어 표현되어 있습니다.

(정확히는 두 용어에서 수학식 자체는 공유를 하지만, '근사'에 목적을 둔 '푸리에 적분'식 자체는 '푸리에 역변환'이죠)

 

그럼 왜 하필 '푸리에 변환'이라고 개념을 따로 정의를 했을까요?(이번 포스팅의 주제로 열심히 설명하였으나 다시 한 번 정리해봅시다!)

일단 이 '푸리에 변환'이라고 하는 개념을 밑에서 받쳐주는 도구인 '푸리에 적분'을 사용해 보니, 단순히 계산 툴을 넘어 시간 영역의 함수 $f(t)$를 주파수 영역의 함수 $F(\omega)$와 대응(mapping)시키고, 이에 따라 하나의 연산(operation)을 만들어 낼 수 있다는 '가능성'이 발견되었습니다.

그리고 이 '가능성'을 더욱 심화 발전시켜, 이 $t \leftrightarrow \omega$ 영역을 오가는 관계 전체와 그 관계에서 파생되는 모든 중요 성질(예: 선형성, 시간 이동, 주파수 이동, 그리고 가장 중요한 컨볼루션 정리(Convolution Theorem) 등)을 모두 포함하는 더 크고 확장된 개념을 정립하게 되었죠.

그리고 이 '더 큰 개념'에 '푸리에 변환(Fourier Transform)'이라는 이름을 붙여준 겁니다.

말 그대로 "'시간'과 '주파수' 각 영역을 '변환'시킨다"는 개념을 명확히 표현한 것입니다.

 

 

5) 마무리

이로써 '푸리에 ~~~'에 해당하는 모든 용어를 전부 다루어, 길고 긴 푸리에 오디세이(대장정)를 일단락 하는 포스팅이었습니다.

사실상 여기까지 따라오셨으면, 개념상 '푸리에 ~~~'의 모든 개념을 알게되신 겁니다!

 

다만, sin, cos의 삼각함수가 나오면 항상 따라나오는 그 분(오일러)의 발견에 따라 수식을 어떻게 다르게 나타낼 수 있는지 그 방법을 알아보고, 마지막 푸리에 변환에서 '쌍대성'과 관련해서 더욱 발전한 개념 바로 이 두 가지만 더 살펴보면 이 길고 긴 푸리에 오디세이가 끝나게 됩니다.

 

기착지와 같은 포스팅이라 지금까지의 대단원을 정리해보고, 앞으로 남은 부분을 살펴보았습니다.

 

다음 포스팅부터는 진짜 수식의 향연입니다.. 마음 단단히 먹고 다시 끝을 향해 달려가봅시다!

반응형
반응형

푸리에 오디세이(Fourier Odyssey): 푸리에 적분(Fourier Integral)

 

0) 서론

이로써 푸리에 급수를 통해서 '임의의 함수'를 근사하던 것(푸리에 급수)에서 부터 출발해서,

오히려 반대로 그 '임의의 함수'를 주파수별로 '분해' 할 수 있고, 이를 바탕으로 임의의 함수를 주파수 별로 분석 할 수 있다는 것을 알았습니다.(푸리에 해석(분해))

그리고 조금만 더 생각해보면, 이 주파수별로 분해된 정보들(진폭, 위상)로 거꾸로 '임의의 함수'를 다시 '합성' 할 수 있다는 걸 아실 수 있겠죠?(푸리에 해석(합성) 혹은 푸리에 역해석)

자, 여기까지가 저번 포스팅에서 다루었던 내용입니다.

 

 

1) 푸리에 급수의 한계

여기서 푸리에 급수는 '임의의 함수'를 근사하는 도구라고 했습니다.

그리고 특히 그 '임의의 함수'가 '주기가 2L인 함수'일 경우 이 푸리에 급수는 더욱더 강력해지죠.

주기성을 가지는 삼각함수로 근사하는 방식이니 '초기함수'가 애초에 주기성을 가지면 더할 나위 없이 좋겠죠?

따라서 주기가 2L인 함수를 [-L, L] 구간에서 분석할 경우, 푸리에 급수로 유의미한 푸리에 계수들을 얻어낼 수 있었습니다.

 

그리고 마찬가지로 0~L구간에서 비주기 함수더라도 -L~L구간으로 확장시키면 주기함수가 되니까 이또한 유의미한 푸리에 계수를 뽑아낼 수 있...을 거라 생각했는데.. 비주기 함수를 강제로 주기함수로 만들어버리면

  • 1) 내가 정한 L값에 따라 주파수 성분이 멋대로 바뀌고(기본주파수는 L과 관련이있죠?)
  • 2) 억지로 자른 경계면(대표적으로 x=0)의 불연속 문제(Gibbs phenomenon:불연속점이 있는 함수를 푸리에 급수로 근사할 때, 불연속점 주변에서 오버슈팅(overshooting)이 발생하는 현상) 때문에 있지도 않던 '유령' 주파수들이 잔뜩 튀어나옵니다
  • 3) 더불어 단 한번만 있는 신호였는데도 2L주기를 가지고 무한히 반복하는 신호처럼 호도하기까지하죠.

 

결국 이렇게 '억지로'만들어낸 비주기 함수의 푸리에 급수는 0~L구간에서의 그래프 '근사'에는 성공하지만, 반대로 유의미한 '계수 추출' 즉 '분석'에는 완전히 실패하게 됩니다.

주파수로 분해해볼 수 있는 과실을 맛봤던 사람들이, 과연 포기했을까요? 아니면 어떻게 해서든 이 비주기함수도 주파수 분석이 가능한 방법을 만들어냈을까요?

 

정답은 뭐 당연히 후자겠죠.

왜냐하면 현실 세계의 수많은 중요한 신호들—한 번의 충격, 짧은 음성, 순간적인 금융 데이터—가 모두 비주기 함수였기 때문입니다.

 

그리고 이것이 바로 푸리에 적분(Fourier Integral)의 탄생설화입니다.




 

2) 푸리에 적분이란?

그럼 푸리에 적분은 이걸 어떻게 해결했을까요?

 

지금 제시된 세가지 문제 모두 인위적인 경계면 -L, L로 한정하는게 문제였습니다.

 

그렇다면 문제는 매우 간단해집니다.

그냥 이 주기를 없애버리면 됩니다.

어떻게요? 주기를 무한대로 보내버리면 이 비주기함수는 -무한대~무한대 전체 구간을 하나의 거대한 '주기'로 간주하는 것입니다!

 

그리고 이 '주기를 무한대로 보낸다'는 단순하지만 대담한 아이디어 하나가, 푸리에 해석의 세계를 완전히 바꾸어 놓습니다. 띄엄띄엄 떨어져 있던 주파수들은 촘촘한 연속체로 변하고, 덧셈 기호(∑)는 적분 기호(∫)에게 자리를 내주게 되죠.

 

즉, 말 그대로 이산적인 푸리에 급수(∑)에서 무한의 개념을 가진 연속적인 푸리에 적분(∫)으로 변화가 일어난 겁니다.

 

그럼 지금까지 기본적으로 왜 푸리에 급수에서 푸리에 적분으로 개념이 확장되게 되었는지 알아보았으면, 실제로 수식으로 이것을 따라가 볼까요?

 

 

3) 수식으로 살펴보기

푸리에 급수는 다음과 같이 완성했습니다.

\begin{align}

f(x) &= \frac{a_0}{2} + \sum_{n=1}^{\infty} ( a_n \cos (\frac{n \pi}{L}x) \ + \ b_n \sin (\frac{n \pi}{L}x) ) \\

a_n &= \frac{1}{L} \int_{-L}^{L} f(x)\cos\left(\frac{n\pi}{L}x\right) dx \quad (n=0, 1, 2, ...) \\

b_n &= \frac{1}{L} \int_{-L}^{L} f(x)\sin\left(\frac{n\pi}{L}x\right) dx \quad (n=1, 2, 3, ...)

\end{align}

 

이제 이 푸리에 급수를 적분으로 바꿔보죠! 차근차근 따라오시면 됩니다!

 

1단계: 계수를 급수 식에 대입

위 계수 공식을 원래의 급수 식에 대입합니다. (적분 변수원 푸리에식의 x와의 혼동을 피하기 위해 t로 사용합니다.)

$ f(x) = \frac{1}{2L}\int_{-L}^{L}f(t)dt + \sum\limits_{n=1}^{\infty} \left[ \left(\frac{1}{L} \int_{-L}^{L} f(t) \cos(\frac{n\pi}{L}t) dt\right)\cos(\frac{n\pi}{L}x) + \left(\frac{1}{L} \int_{-L}^{L} f(t) \sin(\frac{n\pi}{L}t) dt\right)\sin(\frac{n\pi}{L}x) \right] $

 

적분을 밖으로 빼내어 정리하면 다음과 같아집니다.

$ f(x) = \frac{1}{2L}\int_{-L}^{L}f(t)dt + \frac{1}{L} \sum\limits_{n=1}^{\infty} \int_{-L}^{L} f(t) \left[ \cos(\frac{n\pi}{L}t)\cos(\frac{n\pi}{L}x) + \sin(\frac{n\pi}{L}t)\sin(\frac{n\pi}{L}x) \right] dt $

 

삼각함수의 덧셈정리 cos(A−B)=cosAcosB+sinAsinB를 이용해 괄호 안의 식을 간단히 만듭니다.

$ f(x) = \frac{1}{2L}\int_{-L}^{L}f(t)dt + \frac{1}{L} \sum\limits_{n=1}^{\infty} \int_{-L}^{L} f(t) \cos\left(\frac{n\pi}{L}(t-x)\right) dt $

 

 

2단계: 주파수 변수 도입 및 극한 적용

이제 주기를 무한대로 보내는 과정(L→∞)을 적용합니다.

 

각주파수 $\omega_n = \frac{n\pi}{L}$와 주파수 간격 $\Delta\omega = \frac{\pi}{L}$를 정의합니다.

이로부터 $\frac{1}{L} = \frac{\Delta\omega}{\pi}$를 얻습니다.

이 관계를 위 식에 대입합니다.

$ f(x) = \frac{1}{2L}\int_{-L}^{L}f(t)dt + \frac{1}{\pi} \sum\limits_{n=1}^{\infty} \left[ \int_{-L}^{L} f(t) \cos(\omega_n(t-x)) dt \right] \Delta\omega $

 

이제 극한 L→∞를 취합니다.

  • 첫 번째 항: 함수 $f(x)$가 절대적분 가능하다면($\int_{-\infty}^{\infty}|f(t)|dt < \infty$), L→∞일 때 함수의 평균값인 첫 번째 항은 0으로 수렴합니다.
  • 두 번째 항: 합(summation)은 리만 합의 정의에 따라 적분(integral)으로 바뀝니다.
    - $\sum\limits_{n=1}^\infty \rightarrow \int_0^\infty $ [n은 '순서'이고 적분구간은 $\omega$의 '값'이므로 n=1 → 적분구간 0으로 바뀝니다]
    - $\Delta \omega \rightarrow d \omega $
    - $ \omega_n \rightarrow \omega $
    - 적분 구간 [−L, L] → [−∞, ∞]

 

따라서 식은 다음과 같이 변환됩니다.

$ f(x) = \frac{1}{\pi} \int_{0}^{\infty} \left[ \int_{-\infty}^{\infty} f(t) \cos(\omega(t-x)) dt \right] d\omega $

 

3단계: 푸리에 적분 공식 유도

위 식은 푸리에 적분의 한 형태입니다. 여기서 다시 삼각함수 덧셈정리 $\cos(\omega(t-x)) = \cos(\omega t)\cos(\omega x) + \sin(\omega t)\sin(\omega x)$를 사용하여 식을 전개하면 최종적인 푸리에 적분 공식을 얻을 수 있습니다.

 

3-1단계: 삼각함수 덧셈정리 적용

가장 안쪽에 있는 cos 항을 분리하는 것이 목표입니다. 이를 위해 삼각함수의 덧셈정리 공식을 사용합니다.

사용할 공식: cos(A - B) = cosAcosB + sinAsinB
(여기서 A = ωt, B = ωx로 치환합니다.)

 

이 공식을 cos(ω(t-x))에 적용하면 다음과 같이 전개됩니다.

$ \cos(\omega(t-x)) = \cos(\omega t)\cos(\omega x) + \sin(\omega t)\sin(\omega x) $

 

이 전개된 식을 원래의 적분 식에 다시 대입합니다.

$ f(x) = \frac{1}{\pi} \int_{0}^{\infty} \left[ \int_{-\infty}^{\infty} f(t) \left( \cos(\omega t)\cos(\omega x) + \sin(\omega t)\sin(\omega x) \right) dt \right] d\omega $



3-2단계: 안쪽 적분 분리 및 변수 분리

이제 대괄호 [...] 안의 적분을 두 부분으로 나눕니다. 적분 변수는 t이므로, t와 무관한 항들은 적분 기호 밖으로 빼낼 수 있습니다.

 

  1. 먼저 f(t)를 괄호 안으로 분배합니다.

    $ \int_{-\infty}^{\infty} \left( f(t)\cos(\omega t)\cos(\omega x) + f(t)\sin(\omega t)\sin(\omega x) \right) dt $


  2. 적분의 성질에 따라 두 개의 적분으로 분리합니다.

    $ \int_{-\infty}^{\infty} f(t)\cos(\omega t)\cos(\omega x) dt + \int_{-\infty}^{\infty} f(t)\sin(\omega t)\sin(\omega x) dt $


  3. 각 적분에서 t에 무관한 항(cos(ωx)와 sin(ωx))을 적분 기호 밖으로 꺼냅니다.

    $ \cos(\omega x) \int_{-\infty}^{\infty} f(t)\cos(\omega t) dt + \sin(\omega x) \int_{-\infty}^{\infty} f(t)\sin(\omega t) dt $

 

 

3-3단계: 최종 공식 정리 및 A(ω), B(ω) 정의

위에서 정리한 식을 다시 원래의 전체 식에 대입합니다.

$ f(x) = \frac{1}{\pi} \int_{0}^{\infty} \left[ \cos(\omega x) \int_{-\infty}^{\infty} f(t)\cos(\omega t) dt + \sin(\omega x) \int_{-\infty}^{\infty} f(t)\sin(\omega t) dt \right] d\omega $

 

너무 식이 길어지니 푸리에 급수처럼 cos과 sin에 대한 계수 형태로 다시 정리해보면,

\begin{align}

f(x) &= \int_{0}^{\infty} [A(\omega)\cos(\omega x) + B(\omega)\sin(\omega x)] d\omega \\

A(\omega) &= \frac{1}{\pi} \int_{-\infty}^{\infty} f(t) \cos(\omega t) dt \\

B(\omega) &= \frac{1}{\pi} \int_{-\infty}^{\infty} f(t) \sin(\omega t) dt

\end{align}

 

이것이 삼각함수 형태의 푸리에 급수에서 직접 유도된 푸리에 적분(Fourier Integral)입니다.

이산적인 합 ∑이 연속적인 적분 ∫으로, 이산적인 계수 $ a_n,\ b_n $이 연속적인 함수 $A(\omega), B(\omega)$로 바뀐 것을 확인할 수 있습니다.



 

4) 마무리

네, 이렇게 '푸리에 급수'에서 '푸리에 적분'으로 확장되는 과정을 살펴보았습니다.

 

다시 정리해보자면,

푸리에 급수를 여러 난관을 헤쳐가며 만들었지만,
그 이후에 '구간설정의 문제'로 발생하는 여러 문제들을 해결하기위해,
이산적인 급수를 연속적인 적분으로 확장하였다

로 정리해 볼 수 있겠습니다.

 

다음 포스팅 주제는 바로 대망의 '푸리에 변환(Fourier Transform)'!

그러나 사실 거창한건 아니고 '푸리에 해석(Fourier Analysis)'처럼 약간의 개념적 변화를 다루게 됩니다.(즉 수식은 딱 여기 쓴 것 까지!)

 

어찌됐든 다음편도 재밌을 예정이니 기대해주세요!

반응형
반응형

푸리에 오디세이(Fourier Odyssey): 푸리에 해석(Fourier Analysis)

 

0) 서론

이로써 저번까지 푸리에 급수에 대해서 완벽하게 알아보았습니다.

그렇게 '특정 구간내에서 정의된 임의의 함수도 삼각함수로 근사할수 있지롱!'에서 끝나는 것 같았는데...

 

 

1) 푸리에.. 해석...???

이 푸리에 급수를 보던 사람들이 또 다른 생각을 반짝이기 시작합니다.

이전에 직교성에서도 알아봤듯이 직교하는 두 함수는 두개의 '축'이라고 볼 수도 있다고 했잖아요?

그리고 두개의 축이 각자 어느정도인지만 정해주면 그 공간상에서 모든 점을 표현할 수도 있다고 했습니다.

 

그 말인 즉슨 임의의 주기함수도 sin과 cos의 조합으로 만들 수 있다는 셈이 됩니다.

더불어 주파수가 다른 sin과 cos도 서로 직교한다고했으니, 이 개념까지 더하면

 

'특정 주파수를 가지는 임의의 순수 정현파(pure sinusoid wave)를 만들어낼 수 있다'가 됩니다.

여기서 정현파(sinusoid wave)는 sin, cos과 같은 물결파(단일 주파수 파형(pure single-frequency wave))를 말합니다.

 

그리고 이 기본 주파수의 모든 정수배를 다 더하고, 각 항에 해당하는 '푸리에 계수'를 곱해주게 되면 결과적으로 독특한 파형을 나타내게 되고, 이게 결국 특정 구간에서 임의의 함수를 근사해 내게 되죠.

 

여기서 관점을 조금만 바꿔보면 푸리에 급수는 이제 단순히 '임의의 함수'를 근사하는데에서 멈추지 않고, '임의의 함수'를 주파수별로 '분해'까지 할 수 있다는 걸 알게된거죠!

 

그리고 그 주파수별 분해는 결국 cos과 sin의 계수인 $a_n$과 $b_n$에 의해 가능해집니다.

 

이것을 푸리에 해석이라고 합니다.

 

이 강력한 관점의 전환은 세상을 바꾸어 놓았습니다.

예를 들어, 오디오 이퀄라이저(EQ)는 소리라는 복잡한 파형을 푸리에 해석으로 주파수별로 분해한 뒤, 특정 주파수(저음, 고음 등)의 진폭을 조절하고 다시 합치는 원리입니다.

MP3 압축은 사람이 잘 듣지 못하는 주파수 성분을 찾아내 진폭을 줄여 데이터 크기를 줄이는 기술이죠.

즉, 시간의 흐름 속에서는 파악하기 힘든 신호의 '특성'을 주파수 세계에서는 명확히 볼 수 있게 된 것입니다.



2) 이미지로 생각해보기

단위원에서 cos nx축과 sin nx축을 생각해봅시다.

 

푸리에 해석은 다음 두 가지 핵심 정보를 알려줍니다.

 

1] 진폭(Magnitude or Amplitude): 각 주파수 성분이 얼마나 강한가?

특정 주파수에서의 진폭은 cos 축으로 $a_n$, sin축으로 $b_n$만큼인 빨간 벡터의 길이와 같습니다.

즉, 진폭의 크기는 $\sqrt{a_n^2+b_n^2} $이죠.(피타고라스 정리죠?)

 

2] 위상(Phase): 각 주파수 성분이 어떤 타이밍에서 시작하는가?

또한 특정 주파수에서의 위상(=시작점)은 이 벡터의 각도와 같습니다.

즉, $\phi_n =  \tan^{-1}(\frac{b_n}{a_n}) $이죠.

 

그리고 이걸 기본주파수의 정수배인 모든 주파수에 대하여 해석할 수 있게 된겁니다!

 

패러다임 시프트죠. 시간에 대한 함수를 주파수로 분해하다니요!



3) 주파수 스펙트럼

여기서 한발 더 나아가보자면, 분석의 결과를 그래프화 할 수도 있지 않을까요?

그리고 이 그림을 바로 '주파수 스펙트럼'이라고 합니다.

우리가 두가지의 정보(진폭, 위상)을 알수 있었던 만큼, 이 '주파수 스펙트럼'도 두 가지가 있는데요

 

출처: sciencedirect.com

 

1] 한가지는 가로축은 주파수, 세로축은 해당 주파수 성분의 세기(진폭)를 나타낸 주파수 스펙트럼입니다.

위의 그림에서 첫 번째 그래프죠.

이 스펙트럼을 보면, 어떤 복잡한 파형이라도 '어떤 주파수 성분들이 얼마나 강하게 섞여있는지'를 한눈에 파악할 수 있습니다. 예를 들어 사각파(Square Wave)를 주파수로 분해하면, 기본 주파수와 그 홀수배 주파수들(3배, 5배, 7배...)의 성분만 나타나는 독특한 스펙트럼을 보여줍니다.

우리가 흔히 '저음이 풍부하다' 또는 '고음이 날카롭다'라고 말할 때 주로 이 진폭 스펙트럼을 이야기하는 것입니다.

 

2] 다른 한가지는 가로축은 주파수, 세로축은 해당 주파수 성분의 위상을 나타낸 주파수 스펙트럼입니다.

위의 그림에서 두 번째 그래프입니다.

이 스펙트럼은 '각 주파수 성분이 어떤 타이밍(시작점)에서 시작하는가?'를 알려주면서, 파형의 실제 모양을 결정합니다. 모든 주파수 성분들이 어떻게 정렬되어 더해지는지를 지시하여, 뾰족한 부분, 완만한 부분 등 신호의 구체적인 형태를 만들어냅니다.



4) 마무리

이번에는 저번 포스팅까지 수학적으로 어려운 길을 지나신 여러분께 약간의 휴식을 드릴 겸 개념적인 내용으로 채워보았습니다.

이 포스팅에서 여러 이야기가 나왔지만, 최종적으로 정리해보자면 결국

임의의 함수를 근사하기 위해 만들어졌던 푸리에 급수가,
발상의 전환으로
임의의 함수를 푸리에 급수로 나타내었을 때 각 주파수 별로 분해할 수 있게 되었고
이를 바탕으로 임의의 함수를 주파수 별로 분석할 수 있는 툴을 제공해주었다.

입니다.

그리고 이 발상의 전환을 '푸리에 해석'이라고 하죠.

근데 여기서 조금만 더 생각해보면 이 주파수별로 분해된 정보들(진폭, 위상)을 이용해서 거꾸로 '임의의 함수'를 다시 '합성' 할 수도 있지 않을까요?

말 그대로 분해의 역과정이죠!

 

그래서 일반적으로 '푸리에 해석'이라고하면 그 안에 '분해'와 '합성'을 전부 포함하는 의미로 사용합니다.

그러나 가끔 푸리에 '해석'을 '분해'와 동일하게 생각하는 경우엔 '합성'을 '푸리에 역해석'이라고 부르기도 한답니다.

 

푸리에 오디세이는 아직 끝나지 않았고, 앞으로 다룰 내용이 많지만 급수가 끝나는 바로 이 시점에서 '푸리에 해석'을 소개시켜드린건,
사실상 '푸리에 급수'만 가지고도 '해석'이 가능하다는 걸 알려드리고 싶어서였습니다.(말 그대로 '발상의 전환' 즉, '개념'이었기 때문에 사실상 '푸리에 ~~~'인 모든 툴을 가지고 하는 '행위'가 '푸리에 해석'인거죠!)

 

결국 푸리에 해석이라는 개념은 '시간'축에서의 함수를 또다른 하나의 축인 '주파수'축을 추가하여 다른 관점에서 볼 수 있게 만들어준 '패러다임 시프트'였습니다!

 

마지막으로 이 '패러다임 시프트'를 시각적으로 이해하기 좋은 이미지를 하나 첨부하고 이번 포스팅을 마무리하겠습니다.

출처: ieee.org

반응형

+ Recent posts