Алгоритм быстрого преобразования Фурье (БПФ) - это оптимизированный по скорости способ вычисления ДПФ. Основная идея заключается в двух пунктах.
Применяют либо "прореживание по времени" (когда в первую сумму попадают слагаемые
с четными номерами, а во вторую - с нечетными), либо "прореживание по частоте"
(когда в первую сумму попадают первые
Определим еще две последовательности:
x[odd]n = x2n+1,
n = 0, 1,..., N/2-1
Пусть к этим последовательностям применены ДПФ и получены результаты в виде
двух новых последовательностей
Утверждается, что элементы последовательности
(7).
Начинаем от формулы (2), в которую подставляем равенства из (6):
(8)
Теперь обратим внимание на то, что:
(9)
Подставляя (9) в (8) получаем:
(10)
Сравним с формулами для
(11)
Подставляя (11) в (10) получим первую часть формулы (7):
Это будет верно при
Согласно теореме 1:
(12)
Подставим (12) в (10), и заменим
по теореме 2:
(13)
Для
(14)
Подставляем (14) в (13):
Эта формула верна для
Формула (7) позволяет сократить число умножений вдвое (не считая умножений
при вычислении
ДПФ можно вычислить также по формуле:
(15)
Согласно второй части формулы (7), получим:
Это доказывает второе равенство в утверждении теоремы, а первое уже доказано в теореме 3.
Также по этой теореме видно, что отпадает необходимость хранить вычисленные
можно использовать для
вычисления двух элементов последовательности
На этом шаге будет выполнено
Рассмотрим БПФ для разных
В вырожденном случае, когда слагаемое всего одно (
,
Поскольку в данном случае
Для
(откуда берутся
Для
Отсюда видно, что если элементы исходной последовательности были
действительными, то при увеличении
Поясним, откуда получились
Была исходная последовательность:
|
Она была разделена на две - четную (even) и нечетную (odd), в каждой по
even | odd |
Эти последовательности тоже были поделены на последовательности по
even | odd | ||||||||
|
|
Как выше пояснялось, преобразование над одним числом дает то же самое число. То есть, получается то же самое,
но это уже как бы преобразованные последовательности по
even | odd |
|
|
Вот эти две последовательности и дают нам искомые переменные. Ниже они показаны в тех же ячейках таблицы:
even | odd |
|
|
Для
Принцип вычисления тот же самый: разбиение на последовательности по
Обратите внимание, что на предыдущем шаге мы использовали степени
Тогда формулы для
Подведем итог:
(16)