Текст подпрограммы и версий ( Фортран )
ftfrr.zip
Тексты тестовых примеров ( Фортран )
tftfrr.zip
Текст подпрограммы и версий ( Си )
ftfrr_c.zip
Тексты тестовых примеров ( Си )
tftfrr_c.zip
Текст подпрограммы и версий ( Паскаль )
ftfrr_p.zip
Тексты тестовых примеров ( Паскаль )
tftfrr_p.zip

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

Назначение

Вычисление коэффициентов действительного преобразования Фурье или вычисление значений функции по ее действительным коэффициентам Фурье. Длина действительного ряда (преобразуемого или вычисляемого) должна быть целой степенью двух.

Математическое описание

Пусть задан действительный ряд  X длины  2 * N. При вычислении действительного преобразования Фурье ряд  X преобразуется в два действительных ряда  A и  B длины  N + 1 по формулам

                              2N-1             
        A r  =  (1/N)     ∑    X n cos (π r n / N)  ,    r = 0, 1, ..., N
                               n=0
                              2N-1             
        B r  =  (1/N)     ∑    X n sin (π r n / N)  ,    r = 0, 1, ..., N
                               n=0 

при этом  B0 = BN = 0. . Для восстановления ряда  X по заданным действительным коэффициентам Фурье, элементы ряда  Х вычисляются по формуле

        X r  =  (A0 / 2) + ((- 1) r AN / 2) +
                       N-1             
                  +   ∑  (A n cos (π r n / N) + B n sin (π r n / N))  ,    
                       n=1
       r = 0, 1, ..., 2N - 1 

B вычислениях используется метод быстрого преобразования Фурье. При больших N число операций пропорционально  N * log2N. Данная подпрограмма подробно описана в [1, стp. 47] под именем  RFFT.

1.  В.А.Морозов, Н.Н.Кирсанова, А.Ф.Сысоев, Комплекс алгоритмов быстрого преобразования Фурье дискретных рядов. Сб. "Численный анализ на ФОРТРАНе". вып. 15. Изд - во МГУ, 1976 г.

Использование

    SUBROUTINE  FTFRR (P, N1, N2, A, B, X) 

Параметры

P - заданная вещественная переменная, признак преобразования Фурье. Если на входе  P > 0., то вычисляются коэффициенты Фурье. Если на входе  P < 0., то вычисляются значения функции;
N1 - заданная длина массивов действительных коэффициентов Фурье,  N1 = N2 / 2 + 1 (тип: целый);
N2 - заданная длина массива значений функции, целая степень двух (тип: целый);
A - вещественный массив длины  N1, содержащий коэффициенты разложения Фурье по четным гармоникам. При  P < 0. задается на входе подпрограммы, при  P > 0. - вычисляется;
B - вещественный массив длины  N1, содержащий коэффициенты разложения Фурье по нечетным гармоникам. При  P < 0. задается на входе подпрограммы, при  P > 0. - вычисляется;
X - вещественный массив длины  N2, содержащий значения функции. При  P > 0. задается на входе подпрограммы, при  P < 0. - вычисляется.

Версии: нет

Вызываемые подпрограммы

FTF1C - вычисление дискретного или обратного дискретного преобразования Фурье комплексного ряда длины, равной степени двух, методом быстрого преобразования Фурье.

Замечания по использованию

  1. 

При вычислении коэффициентов Фурье (P > 0.) исходная информация (ряд значений функции) сохраняется.

  2. 

При вычислении значений функции (P < 0.) исходная информация (ряды коэффициентов Фурье) не сохраняется.

  3. 

Если на входе подпрограммы задано  P = 0., то никаких вычислений не производится.

  4.  При вычислении коэффициентов Фурье первый и последний коэффициенты разложения Фурье по нечетным гармоникам равны нулю.

Пример использования

      DIMENSION  A(5), B(5), X(8)
      DATA  A(1), A(2), A(3), A(4), A(5) /0., 0., 1., 0., 0./
      DATA  B(1), B(2), B(3), B(4), B(5) /0., 1., 0., 0., 0./
      P = - 1.
      N1 = 5
      N2 = 8
      CALL  FTFRR (P, N1, N2, A, B, X)

Результаты:

      X(1)  =   1.0,    X(2)  =   0.70710678, 
      X(3)  =   0.0,    X(4)  =   0.70710678, 
      X(5)  =   1.0,    X(6)  =  -0.70710678, 
      X(7)  =  -2.0,    X(8)  =  -0.70710678