Toolyard

푸리에 급수 쉽게 이해하기: 사인파로 파동 만들기

기본 생각

주기 T로 반복되는 신호는 모두 기본 주파수 f = 1 ÷ T의 정수배 주파수를 가진 사인파와 코사인파의 합으로 쓸 수 있습니다:

f(t) = a0 ÷ 2 + Σ (an cos nωt + bn sin nωt), ω = 2πf

각 항이 배음(고조파)으로, n = 1이 기본파, n = 2가 두 배 주파수의 제2배음이며, 그렇게 이어집니다. 계수는 신호에 각 사인이나 코사인을 곱해 한 주기 동안 평균하면 나옵니다: bn = (2 ÷ T) ∫ f(t) sin(nωt) dt. 조제프 푸리에가 1807년 열전도 방정식을 풀기 위해 이 생각을 내놓았고, 지금은 음성과 이미지 압축, 무선 통신, 분광학, 진동하는 모든 것의 분석의 바탕이 되었습니다.

세 가지 표준 파형

−1과 +1 사이를 오가는 기함수 파형(사인만 필요)에서는 다음과 같습니다:

  • 사각파: n이 홀수일 때 bn = 4 ÷ (nπ), 짝수일 때 0. 진폭은 1.273, 0.424, 0.255, 0.182, …
  • 톱니파: 모든 n에서 bn = −2 ÷ (nπ)(올라가는 경사). 모든 배음이 있고 1 ÷ n으로 줄어듭니다.
  • 삼각파: n이 홀수일 때 bn = 8(−1)(n−1)/2 ÷ (n²π²). 1 ÷ n²으로 훨씬 빨리 줄어듭니다.

그 뒤에 있는 규칙: 점프가 있는 신호의 계수는 1 ÷ n처럼, 연속이지만 모서리가 있는 신호는 1 ÷ n²처럼 줄고, 더 매끄러우면 더 빨리 줄어듭니다. 매끄러운 신호는 항이 적게, 날카로운 신호는 항이 많이 필요합니다.

계산 예

사각파의 가운데 ωt = π ÷ 2(파형 값 +1)에서 0이 아닌 처음 세 항을 더합니다:

  1. sin(π ÷ 2) = 1, sin(3π ÷ 2) = −1, sin(5π ÷ 2) = 1.
  2. 1.273 × 1 + 0.424 × (−1) + 0.255 × 1 = 1.104.

다섯 항이면 1.273 − 0.424 + 0.255 − 0.182 + 0.141 = 1.063입니다. 부분합은 1 주위를 흔들리며 천천히 다가가는데, 1 ÷ n 계수에서 예상되는 그대로입니다.

깁스 현상

점프 근처에서는 부분합이 지나치게 올라가며, 항을 더해도 이 오버슈트는 줄지 않습니다. 양쪽 모두 점프 크기의 약 8.95%로 다가가서, −1에서 +1로 뛰는(점프 크기 2) 사각파는 배음을 몇 개 쓰든 약 1.18까지 올라갑니다. 물결은 폭이 좁아지며 점프 쪽으로 몰리므로 한 주기 평균 오차는 0으로 가지만, 최대 오차는 0으로 가지 않습니다. 이는 실제로도 중요해서, 높은 주파수를 잘라 내면(저역 통과 필터나 JPEG 압축) 날카로운 가장자리 옆에 링잉이 생깁니다.

전력: 파스발 정리

한 주기 동안 f2의 평균은 배음들의 전력의 합과 같습니다: 평균(f2) = Σ bn2 ÷ 2(사인만 있는 급수의 경우). 사각파에서는 평균(f2) = 1이고, 기본파 하나가 (4 ÷ π)2 ÷ 2 = 81%를, 처음 다섯 홀수 배음이 96%를 차지합니다. 사각파가 기본파의 음높이로 들리면서 밝고 윙윙거리는 음색을 내는 것은 이 때문이며, 나머지 몇 %를 위쪽 배음들이 맡습니다.

주전원과 이산 푸리에 변환

각 항 c einωt은 반지름 |c|인 원 위를 한 주기에 n바퀴 도는 점입니다. 항들을 끝과 끝을 이어 더하면, 저마다 자기 속도로 도는 원의 사슬이 됩니다. 프톨레마이오스가 행성에 쓴 것과 같은 주전원입니다. 평면 위의 닫힌 윤곽이라면 그 점들을 복소수 z = x + iy로 쓰고, 고른 간격으로 M개를 뽑아 이산 푸리에 변환을 계산합니다:

ck = (1 ÷ M) Σj zj e−2πijk/M

ck 하나하나가 원 하나이며, M개를 모두 쓰면 사슬이 윤곽을 정확히 따라가고, 큰 것 몇 개만 쓰면 매끄럽게 다듬은 윤곽을 그립니다. 모서리와 세부는 작고 빠른 원들에 담겨 있습니다.

시뮬레이션 사용법

푸리에 급수 시뮬레이터에서 파형과 항의 수를 고릅니다. 원의 사슬이 돌고, 펜의 높이가 부분합이 되며, 곡선이 초록색의 정확한 파형 위로 오른쪽으로 흘러갑니다. 그래프는 스펙트럼입니다. 이렇게 해 보세요:

  • 사각파로 1항, 이어서 2, 5, 20, 100항: 점프에서의 오버슈트는 9% 가까이 그대로이고 물결의 폭만 좁아집니다.
  • 삼각파를 3항으로: 계수가 1 ÷ n²으로 줄어서 벌써 아주 가깝습니다.
  • 소리에 체크하고 사각파에 항을 더하면, 음높이는 그대로인데 음색이 플루트 같은 순음에서 리드 악기 같은 윙윙거림으로 바뀝니다.
  • 직접 도형을 그린 뒤 항의 수를 3이나 4로 줄이면, 그림이 녹아 타원 비슷한 고리가 됩니다.

모형의 가정

  • 완전히 주기적인 이상적 파형으로 진폭 1, 계수는 정확합니다. 이 파형들에 대해서는 아무것도 측정하거나 샘플링하지 않습니다.
  • 세 파형은 사인만의 급수로, 기함수가 되도록 골랐습니다. 이동한 파형에는 코사인도 필요합니다.
  • 도형은 변환 전에 윤곽을 따라 고른 간격의 256점으로 다시 샘플링하고, 마지막 점을 첫 점에 이어 닫습니다.
  • 소리는 같은 계수로 브라우저의 Web Audio 주기파를 통해 만들며, 음량은 정규화됩니다. 설정한 음높이로 재생되고, 약 20 kHz 위의 배음은 들리지 않습니다.

경계 사례

  • 한 항만: 모든 파형이 진폭 b1인 순수한 사인파가 됩니다. 사각파는 4 ÷ π = 1.27로, 파형 자체보다 높습니다.
  • 점프 위치 바로 그곳에서 사각파의 부분합은 모두 정확히 0, 즉 양쪽의 평균입니다.
  • 스스로 교차하거나 끊긴 그림도 닫힌 고리 하나로 다루며, 점들이 만드는 경로가 어떻든 변환이 그대로 맞춥니다.
  • 소리의 아주 높은 배음: 880 Hz에서 제100배음은 88 kHz로, 가청 범위와 오디오 장치의 재생 범위를 훨씬 넘으므로 브라우저가 버립니다.

모형이 맞지 않게 되는 경우

  • 반복되지 않는 신호에는 푸리에 급수가 없고, 주파수가 연속으로 퍼진 푸리에 변환이 필요합니다. 짧은 소리는 스펙트럼이 퍼져 있어서 딸깍 소리에는 음높이가 없습니다.
  • 샘플링된 데이터. 유한한 속도로 측정한 실제 신호는 그 속도의 절반(나이퀴스트 한계)보다 높은 주파수를 나타낼 수 없고, 더 높은 성분은 가짜 낮은 주파수로 접혀 들어옵니다(에일리어싱).
  • 실제 악기는 이상적인 파형이 아닙니다. 배음이 정확한 정수배가 아니고(피아노 줄은 뻣뻣합니다), 음이 이어지는 동안 변하며, 소리의 첫머리에 개성의 많은 부분이 담겨 있습니다. 악기 튜너로 실제 음을 읽어 보면 알 수 있습니다.
  • 병적인 함수. 어떤 점에서 푸리에 급수가 발산하는 연속 함수도 있지만, 그리거나 녹음한 것에서는 실제로 전혀 문제가 되지 않습니다.

관련 도구

정상파 시뮬레이터는 줄이나 관이 가질 수 있는 배음을 보여 주고, 톤 생성기는 사인파·사각파·톱니파·삼각파를 원하는 주파수로 재생해 귀로 비교하게 해 줍니다.

이 가이드에서 쓰는 도구

다른 가이드