Maple 9.5/10 в математике, физике и образовании
Шрифт:
В процессе вычислений с использованием представления рациональной функции в виде непрерывной дроби иногда требуется внести несколько дополнительных цифр точности для страховки. В данном случае достаточно внести две дополнительные цифры. Итак, новое время вычислений:
Ускорение
Мы видим, что процедура вычислений, основанная на MinimaxApprox, выполняется почти в 12 раз быстрее процедуры с использованием исходного интегрального определения. Это серьезный успех, полностью оправдывающий время, потерянное на предварительные эксперименты по аппроксимации и ее оптимизации!
Заметим, что этот результат относится только к конкретному ПК и может сильно меняться при прогонке этого примера на других. Так, читатель, знакомый с учебным курсом автора по системе Maple 7 [36] обнаружит, что там в этом примере результаты были иные и куда более ошеломляющие:
В чем дело? А дело в том, что более ранние результаты были получены в среде Maple 7 на компьютере с процессором Pentium II с частотой 400 МГц. А новые результаты получены уже на компьютере с процессором Pentium 4 с частотой 2,6 ГГц и с системой Maple 9.5.
5.10.9. Преобразование в код ФОРТРАНа или С
Один из поводов разработки эффективной аппроксимации для вычисления математической функции заключается в создании библиотек подпрограмм для популярных языков программирования высокого уровня, таких как ФОРТРАН или С. В Maple имеются функции преобразования на любой из этих языков. Например, мы можем преобразовывать формулу для минимаксной аппроксимации в код ФОРТРАНа:
Итак, нами показано, что правильный выбор аппроксимации для сложной функции обеспечивает уменьшение времени ее вычисления более чем на один-два порядка (!) при весьма приличной точности в 6 верных знаков и при использовании для вычислений минимального числа арифметических операций. Применение при этом средств системы Maple позволяет генерировать разложения в различные ряды, быстро вычислять рациональные аппроксимации функций и выполнять преобразования в различные специальные формы, сочетая это с мощными средствами интерактивной работы и графической визуализации, в частности с построением графиков функции и кривых ошибок при разных видах аппроксимации. Все это обеспечивает идеальную среду для решения таких задач.
5.11. Интегральные преобразования функций
5.11.1. Прямое и обратное Z-преобразования
Интегральные преобразования (см. файл inttrans) широко применяются в науке и технике. Так, прямое и обратное Z-преобразования функций широко используются при решении задач автоматического управления и обработке дискретных сигналов. Прямое Z-преобразование последовательности f(n) в функцию комплексной переменной z задается выражением:
Обратное Z-преобразование сводится к преобразованию комплексной функции f(z)
в функцию f(z).Эти преобразования задаются следующими функциями:
ztrans(f, n, z) — прямое преобразование функции f(n) в f(z);
invztrans(f, z, n) — обратное преобразование f(z) в f(n).
Заметим, что прямое Z-преобразование базируется на соотношении ztrans(f(n),n,z)=sum(f(n)/z^n,n=0..infinity), записанном на Maple-языке. В первых версиях системы Maple Z-преобразования выполнялись средствами библиотеки и требовали вызова командой readlib(ztrans). Но в Maple 7/8 они уже были включены в ядро системы и предварительного вызова уже не требуют. В этом убеждают следующие примеры:
Нетрудно заметить, что в этих примерах функции, после прямого и обратного преобразований, восстанавливают свои значения.
5.11.2. Быстрое преобразование Фурье
Преобразование Фурье широко используется в математике, физике и электрорадиотехнике. Суть этого преобразования описана чуть ниже — см. раздел 5.11.4. Ввиду широких сфер применения этого преобразования в технике часто используется его особая разновидность — быстрое преобразование Фурье или FFT (Fast Fourier Transform).
В Maple на уровне ядра реализованы функции быстрого прямого FFT и обратного iFFT преобразований Фурье для числовых данных:
Здесь m — целое неотрицательное число, х и у — массивы с числом элементов, кратным степени 2 (например 4, 8, 16 и т.д.), представляющие действительные и мнимые части массива комплексных чисел (данных). Функции возвращают число элементов выходных массивов, а результат преобразований помещается в исходные массивы:
Несмотря на высокую эффективность быстрых преобразований Фурье их недостатком является применение только к дискретно заданным численным данным, причем с числом отсчетов кратным двум в целой степени. Если данных меньше, недостающие элементы обычно заменяются нулями.