Текст подпрограммы и версий ( Фортран )
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

Подпрограмма:  FTA1C

Назначение

Выполнение прямого и обратного быстрых дискретных преобразований Фурье одномерного массива комплексных чисел длины  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)