Текст подпрограммы и версий ( Фортран ) qs20r.zip qs20d.zip |
Тексты тестовых примеров ( Фортран ) tqs20r.zip tqs20d.zip |
Текст подпрограммы и версий ( Си ) qs20r_c.zip qs20d_c.zip |
Тексты тестовых примеров ( Си ) tqs20r_c.zip tqs20d_c.zip |
Текст подпрограммы и версий ( Паскаль ) qs20r_p.zip qs20e_p.zip |
Тексты тестовых примеров ( Паскаль ) tqs20r_p.zip tqs20e_p.zip |
Вычисление серии интегралов Фурье с помощью алгоритма быстрого преобразования Фурье (БПФ) от комплекснозначной функции вещественного аргумента по квадратурной формуле прямоугольников.
Пусть f (x) = f1 (x) + i f2 (x) - комплеснозначная функция вещественного аргумента, определенная на конечном отрезке [a, b]. Вычисляется серия из N интегралов по формуле прямоугольников по N узлам:
b ∫ f (x) exp(-iwmx) dx = a 1 = (b-a) ∫ f [ a+(b-a) y ] * exp { - iwm[ a+(b-a) y ]} dy ≈ 0 N-1 ≈ (b-a)/N ∑ f [ a+(b-a) k/N] * exp { - i wm[ a+(b-a) k/N ] } = ImN , k =0 где ImN = UmN + i VmN , i = √-1 , wm = 2πm /(b-a) , m = 0, 1, 2, ..., N/2, N/2+1, N/2+2, ..., - 2, - 1
В.А.Морозов, Н.Н.Кирсанова, А.Ф.Сысоев. Комплекс алгоритмов быстрого преобразования Фурье дискретных рядов. Сб."Численный анализ на ФОРТРАНе", вып.15, Изд - во МГУ, 1976.
SUBROUTINE QS20R (U, V, A, B, F, N, IERR)
Параметры
U - | вещественный вектор длины N для вычисленных значений UmN; |
V - | вещественный вектор длины N для вычисленных значений VmN; |
A, B - | заданные нижний и верхний пределы интегрирования (тип: вещественный); |
F - | имя подпрограммы, вычисляющей подинтегральную функцию f (x); |
N - | число узлов интегрирования (тип: вещественный); |
IERR - | целая переменная для диагностических сообщений: |
IERR=65 - | когда заданное N превосходит максимально допустимое число узлов. |
Версии
QS20D - | вычисление серии интегралов Фурье с помощью алгоритма быстрого преобразования Фурье (БПФ) от комплекснозначной функции вещественного аргумента по квадратурной формуле прямоугольников в режиме удвоенной точности. |
Вызываемые подпрограммы
UTQS10 - | подпрограмма выдачи диагностических сообщений при работе подпрограммы QS20R. |
UTQS11 - | подпрограмма выдачи диагностических сообщений при работе подпрограммы QS20D. |
FTF1C - | подпрограмма вычисления дискретного или обратного дискретного преобразования Фурье комплексного ряда длины L = 2M (M - целое) методом быстрого преобразования Фурье при работе подпрограммы QS20R. |
FTF1P - | подпрограмма вычисления дискретного или обратного дискретного преобразования Фурье комплексного ряда длины L = 2M (M - целое) методом быстрого преобразования Фурье при работе подпрограммы QS20D. |
Замечания по использованию
1. |
N должно быть степенью числа два. | |
2. |
Максимальное значение N не должно превосходить 220, т.е. N ≤ 1048576 . | |
3. |
Первый оператор подпрограммы F должен иметь вид: SUBROUTINE F (X, F1, F2) Здесь: X - аргумент функции f (x) (тип: вещественный); F1 - вещественная переменная, F1 = Re f(x); F2 - вещественная переменная, F2 = Im f(x) | |
4. |
Для подпрограммы QS20D параметры U, V, A, B, а также параметры X, F1 и F2 из подпрограммы F имеют тип DOUBLE PRECISION. | |
5. | Подпрограмма QS20R вычисляет серию интегралов при заданном значении N. Если требуется вычислить интегралы с оценкой погрешности, то следует провести просчеты при нескольких значениях N и сравнить их. |
SUBROUTINE F (X, F1, F2) REAL X, F1, F2 F1 = (X*X - X + 1./6)*2. F2 = 0. RETURN END EXTERNAL F DIMENSION U(512), V(512) CALL QS20R (U, V, 0., 1., F, 512, IERR) Результаты: Приводятся значения интегралов UmN и VmN для w0 = 0 и w1 = 2π при N = 512: U(1) = 0.000001272 V(1) = 0.000000000 U(2) = 0.101322455 V(2) = 0.000000000