Дьяконов В.П. Maple 9.5 и 10 в математике, физике и образовании (1185901), страница 52
Текст из файла (страница 52)
5.28 показывает равные по амплитуде колебания. Таким образом, мы блестяще добились успеха в снижении погрешности до требуемого и довольно жесткого уровня. Если бы мы задались целью получить то- Зб4 Глава 5. Аиализ функ((иоиальиых завипииоетей и обработка данных бе.07 4е.07 2+07 0 -2е-07 .Ве-07 Рис. 5.28. График ошибки при минимаксной аппроксимации лько четыре или пять точных знаков аппроксимации, что в целом ряде случаев вполне приемлемо, то могли бы получить нужный результат гораздо раньше. Нам остается оптимизировать полученную аппроксимацию по минимуму арифметических операций и проверить реальный выигрыш по времени вычислений.
5.10.7. Эффективная оценка рациональных функций Полиномы числителя и знаменателя в минимаксной аппроксимации уже выражены в форме Горнера (то есть в форме вложенного умножения). Оценка поли- номом степени и в форме Горнера при п умножениях и и суммированиях это наиболее эффективная схема оценки для полинома в обшей форме. Однако, для рациональной функции степени (т, и) мы можем делать кое-что даже лучше, чем просто представить выражения числителя и знаменателя в форме Горнера. Так, мы можем нормализовать рациональную функцию так, что полином знаменателя со старшим коэффициентом будет равным !. Мы можем также заметить, что вычисление рациональной функции степени (гп, гг) в форме Горнера требует выполнения всего т+ и сложений, т+ и — ! умножений и ! деления.
Другими словами, общий индекс действия есть т+ и операций умножения/деления, т+ и операций сложения/вычитания. Вычисление рациональной функции можно значительно сократить и далее, преобразуя ее в непрерывную (цепную) дробь. Действительно, рациональная функция степени (и), и) может быть вычислена, используя только п)ах(т, л) операций умножения/деления, т+ и операций сложения/вычитания. Например, если ог = л, тогда эта новая схема требует выполнения только половины числа действий умножения/деления по сравнению с предшествующим методом. Для рациональной функции М(пипахАрргох, вычисление в форме, выраженной выше, сводится к 9 действиям умножения/деления и 8 действиям сложения/вычитания.
Число операции умножения/деления можно сократить до 8, нормализуя знаменатель к форме )поп)с. Мы можем теперь вычислить непрерывную (цепную) дробь для той же самой рациональной функции. Вычисление по этой схеме, как это можно видеть из вывода Мар(е, сводятся только 4 действиям деления и 8 действиям сложения/вычитания: > Мгпггеахг(рргох := соосгасВогге(МгпггеахАрргох): > 1ргз.ог(МгпггеахАрргох(х))г †.468860043555е-1+ 1.07858988373/ (х+4.41994160718+16.1901836591/(х+4.29118998064е70.1943521765/(х-10.291 2531257+4.77538954280/(х+1.23883810079)))) 5.9.
Выбор аиироисимации для сложной функции 5.10.8. Сравнение времен вычислений Теперь определим время, необходимое для вычисления функции 7(х) в 1000 точек, используя первоначальное интегральное определение, н сравним его с временем, требующимся для схемы М)п!п)ахАрргох в виде непрерывнои дроби. Сделаем это для системы Мар!е 8.
Так как наше приближение будет давать только 6 точных цифр, мы также потребуем 6 точных цифр и от интегрального представления функции: > 0191гв : 6: вГ := Г1ве(): > вес)( еча1г(й(1/250.0)), 1 = 1..1000 ): > о1ог1ве:= ггве() — зг; о/з бте:в 4.075 В процессе вычислений с использованием представления рациональнон функции в виде непрерывной дроби иногда требуется внести несколько дополнительных цифр точности для страховки. В данном случае достаточно внести две дополнительные цифры. Итак, новое время вычислений: > 01дгсз: 8: зс:= Гпве(]: > зег)( Мзп1вахарргох(1/250.0), и = 1..1000 ): > оеепьве: = Г гве () — во; оевбте:= 0.342 Ускорение вычисления при аппроксимации есть: > Врееаор := о1ог1ве/оеесипе; ЯрееЛ/р:= 1 1.9! 5205 Мы видим, что процедура вычислений, основанная на М)пипахАрргох, выполняется почти в 12 раз быстрее процедуры с использованием исходного интегрального определения.
Это серьезный успех, полностью оправдывающий время. потерянное на предварительные эксперименты по аппроксимации и ее оптимизации! Заметим, что этот результат относится только к конкретному П К и может сильно меняться при прогонке этого примера на других. Так, читатель, знакомый с учебным курсом автора по системе Мар!е 7 !36] обнаружит, что там в этом примере результаты были иные и куда более ошеломляющие:. оЫбте:= 81.805 пеи г!те:= .694 фреев)(/р:= 117. 87464 В чем дело? А дело в том, что более ранние результаты были получены в среде Мар(е 7 на компьютере с процессором Рещшгв П с частотой 400 МГц» А новые результаты получены уже на компьютере с процессором Рещшгп 4 с частотой 2,6 ГГц и с системой Мар)е 9.5.
5.10 9. Преобразование в код ФОРТРАНа или С Один из поводов разработки эффективной аппроксимации для вычисления математической функции заключается в создании библиотек подпрограмм для популярных языков программирования высокого уровня, таких как ФОРТРАН Збб Глава 5. Аиализ 4уикциоиальиых зависимостей и обработка даииых или С. В Мар!е имеются функции преобразования на любой из этих языков. Например, мы можем преобразовывать формулу для минимаксной аппроксимации в код ФОРТРАНа: > Гогегав(нтпмхахлрргох[х)); Гогтгап -0.0468860043555 + 1.07858988373 х+ 4.419941607!8 16.1901836591 70.1943521765 х+ 4.29118998064 + 4.77538954280 х - 10.2912531257 + + 1 23883810079 Итак, нами показано, что правильный выбор аппроксимации для сложной функции обеспечивает уменьшение времени ее вычисления более чем на один-два порядка (!) при весьма приличной точности в 6 верных знаков и при использовании для вычислений минимального числа арифметических операций.
Применение при этом средств системы Мар1е позволяет генерировать разложения в различные ряды, быстро вычислять рациональные аппроксимации функций и выполнять преобразования в различные специальные формы, сочетая это с мощными средствами интерактивной работы и графической визуализации, в частности с построением графиков функции и кривых ошибок при разных видах аппроксимации. Все это обеспечивает идеальную среду для решения таких задач.
в).11. Интегральные преобразования функций 5.11.1. Прямое и обратное 7-преобразования Интегральные преобразования (см. файл )пцгапз) широко применяются в науке и технике. Так, прямое и обратное Х-преобразования функций широко используются при решении задач автоматического управления и обработке дискретных сигналов. Прямое У.-преобразование последовательности Яп) в функцию комплексной переменной ~ задается выражением: Г(с) = ~~(п) е " Обратное У.-преобразование сводится к преобразованию комплексной функции Яс) в функцию г(г). Эти преобразования задаются следующими функциями: г!гвпв(1, и, х) — прямое преобразование функции Яи) вЯс); )пчх)гапв(1, г, и) — обратное преобразование Яг) вг(и).
Заметим, что прямое Х-преобразование базируется на соотношении х!гапв(!(п),п,х) = вцп)(!(п)lг"п,п=0..!пйп!!у), записанном на Мар!е-языке. В первых версиях системы Мар!е Х-преобразования выполнялись средствами библиотеки и требовали вызова командой геаг)!)Ь(г!гапв). Но в Мар!е 7/8 они уже были включе- 567 5.10. Интеералъные нреобразования функиий ны в ядро системы и предварительного вызова уже не требуют.
В этом убеждают следующие примеры: > а:=гггапв(п"2,п,г)! а'- (е — 1)' > Тпнгггапв(а,г,п); > гггапв(сов(РТ/4*Г),Г,г) 2е) г /2 2 2) -22~Г2+2 > гпнгггапв(Ъ, г, г) ( Нетрудно заметить, что в этих примерах функции, после прямого и обратного преобразований.
восстанавливают свои значения. 5.11.2. Быстрое преобразование Фурье Преобразование Фурье широко используется в математике, физике и электро-радиотехнике. Суть этого преобразования описана чуть ниже — см. раздел 5.1!.4. Ввиду широких сфер применения этого преобразования в технике часто используется его особая разновидность — быстрое преобразование Фурье или ЕЕТ (Еав( Еоцпег ТгапвГогп)).
В Мар[е на уровне ядра реализованы функции быстрого прямого ЕЕТ и обратного !ЕЕТ преобразований Фурье для числовых данных: ггТ(в, х, у) ена1пг(ггТ(в, наг(х), наг(у) ) ) зрит(в, х, у) ена1пг(1ггТ(в, наг [х), наг(у) ) ) Здесь и) — целое не отрицательное число, х и у — массивы с числом элементов, кратным степени 2 (например 4, В, 16 и т. д.), представляющие действительные и мнимые части массива комплексных чисел (данных). Функции возвращают число элементов выходных массивов. а результат преобразований помещается в исходные массивы: > х:= аггау([1.,2.,3.,4.1): у:= аггау([5.,6.,7.,8.)): > ГГТ (2, х, у); > ргьпг(х) [ ! О., -4., -2., О.
) > ргзпг(у) [26., О., -2.,-4. [ > 1ГГТ (2, х, У): Збб Злава 5. Анализ функциональных зависимостей и обработка банных > рггнг(х] [1.0000000, 2.0000000, 3.0000000, 4.0000000 [ > рггог(у) [5.0000000, 6.0000000 . 7.0000000, 8.0000000 [ Несмотря на высокую эффективность быстрых преобразований Фурье их недостатком является применение только к дискретно заданным численным данным, причем с числом отсчетов кратным двум в целой степени. Если данных меньше, недостающие элементы обычно заменяются нулями. Альтернативой преобразований Фурье в наши дни стали вейвлет-преообразования.
Вейвлеты это новый обширный базис для приближения произвольных зависимостей вейвлетами — «короткими» волночками разной формы, способными к масштабированию и перемещению. Вейвлеты прекрасно подходят для приближения локальных особенностеи различных зависимостей, в том числе нестационарных (с параметрами, меняющимися во времени). Ознакомиться с вевлетами н средствами работы с ними в системах МАТЮКАВ, Ма(])еп)а((са и Ма(1]са(] можно по книге [55[. К сожалению, в Мар!е готовые средства вейвлет-преобразований отсутствуют и это серьезный недостаток этих систем. 5.11.3.