Обновления
Хрущовки
Архитектура Румынии
Венецианское Биеннале
Столица Грац
Дом над водопадом
Защита зданий от атмосферных осадков
Краковские тенденции
Легендарный город Севастополь
Новый Париж Миттерана
Парадоксы Советской архитектуры
Реконструкция города Фрунзе
Реконструкция столицы Узбекистана
Софиевка - природа и искусство
Строительство по американски
Строительтво в Чикаго
Тектоника здания
Австрийская архитектура
Постмодернизм в Польше
Промышленное строительство
Строительство в Японии
Далее
|
Главная -> Вычислительные алгоритмы
Посмотрев на эту матрицу, можно убедиться, что строки и столбцы с номерами О, 3 и 6 являются для нас новыми, так как содержат повторяющиеся элементы. Переставим строки и столбцы матрицы так, чтобы эти строки и столбцы оказались в новой матрице первыми, остальные строки расположились в порядке степеней двойки по модулю 9, т. е. в порядке 1, 2, 4, 8, 7, 5, а столбцы - в порядке степеней 2 по модулю 9, т. е. в порядке 1, 5, 7, 8, 4, 2. Тогда вычисление преобразуется к виду
Пунктирные разбиения, сделанные в матрице, показывают сформировавшиеся циклические свертки: одну 6-точечную циклическую свертку и шесть 2-точечных циклических сверток. Те 2-точечные свертки, которые расположены во второй и третьей строках матрицы, содержат повторяющиеся вычисления, что позволяет переписать входящие в эти две строки вычисления в виде и, + От Us + и. . Так как п = -1, то отсюда сразу вытекают первые два утверждения теоремы. Для доказательства утверждения (iii) рассмотрим многочлен g (х) = g (х) (mod х - 1) --= Е (0 х* (mod х - 1). Коэффициент gi, равен сумме тех коэффициентов многочлена g (х), индекс к которых кратен числу Ь/р. Таких членов имеется р штук., и Таким образом, подходящим способом выполненные перестановки и разбиения входных данных и матрицы преобразования позволили представить рассматриваемое преобразование Фурье в виде одной 6-точечной циклической свертки и двух 2-точечных циклических сверток. Можно было бы ожидать, что так организованное вычисление потребует 12 комплексных умножений. ДЭднако, как показывает. следующая теорема, происходят две вещи: 1. Все умножения являются чисто вещественными или чисто мнимыми, так что 12 комплексных умножений превращаются в 12 вещественных умножений. 2. Число необходимых умножений уменьшается до 10, так как два коэффициента оказываются равными нулю. На самом деле мы выпишем алгоритм с 11 умножениями. Одно умножение на единицу необходимо добавить для того, чтобы строку с номером нуль записать в алгоритме в таком же виде, как и остальные строки. Теорема 4.6.2. Пусть т > 1 целое, а р - простое нечетное число. Пусть b = [р - 1) р ~. Пусть g (х) - обобщенный мно-ь-\ гонлен Рейдера, g(x) = 2 u) x , где а-корень из единицы стекло пени и я - целое число порядка b относительно умножения по модулю р . Тогда: (1) Коз1рфициенты многочлена g (х) (mod х - 1) являются вещественными числами; (ii) Коэффициенты многочлена g (х) (mod х + 1) являются мнимыми числами. (iii) Коэффициенты многочлена g (х) (mod х - 1) равны нулю. Доказательство. Доказательство первых двух утверждений теоремы аналогично доказательству теоремы 4.6.1. Так как порядок числа л равен Ь, а b четно, то = 1 и п = -1. Тогда коэффициенты многочлена g (х) (mod х ± 1) равны gi, = ш Ч= преобразованию Фурье, так что некоторые из поправочцЬ1х членов могут быть выражены в виде свертки малой длины. Построение 9-точечного БПФ-алгоритма Винограда проводится следующим образом. Выпишем матричное уравнение В общем случае коэффициент gr дается равенством gr = Ii м + , Г = О.....(Ь/р) - 1. Требуется доказать, что gr равен нулю для всех таких г. Перепишем выражение для g, в виде Так как со опять является корнем степени р из единицы, то утверждение достаточно доказать только для г, равного нулю, т. е. для go = S ю , где а = к представляет собой элемент порядка р. Последнее равенство можно переписать в виде о = tos{o>T. где га является корнем степени р из единицы. Следовательно, git = О, и доказательство теоремы закончено. □ Таким образом, мы умеем строить БПФ-алгоритм Винограда малых длин, равных степени нечетного простого числа. Матрица преобразования Фурье размера р X р разбивается на - p )-тoчeчнyю циклическую свертку и р + 1 (р - 1)-точечных циклических сверток. Согласно теореме 4.6.2, все эти свертки вычисляются с помощью алгоритма Винограда для цикли-ческих сверток, содержащего только чисто вещественные и чисто мнимые умножения. Длина преобразования равна степени двойки. Преобразование Фурье, длина которого равна степени двойки, приходится рассматривать отдельно, так как целые числа, не превосходящие 2 , взаимно простые с 2, не образуют относительно операции умножения по модулю 2 циклической группы (за исключением случаев m = 1 и m = 2). Это множество чисел образует группу, изоморфную группе Z2 X Zgm-2. По этой причине конструкция БПФ-алгоритма Винограда длины 2 ,содержит на один шаг больше. Прежде всего, отберем 2 * строк и столбцов матрицы с нечетными индексами, подобно тому как это было сделано в разд. 4.5. Это подмножество элементов матрицы будет переупорядочено теперь не в одну, а в четыре циклические свертки. Строки и столбцы с четными индексами можно представить в виде преобразования Фурье длины 2 ~ несколькими способами.. Эта часть вычислений представляет собой 2 ~-точечное преобразование Фурье. ft =0.....n/2 - 1. Это 2 ~-точечное преобразование Фурье может быть вычислено уже известным алгоритмом. Компоненты с нечетными значениями индекса к можно записать в виде п!2-\ nJ2-l Так как m является корнем из единицы степени 2 - то небольшие вычисления позволяют первую сумму переписать в виде преобразования Фурье длины 2 -. Таким образом, V2k-+1.= (0> 2/- - е> 02Г+п ) О) + . /=0 л/2-1 Е гс-цш /-=0 {2C-I-1) (2i--l) , ft ==0, ... , n/2 - 1, где первая сумма подлежит вычислению только для первых п/4 значений индекса ft, ft = О, /4 - 1, так как потом эти значения суммы повторяются. Если входная последовательность данных является вещественной, то эта часть вычислений состоит из (п/2) - 6 вещественных умножений и (/г/4)-точечного преобразования Фурье, а если входная последовательность данных является комплексной, то к (/г/4)-точечному преобразованию Фурье добавляется (3/4) п - 8 вещественных умножений. Вторая сумма в уравнениях для V2k-+i может быть вычислена рассмотренным в предыдущем .разделе обобщенным алгоритмом Рейдера. Он сводится к вычислению двух циклических сверток длины 2 -2. Следующая теорема показывает, что если эти циклические свертки вычисляются на основании китайской теоремы об остатках, то часть умножений является умножением на нуль и может быть выброшена. Теорема 4.6.3. Пусть т > 2 есть целое число и g (х, у) - обобщенный двумерный многочлен Рейдера вида g{x, 1/)= S Е /=0 Г-0 где ш является корнем степени 2 из единицы. Тогда Разбиение в некотором смысле аналогично одному шагу алгоритма Кули-Тьюки по основанию 2. Предположим, что мы уже умеем строить г--точечное быстрое преобразование Фурье. Для заданного Vt = S А = 0, ...,п- 1, компоненты с четными значениями индекса к можно записать в виде /./2-1 1 1 1 ш 1 ы I 1 и U - Уд) ы\иг - Ue) Вторую часть сначала выпишем в следующем виде: W w Теперь преобразуем эти равенства несколько иначе, чем в общем случае, а именно, воспользуемся условием м* = - 1 и перепишем уравнения в виде ш -ш ш -ы -ш о) -ш ill о) -to w -ы Тогда
Циклическую свертку можно вычислить по правилу
Описанный 8-точечный БПФ-алгоритм Винограда содержит всего два нетривиальных умножения; кроме того, имеется шесть тривиальных умножений. Если длина преобразования равна большой степени двух, то выписывать все необходимые для вычисления по БПФ-алго-ригму Винограда уравнения становится скучно. Лучше представить этот алгоритм в рекуррентном виде. Мы отложим такое представление до гл. 10. Б разд. 10.4 будет описан эффективный БПФ-алгоритм по основалию два, построенный на идее Винограда, выписанной в рекуррентной форме. Задачи 4.1. Пусть задано устройство вычисления п-точечного комплексного преобра-эования Фурье; описать, как это устройство можно использовать для одновременного вычисления двух вещественных п-точечных преобразований Фурье. 4.2. Пусть задано устройство вычисления л-точечного преобразовання Фурье; описать, как это устройство можно использовать для вычисления п-точечного обратного преобразования Фурье. 4.3. Приведите блок-схему устройства вычисления 5-точечного преобразования Фурье, основанного на чирн-алгоритме Блюстейна. 4.4. а. Доказать, что 2 является примитивным элементом поля GF (11). б. Используя алгоритм Рейдера, записать 11-точечное преобразование Фурье над полем комплексных чисел S (В t-i в виде свертки (i) Коэффициенты многочлена g (х, у) (mod у - 1) являются вещественными числами. (ii) Коэффициенты Многочлена g {х, у) (mod -j- 1) являются мнимыми числами, (iii) Коэффициенты многочлена g (х, у) (mod х - 1) равны нулю. Доказательство аналогично доказательству теоремы 4.6.2. □ Согласно первой части теоремы циклическая свертка по модулю х * - 1 представляет собой две вещественные циклические свертки (точнее, одну чисто мнимую и одну чисто вещественную). Вторая часть теоремы утверждает, что вычисление циклической свертки сводится только к вычислениям, связанным с модулем - 1 так как остальные вычеты обращаются в нуль. В силу неприводимости многочлена х + 1 на эти вычисления требуется 2 (п/8) - вещественных умножений. Теперь мы получили разбиение преобразовання Фурье на следующие фрагменты: (1) 2 --точечное преобразование Фурье; (2) г--точечное преобразование Фурье, которому предшествует 2 - - 1 комплексных умножений; (3) два произведения многочленов по модулю неприводимого многочлена х + 1: 8-точечное преобразование Фурье разбивается на две части, 4-точечное преобразование Фурье
|