Хвилі та аналіз Фур'є — суперпозиція, ДПФ, метелик ШПФ & теорема Найквіста

Усе, що коливається — струни, стовпи повітря, квантові частинки, електричні кола, сигнали — описується однією й тією самою математикою. Ця стаття веде вас від простого гармонічного руху до швидкого перетворення Фур'є, показуючи, як будь-яка форма хвилі розкладається в суму чистих синусоїд.

1. Просте гармонічне коливання та суперпозиція

Маса на пружині задовольняє другий закон Ньютона з відновлювальною силою F = −kx. Розв'язком є синусоїда: x(t) = A cos(ωt + φ) де ω = √(k/m). Коли дві або більше хвиль проходять через одне й те саме середовище одночасно, їхні зміщення додаються: конструктивна інтерференція підсилює, деструктивна — гасить.

2. Дискретне перетворення Фур'є

Маючи N відліків x[n] сигналу, ДПФ обчислює спектр X[k] — амплітуду та фазу кожної частотної складової. Формально:

Визначення ДПФ та обернене перетворення

X[k] = Σ_{n=0}^{N-1} x[n] · e^{−j2πkn/N}   (аналіз)
x[n] = (1/N) Σ_{k=0}^{N-1} X[k] · e^{+j2πkn/N}  (синтез)

Поворотний коефіцієнт (twiddle factor) W_N = e^{−j2π/N} є примітивним коренем N-го степеня з одиниці.
X[k] — комплексне число: X[k] = Re[k] + j·Im[k]
Модуль |X[k]| дає спектральну амплітуду; arg(X[k]) дає фазу.

Пряме обчислення всіх N вихідних значень коштує O(N²) операцій множення-додавання — надто повільно для великих N. Швидке перетворення Фур'є використовує симетрію поворотних коефіцієнтів, щоб звести це до O(N log N).

3. Метелик ШПФ — O(N log N) через розділяй-і-владарюй

Радикс-2 ШПФ Кулі-Тьюкі розбиває N-точкове ДПФ на два (N/2)-точкові ДПФ — одне для парних індексів, інше для непарних:

Кулі-Тьюкі, децимація за часом

X[k] = E[k] + W_N^k · O[k]   (k = 0 … N/2−1)
X[k + N/2] = E[k] − W_N^k · O[k]

де E[k] = ДПФ вибірок з парними індексами {x[0], x[2], …}
      O[k] = ДПФ вибірок з непарними індексами  {x[1], x[3], …}

Глибина рекурсії = log₂ N; робота на рівень = N операцій → усього O(N log₂ N).

// Ітеративне ШПФ Кулі-Тьюкі (на місці, N має бути степенем двійки)
function fft(re, im) {          // re[], im[] — дійсна та уявна частини
  const N = re.length;
  // Перестановка з реверсуванням бітів
  for (let i = 1, j = 0; i < N; i++) {
    let bit = N >> 1;
    for (; j & bit; bit >>= 1) j ^= bit;
    j ^= bit;
    if (i < j) { [re[i], re[j]] = [re[j], re[i]]; [im[i], im[j]] = [im[j], im[i]]; }
  }
  // Проходи метелика
  for (let len = 2; len <= N; len <<= 1) {
    const ang = -2 * Math.PI / len;
    const wRe = Math.cos(ang), wIm = Math.sin(ang);
    for (let i = 0; i < N; i += len) {
      let uRe = 1, uIm = 0;
      for (let j = 0; j < len / 2; j++) {
        const tRe = uRe * re[i+j+len/2] - uIm * im[i+j+len/2];
        const tIm = uRe * im[i+j+len/2] + uIm * re[i+j+len/2];
        re[i+j+len/2] = re[i+j] - tRe;  im[i+j+len/2] = im[i+j] - tIm;
        re[i+j] += tRe;                   im[i+j] += tIm;
        [uRe, uIm] = [uRe*wRe - uIm*wIm, uRe*wIm + uIm*wRe];
      }
    }
  }
}

4. Теорема відліків Найквіста-Шеннона

Сигнал з обмеженою смугою частот та максимальною частотою f_max може бути ідеально відновлений з рівновіддалених відліків тоді й лише тоді, коли частота дискретизації f_s задовольняє:

Критерій Найквіста

f_s ≥ 2 · f_max   (частота Найквіста)

Накладання спектрів (aliasing) виникає, коли f_s < 2 · f_max — високочастотний вміст "згортається" і маскується під нижчу частоту в спектрі.

Відновлення за Шенноном: x(t) = Σ_n x[n] · sinc(f_s · t − n)
Sinc-інтерполяція є ідеальним (з крутим зрізом) фільтром нижніх частот.

5. Стоячі хвилі та резонанс

Коли біжуча хвиля відбивається від фіксованої межі, падаюча та відбита хвилі накладаються, утворюючи стоячу хвилю — вузли, де зміщення завжди дорівнює нулю, та пучності, де воно максимальне. Для струни довжиною L, закріпленої з обох кінців, дозволені резонансні частоти: f_n = n · v / (2L), де n = 1, 2, 3, … а v — швидкість хвилі. Цей гармонічний ряд є фізичною основою всіх струнних інструментів.

Огляд алгоритмів

Гармонічне коливання / суперпозиція Хвильові фронти Гюйгенса ДПФ ШПФ Кулі-Тьюкі Перестановка з реверсуванням бітів Найквіст-Шеннон Sinc-інтерполяція Ряд Фур'є Явище Гіббса z-перетворення Білінійне перетворення Тастіна Модальний аналіз

Чому O(N log N) має значення: Для N = 1 048 576 (2²⁰) відліків ДПФ вимагає ~10¹² операцій, що триває кілька хвилин. ШПФ скорочує це до ~20 мільйонів операцій — завершуючи обчислення за мілісекунди. Саме тому обробка звуку в реальному часі, радари та бездротовий зв'язок OFDM (4G/5G) покладаються на апаратне ШПФ.