Главная ->  Вычислительные алгоритмы 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 [ 26 ] 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73

I 1 1 1 1

1 (i)

1 и и

1 о, 1 и

1 ы <о> ш

] и W ш*

1 I (0*

1 (i) ш

1 и и ш>

Посмотрев на эту матрицу, можно убедиться, что строки и столбцы с номерами О, 3 и 6 являются для нас новыми, так как содержат повторяющиеся элементы. Переставим строки и столбцы матрицы так, чтобы эти строки и столбцы оказались в новой матрице первыми, остальные строки расположились в порядке степеней двойки по модулю 9, т. е. в порядке 1, 2, 4, 8, 7, 5, а столбцы - в порядке степеней 2 по модулю 9, т. е. в порядке 1, 5, 7, 8, 4, 2. Тогда вычисление преобразуется к виду

1 1 1

1 I 1

1 1 1

a.] liii ill

1 1 1

.ill

ы 1 [ill

1 ш <0>]

ill m

1 ;> u.i

ill 111 J

1 W 1

ill ill ill

у>

1 Lo.

ш ы ill

1 [а

ill a ill

У>

1 L j

ill ill ill

1 1

r > i.

w Ш ; Cl)*

о. ,0=

Пунктирные разбиения, сделанные в матрице, показывают сформировавшиеся циклические свертки: одну 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 -ы

Тогда

- V}

V, -

Циклическую свертку можно вычислить по правилу

\ Г

cos 9 0

i 1

1 -1

0 J sin в

1 -1

Описанный 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-точечное преобразование Фурье



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 [ 26 ] 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73