Текст подпрограммы и версий ( Фортран ) fta1c.zip , fta1p.zip |
Тексты тестовых примеров ( Фортран ) tfta1c.zip , tfta1p.zip |
Текст подпрограммы и версий ( Си ) fta1c_c.zip , fta1p_c.zip |
Тексты тестовых примеров ( Си ) tfta1c_c.zip , tfta1p_c.zip |
Текст подпрограммы и версий ( Паскаль ) fta1c_p.zip , fta1z_p.zip |
Тексты тестовых примеров ( Паскаль ) tfta1c_p.zip , tfta1z_p.zip |
Выполнение прямого и обратного быстрых дискретных преобразований Фурье одномерного массива комплексных чисел длины N, равной целой степени двух.
Пусть известны значения hk = h (tk) комплексно - значной функции h (t) на равномерной сетке tk = k Δt, k = 0, 1, 2, ..., N - 1 (где Δt - шаг сетки, а N равняется целой степени двух), заданные в виде одномерного массива комплексных чисел ARRAY длины N.
Подпрограмма FTA1C имеет два режима работы, задаваемых при обращении к ней значением параметра IREG. В первом режиме (IREG = 1) выполняется прямое быстрое дискретное преобразование Фурье заданного массива ARRAY, состоящее в получении N комплексных чисел Hn (n = 0, 1, 2, ..., N - 1) из N комплексных чисел hk (k = 0, 1, 2, ..., N - 1), являющихся элементами этого массива, по формуле:
N-1 Hn = ∑ hk e 2π i k n / N k =0
Вычисленные значения Hn располагаются в том же массиве ARRAY. Во втором режиме (IREG = - 1) выполняется обратное быстрое дискретное преобразование Фурье, состоящее в восстановлении из значений Hn (n = 0, 1, 2, ..., N - 1), заданных в виде одномерного массива комплексных чисел ARRAY длины N, значений hk (k = 0, 1, 2, ..., N - 1) по формуле:
N-1 hk = 1/N ∑ Hn e -2π i k n / N n =0
Вычисленные значения hk располагаются в том же массиве ARRAY.
Н.С.Бахвалов, Н.П.Жидков, Г.М.Кобельков. Численные методы. Изд - во "Наука", 1987.
SUBROUTINE FTA1C (ARRAY, N, IREG)
Параметры
ARRAY - | комплексный одномерный массив длины N, содержащий на входе значения hk (IREG = 1) или Hn (IREG = - 1), а на выходе значения Hn (IREG = 1) или hk (IREG = - 1); |
N - | длина массива ARRAY, равная целой степени двух (тип: целый); |
IREG - | задает режим работы подпрограммы (тип: целый); при этом: |
IREG= 1 - | когда выполняется прямое преобразование; |
IREG= -1 - | когда выполняется обратное преобразование. |
Версии
FTA1P - | выполнение прямого и обратного быстрых преобразований Фурье одномерного массива комплексных чисел длины N, равной целой степени двух, в режиме удвоенной точности; при этом параметр ARRAY должен иметь тип DOUBLE PRECISION и иметь длину, равную 2N (см.также "Замечания по использованию"). |
Вызываемые подпрограммы: нет
Замечания по использованию
1. |
В подпрограммах FTA1C и FTA1P проверка того, что значение N должно быть целой степенью двух, не производится. | |
2. |
При обращении к подпрограмме FTA1C массив ARRAY можно задать вещественным. В этом случае его длина должна равняться 2N, а его элементы должны формироваться по следующему правилу: ARRAY( I ) = Re (h i) , если IREG= 1 ARRAY( I ) = Re (H i) , если IREG= - 1 ARRAY(I+1) = Im (h i) , если IREG= 1 ARRAY(I+1) = Im (H i) , если IREG= - 1 Здесь Re означает вещественную часть комплексного числа, Im - мнимую часть, I = 1, 2, ..., 2N - 1; i = 0, 1, ..., N - 1. | |
3. |
При обращении к подпрограмме FTA1P массив ARRAY должен быть вещественным удвоенной точности длины 2N. Правила задания его содержимого такие же, как и в замечании 2. Если это допускает входной язык компилятора, массив ARRAY может быть описан как COMPLEX * 16 длины N. | |
4. | Для того чтобы избежать вычислений с использованием комплексной арифметики, подпрограммы FTA1C и FTA1P рассматривают массив ARRAY всегда не как комплексный, а как вещественный длины 2N одинарной или удвоенной точности соответственно. |
DIMENSION A(4) COMPLEX A A(1) = (1.0, 0.0) A(2) = (4.0, 0.0) A(3) = (7.0, 0.0) A(4) = (10.0, 0.0) CALL FTA1C (A, 4, 1) Результаты: A(1) = ( 22.0, 0.0), A(2) = (- 6.0, - 6.0), A(3) = (- 6.0, 0.0), A(4) = (- 6.0, 6.0)