НАУЧНЫЙ ЖУРНАЛ
НАУКА И МИРОВОЗЗРЕНИЕ
БЫСТРЫЕ АЛГОРИТМЫ ДИСКРЕТНОГО ПРЕОБРАЗОВАНИЯ ФУРЬЕ
Алмазова Гулшат Мырадовна
Старший преподаватель Туркменский государственный архитектурно-строительный институт г. Ашхабад Туркменистан
Рахманбердийев Шамухаммет Баймухаммедович
Преподаватель Туркменский государственный архитектурно-строительный институт г. Ашхабад Туркменистан
В работе рассматриваются быстрые алгоритмы дискретного преобразования Фурье. Данные алгоритмы позволяют снизить вычислительную сложность обычного дискретного преобразования Фурье.
Введение
Пусть V = (VI, г = 0,..,п-1} обозначает вектор с вещественными или комплексными компонентами.
Определение. Преобразованием Фурье вектора V называется вектор V длины п с комплексными компонентами, задаваемыми равенствами
Преобразование Фурье, записанное в таком виде требует п2 сложений и п2 умножений. Для уменьшения количества арифметических операций рассмотрим быстрые алгоритмы преобразования Фурье. Алгоритм Кули-Тьюки в общем виде
Для построения алгоритма предполагается, что п = П1П2. В выражении для преобразования Фурье произведем следующую замену записи индексов: г = ¡1 + П1/2 11 = 0,..,П1-1 ¡2 = 0,..,П2-1
к = П2^1 + к2 к1 = 0,..,щ-1 к2 = 0,..,П2-1
Подставим новые обозначения в исходную формулу преобразования:
■п-1
где:
Определим двумерные переменные для удобства записи формул:
0)711 = У и 0)112 = Р-
Раскроем скобки в показателе степени и положим внимание, что ^ —О) — 1.
В терминах двумерных переменных формула преобразуется к виду
Также примем во
Дискретное преобразование Фурье по алгоритму Кули-Тьюки требует не более п*(п + П2 + 1) комплексных умножений и п*(п + П2 - 2) комплексных сложений. В общем случае количество умножений и сложений можно записать следующим образом: Мс(п) = щМс(и2) + И2Мс(т) + п
Ас(п) = щЛс(П2) + П2Ас(П1)
Так, например, для п = 1000 (учитывая, что Мс(2) = 0, Мс(5) = 10): Мс(1000) = 2Мс(500) + 500Мс(2) + 1000 = 2Мс(500) + 1000 = 11000
Таким образом, алгоритм Кули-Тьюки дает выигрыш по количеству умножений в 1000000/11000 ~ 91 раз.
Визуально алгоритм выглядит следующим образом: значения вектора V заносятся по
порядку в таблицу щ на П2 слева направо, сверху вниз. Вычисления состоят из П2-точечного
Д11Ф каждого столбца, поэлементного умножения всех элементов таблицы соответственно / 1 ^ 1 ^ 2
на и «1-точечного Д11Ф для каждой строки.
Алгоритм Кули-Тьюки в случае, когда п = 2т
Если т = 2, а т = 2111"1, то алгоритм называют алгоритмом Кули-Тьюки по основанию два с
прореживанием по времени. Используя тот факт, что $ ^ уравнения,
задающие БПФ, можно записать в следующем виде:
к = 0,..,п/2 - 1
Если щ = 2т-1, а п2 = 2, то алгоритм называют алгоритмом Кули-Тьюки по основанию два с прореживанием по частоте. Уравнения БПФ в этом случае преобразуются к виду:
Число Мс(п) комплексных умножений п-точечного БПФ удовлетворяет уравнению Мс(п) = 2Мс(п/2) + п/2, а число Ас(п) комплексных сложений удовлетворяет уравнению Ас(п) = 2Ас(п/2) + п. Решения этих уравнений даются равенствами Мс(п) = (п/2) 1о§2п, Ас(п) = п 1о§2п
Алгоритм Гуда-Томаса
Для применения алгоритма Гуда-Томаса числа п1 и п2 должны быть взаимно простыми. В двумерную таблицу входные данные выписываются, начиная с верхнего левого угла, вдоль расширенной диагонали. Входные индексы задаются по правилу
Это правило представляет собой отображение индекса i на расширенную диагональ двумерной таблицы, элементы которой занумерованы парами индексов (ii, i2). Из теории чисел известно, что для чисел ni и П2 существуют такие целые числа Ni и N2, что Nini + Nn = НОД(п1, П2). Если ni и П2 взаимно просты, то, согласно китайской теореме об остатках
i = iiNn + iNini (mod n).
Пусть ki = N2k (mod ni), k2 = Nik (mod n2). Тогда выходные индексы вычисляются по правилу k = n2ki + nik2 (mod n).
В этих новых индексных обозначениях формула преобразуется к виду
Пд -1 п± -1
ii = i (mod ni),
i2 = i (mod n2)
^ W 3! "«аjvyz ■'"a*V
(i , JV2n2+ i г JVhUh Xn2 к+Пч к 2)
i-iN^n^+UN, п.
i2=0 i±=0
Раскроем скобки в показателе степени
И1 - 1 - 1
~ 1 - 1
I, -о и=о
¿1= О ¿я=0
Если длина п преобразования раскладывается в произведение простых множителей т, то описанная форма БПФ-алгоритма требует примерно ^ 2 умножений и столько же сложений. Например, для п = 1000 = 2*2*2*5*5*5 число умножений Мс(1000) = 1000*(2+2+2+5+5+5) = 21000, что дает выигрыш по количеству операций умножения в 1000000/21000 ~ 48 раз. Заключение
В работе были рассмотрены два наиболее известных алгоритма дискретного преобразования Фурье, а также рассчитаны выигрыши по количеству умножений данных алгоритмов по сравнению с обычным алгоритмом преобразования Фурье.