Брейсуэлл Р. - Преобразование Хартли (теория и приложения) (1044117), страница 26
Текст из файла (страница 26)
Обычно может применяться последовательная запись отдельных операторов в виде следующих друг за другом строк. Однако удобство этого символа состоит в использовании условных операторов в естественной форме без скобок и повторения: 999 1Г В ~ А ТНЕХ С = 20« 13 = 1)/1О.
Если условие В ) А не выполняется, то, естественно, С не полагается равным 2, однако также и О не приводится к 1/10, нужно непосредственно перейти к выполнению процедуры, реализуемой в строке со следуюшим порядковым номером. Используются следующие обозначения: А... е„АО...29 — для переменных, А( )... е(9)( ) и А(,)... е9(,) — для переменных массивов, А8...е.9$ — для переменных последовательностей.
Массивы последовательностей А8( ) в данных программах отсутствуют. Так как интервалы в языке БЕЙСИК не учитываются, блок циклов ГОК вЂ” ХЕХТ используется только для наглядности представления и нет необходимости сохранять его при переписывании. Функция ЧА).8(Х)-это выражение для последовательности, соответствующее численному значению переменной Х. Введение в программы ГНТВАБ — программа для алгоритма быстрого преобразования Хартли, обеспечиваюшая определение дискретного преобразования Фурье и вывод на печать комплексного результата наряду с ДПХ, из которого получается ДПФ. Она приводится в связи с обсуждением в тексте различных подпрограмм. 132 ГНТЯЗ — частный быстрый алгоритм, представляемый в форме подпрограммы, которая может быть включена в программу общего назначения.
Этот алгоритм позволяет определить ДПХ вещественной последовательности. Данная программа предо~валена в сжатой форме и быстрее осуществляет выполнение ее составных частей, чем путем перехода к подпрограммам в пределах большой подпрограммы. Однако нумерация ее строк продолжает нумерацию строк программы ГНТВАБ, так что при необходимости может быть восстановлена вся структура алгоритма.
Для тригонометрических функций и для операции перестановки используются более сложив>е методы, что увеличивает время счета. Встроенный алгоритм снижает требования к памяти ЭВМ и позволяет получить результаты 'для больших )Ч. В общем случае применимы методы, используемые для табулированных функций и базирующиеся на работе [О. Вииетал. Сопиеггйоп о( ГГТ'з го Гаы Нагг!еу Тгапз(оппз, 81АМ Ю. Бей Бгапвь Сошр., 1985 (Переход от БПФ к быстрому преобразованию Хартли)1.
Метод перестановки описан Эвансом. Соответствующие программы на языке ФОРТРАН можно найти в работе гУ. И>алд. Ганг А)йопЗЬп>з (ог г)>е ОЫсгеге % Тгапв(опп апб (ог где Огзсгеге Гонпег Тгапз(опп, 1ЕЕЕ Тгапз. Асопзйсз, БреесЬ апд Яйпа1 Ргосезз(пй, го1. Аэбр — 32, рр. 803 — 816, 1984 (Быстрые алгоритмы для дискретного преобразования Винограда и дискретного преобразования Фурье)1 и (в том числе для основания 4) в статье (Н.
К Богелзел, Р. Е. 2олез, 5. С. Виггиз, М. Т. Найетил. Оп Сошри!шй г)>е 1)1зсгеге Нагг!еу Тгапз(опп, 1ЕЕЕ Тгана Асопзбсз, БреесЬ апд 888па1 Ргосезз(пн, 1985 (О вычислении дискретного преобразования Хартли) в печати). ГНТРБ вычисляет спектр мошности вещественной последовательности с помощью ДПХ и иллюстрирует использование ГНТЯ)В в качестве подпрограммы, входящей в частную программу. Дается подпрограмма для сглаживания спектров мопшости.
Спектр мощности получается без использования преобразования Фурье. СОХЧ вычисляет обычную свертку); «2;. Для вычисления обычной взаимной корреляционной функции последовательностей>> ну, выполняется реверсирование 1, . ССОХЧ вычисляет циклическую свертку 2>0«г",. Для циклической взаимной корреляционной функции осуществляется реверсирование Л. МАТСОХ выполняет в компактной форме процедуру свертки путем умножения матриц. АСГ реализует вычисление корреляционной функции.
САСГ реализует вычисление циклической корреляционной функции. 1СОХЧ осушествляет обращение свертки. КЕС1Р инвертирует вещественную последовательность для получения обратной ее последовательности, которая при выполнении свертки с заданной последовательностью дает (Ц.
1СОКК осуществляет обращение корреляционной функции, что дает исходную последовательность при заданной корреляционной ф)>нкцни. 1Зз 4000 ! Подпрограмма'Перестановка 4010 Л, 1 -1 4020 1 1 + 1 42 Т Р 4озо т т - 1 43 1 2 - м(т) 4040 17 Л > -1 ТНЕИ СОТО 4030 4060 Л Л + М(Т + 1) боео ГГ 1 < 1 тнеи сото 4озо бото т Ио,1 + 1) 4080 Г(0,1 + 1) Г(0.1 + 1) 4090 Г(0,3 + 1) Т 41оо 17 1 < и - з тнем сота 4озо 4110 ВЕТОВИ таблицы (34 (35 ГНТСО)ч(тг' выполняет свертку при операции умножения в области преобразования. ГНТАСГ вычисляет корреляционную функцию при операции умножения в области преобразования.
ГНТКХ4 является вариантом ДПХ для основания 4. ГАБТРЕКМ()ТЕ реализует перестановку элементов последовательности с числом элементов А( с помощью программы с меньшим быстродействием, осуществляющей перестановку элементов последовательности (у(а ( (((, где (((о — число ячеек вдоль одной оси координат, а также шаг решетки в ячею(е. ГНТВАКГОК вЂ” версия на языке ФОРТРАН программы РИТВА, написанной на БЕЙСИКе. Переход от программ, написанных на языке БЕЙСИК, к программам на языке ФОРТРАН, оказывается достаточно простым. Этот пример — своего рода Розеттский камень. Принципиальное различие для 1 < Р состоит в замене циклов 1)О соответствующими циклами ГОК вЂ” (ч(ЕХТ и в необычной фразеологии языка, например (1.1.Т.Р).
ГНТГОК.ГОК вЂ” версия программы ГНТЯЗВ на языке ФОРТРАН, написанная в качестве подпрограммы, входя(цей в главную программу. Программа РИТВА 10 ! «ЕитВДВ н 20 01И Р(в,п) ! э~апы выполнання п(нобреэовання Хартлн 30 01М В((я+ 1), Х(1п+ П ! преобраэованневусьа 40 01М 8(1п), С((п) ! 91в и сеа БО Р - р 60 И4 2гч(Р - 2) Е И2 М4 + М4 43 И И2 + И2 43 И7 И" 143Р7 Р-1 70 ОЕР Ри Г(1) 1 + 1 ! Выборочная фумкцмя 100 ТО Т1ИЕ ! Включитьтанмер 110 СОБОВ 1000 ! Ввестн данные 120 СОБУВ 2000 ! попенять стеленн,мслв 2 130 СОБУВ ЗООО ! Папучнтье( ! н В( ( 140 1Г Р > 1 ТНЕИ СОБУВ 4000 ! Вьнюлннтьперестамовку 1БО СОБУВ БООО ! Этапы ! н2 160 СОБОВ ЕООО ! Э З,д,... 170 СОБСВ 7000 ! Получнтьдпе 180 ТО Т1ИЕ " ТО ! Остановить таймер 190 СОБУБ 8000 ! Вывестн реэультаты на пе мть 200 ЕМО 1000 ! Подпрограмма "Ввод данммх" 1010 ГОВ 1 0 ТО М7 Э И0.1), Р(1.1) РМИ1) О ИЕХТ 1 1озо ВЕТОВИ 2000 ! Подпрограыма "Полученне степеней чнспа 2" 2О1О 1 1 43 И(О) 1 43 М(1) 2 2озо ИП + 1) - м(1) + и(1) 2030 1 1 + 1 2040 1Г 1 < Р ТНЕМ СОТО 2020 2060 ВЕТХИМ 3000 ! Подпрограмма "Палученнв ачнусавн «осннусов" 3010 и 2еР1г'И 6 А 0 3020 РОВ 1 1 ТО И4 Ф А А + М О 8(1) 81И(А) 43 С(1) СОБ(А) Ф МЕХТ 1 3030 ВЕТОВМ 6000 ! Подпрограмме "Этапы 1 н 2" 6010 ! Получить Е(1, П.
двухэлементные дПХ 6020 ГОВ 1 0 ТО И - 2 ВТЕР 2 БОЗО Г(1.1) " И0.1) + Р(0.1 + 1) Б040 Р(1,1 + 1) И0.1) - Г(0,1 + 1) БОБО ИЕХТ 1 Б060 1Г Р 1 ТНЕМ й 1 43 СОТО 170 ! Выполнено Б070 ! Получить Е(2, П, четырехэлемемтные дПХ с нспольэованнем 6080 Е 2 6090 ГОВ 1 0 ТО И - 4 ВТЕР 4 Б100 И2,1) Г(1,1) + И1.1 + 2) Б110 Г(2,1 + 1) Г(1.1 + 1) + Р(1.1 + 3) Б120 Г(2,1 + 2) И1,1) - И1,1 + 2) 6130 Г(2,1 + 3) И1.1 + 1) Р(1 ° 1 + 3) 6140 МЕХТ 1 Б160 17 Р 2 ТНЕМ СОТО 170 ! Выполнено Б160 ВЕТОВМ 6000, ! подпрограмма "этапы 2,4, 6010 П Р7 6020 Б 4 6030 ГОВ 1 " 2 Еа Р7 ЕОАО 82 - Б + 8 БОБО О и - 1 6060 80 К(О - 1) 6070 РОВ С 0 ТО М7 ВТЕР 82 6080 1 С 6090 О 1 + 8 Е1ОО 70. + 1,1) Г(Ь.1) + Г(Ь,О) 6110 Иь + 1.0) Г(ь.1) - Р(ь,о) 6120 и Π— 1 6130 ГОВ Л 80 ТО М4 БТЕР 80 6140 1 1 + 1 61БО О 1+8 8160 Е И+8 6170 Х Г(1,Е)ас(3)-Г(Е.О)ев(1) 6180 т Г(1,0)ес(3) + Г(!.,Е)вв(3) 6190 Г(Ь + 1,1) Г(Ь,1) + т 6200 Г(ь + 1,0) Г(1,1) - т В21О .
Р(Ь + 1,К) - Р(Ь.К) - Х 622О Р(Ь + 1.К) - Р(Ь,К) + Х ВРЗО К - К - 1 6240 6260 Е К + 8 взво иехт С В27О 3 - 32 вззо иехт ь взоо Вктоии 7000 ! Подппогпамма "Пол)некие Дпф " 7010 В(0) Р(Ь,О) + Р(Ь,О) Е Х(0) 0 Тозо Рои 1 1 то 32 7030 В' Р(Ь,И вЂ” 1) 7040 В(1) Р(Ь,1) + В ТОБО Х(1) -Р(Ь.1) + В 7060 ИЕХТ 1 7070 ВЕТОВИ Резупыаты вывода г,и 1(г) на печать дпя п=з, р=з Н(и) В(и) + )Х(и) 4.6 4.3 -1.707 -.Б +) 1.207 -1 -.Б +3 .Б -.707 -.Б +) .207 -.Б -.Б -.29З -.Б -) .2О7 0 -.Б -) .Б .707 -.Б -) 1.207 0 1 2 3 4 Б В 7 8000 т Подпрограмма "Вывод резулыатов на печать" 800Б 1Р Р > 1 ТНЕИ СОБОВ 1000 ! Повтооноесчитываннеданных 8010 СЬЕАВ чвРВ1ИТ (ЭРВТИТ нг,и 1(г) Н(и) В(и) + )Х(н)н 43 РВ1ИТ 8020 3$ 6030 РОВ 1 0 ТО 37 8040 Ю И13(1,3 - 1) т Отобразить 8060 Р 1ИТ(.Б + 1000*7(0,1))/1000 ! Округлить 8060 Н 1ИТ(.Б + 1000/Иар(Ь.1))/1000 8070 Н 1ИТ(.Б + 1000ьН(3)/И)/2000 43 Х 1ИТ(.Б + 1000ех(Л) /И) /2ООО*БСИ(32 - 1) 8080 3$ " +3 " В УАЬВ (АВБ(Х)) Ф 1Р БСИ(Х) -1 ТНЕИ 3$ " ") " В ЧАЬ$ (АББ(Х)) 8090 17 Х 0 ТНЕИ 2$ нн 8100 РВ1ИТ 1; ТАВ(6); Р; ТАВ(12): Н; ТАВ(21); В; 3$ 8110 ИЕХТ 1 8120 РВ1ИТ Ф РВ1ИТ " И " В УИ4 (И) В ".
Т1нв вав " В ЧА!4 (ТО) В " веси 8130 ВЕТОВИ )ЧТРР7()К33032ТТОТБТ7Т8,Т9()ЧЧХЧ(:( )Е( )М( )К( )3( ) Х( ) ЕВ в) © )985 ТИе Враг() оГ Тпы(еез оГ ())е 1.е)ап() 3(ап(огд 1цгИог Поту. Программа ЕНТЯ.)В ОООО ) "РНТВПВ" 9010 ! Данна» подпрограмма в ка истаа входньм данных использует Р( ) и возвращает ДПХ в ячейки Р( ) 9020 т дзтьописаниа мисиве О)м Р(п), н =л» Р =и перед входом в подпрограмму 9030 17 Р 1 ТНЕИ 3 Р(0) + Р(1) ча Р(1) Р(0) - Р(1) чв Р(0) 3 43 ВЕ'П)ВИ 9040 01И Б9(п/4), ТР(~/4). И9(10) ! В1В Р.
ЕВВ Р/2 В 2(51 90БО 01И А9(64) ! Ордината чайки 9060 01И ЧР(10), С9(10) ) Константы 9070 ИР 2Л(Р-2) чв И 4*И9 43 С9(Б) И - 1 43 С9(6) Р - 1 9080 ОИ ЕВВОВ СОТО 9200 ! Обкол при неудим инициализации НО в главной программе 9090 17 И ИО ТНЕИ СОТО 9400 ) Проптск предварительноготзбулирования 9!00 ОРР ЕВВОВ ! Отмена последующих обходов по отказам 9200 ! Получение степеней числа 2 9201 1 1 це ИР(0) 1 м И9(1) 2 9202 ИР(1 + 1) ИР(1) + ИР(1) Ю 1 1 + 1 9204 17 1 < Р ТНЕИ СОТО 9202 9296 17 И 2 ТНЕИ СОТО 9411 ! Частный случай 9297 17 И < 8 ТНЕИ СОТО 9400 т Пропуск триганометрическик функций 9298 39(ИР) 1 929Р 17 И 8 ТНЕИ 39(1) 313(Р1/4) чд СОТО 9330 ! 9300 т Попечение синусов 9301 РОВ 1 1 ТО 3 43 39(1аИР/4) 313(1аР1/8) 48 ИЕХТ 1 ! Исходная таблица впя синусов (грубая) 9302 Н9 1/2/СОБ(Р1/16) ! Начальное значение половины секанса 9303 ! Заполнить таблицу синусов 9304 С9(4) Р - 4 9306 РОВ 1 1 ТΠР— 4 9306 СР(4) С9(4) - 1 43 Ч9(0) 0 9307 РОВ Л И9(С9(4)) ТО И9 - И9(С9(4)) ВТЕР И9(С9(4) + 1) 9308 Ч9(1) ,! + И9(С9(4)) 9309 39(3) Н9е(39(У9(1)) + Ч9(0)) 43 Ч9(0) 89(ЧР(1)) 9310 ИЕХТ 3 9311 Н9 1/БСВ(2 + 1/Н9) ! Рекурсия половины секанса 9312 иехт 1 Время счета оказалось равным ),045 с.
!37 П римечания. а) Подставить численные значения лля и = 2р в строки 20, 30 и 40 и значение р в строку 50. б) Исиользуемые переменные: А В Г) Е Р Н ! 1 К 1. )Ч )ч)2 )ч)4 )36 9330 т Получение тангенсав 9340 С9(0) 39 - 1 9360 РОВ 1 1 ТО 39 — 1 9360 Т9(1) (1 — 39(С9(0)))/39(1) 9370 С9(0) СР(0) - 1 9380 ИЕХТ 1 9361 Т9(39) 1 9400 ! Выстрел перестановка 9402 ! Длп Р = З, 3 непосредственно выполнить перестановку 94оз хг Р - 2 тнки чИЯ) - РП) е ИХ) - г(2) е И2) - чя(9) 6 СОТО 9500 9404 ХГ Р 3 ТЗЕИ Ч9(9) Р(1) Е Р(1) Р(4) 6 Г(4) Ч9(9) 6 Ч9(9) Р(З) 6 Г(З) Г(6) 6 Иб) У9(9) 9405 ХР Р 3 ТНЕИ СОТО ЯБОО 9406 ! Рот Р 4.