|
Текст подпрограммы и версий ( Фортран ) qs21r.zip qs21d.zip |
Тексты тестовых примеров ( Фортран ) tqs21r.zip tqs21d.zip |
|
Текст подпрограммы и версий ( Си ) qs21r_c.zip qs21d_c.zip |
Тексты тестовых примеров ( Си ) tqs21r_c.zip tqs21d_c.zip |
|
Текст подпрограммы и версий ( Паскаль ) qs21r_p.zip qs21e_p.zip |
Тексты тестовых примеров ( Паскаль ) tqs21r_p.zip tqs21e_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 ∑ Ck f [ a+(b-a) k/N] * exp { - i wm[ a+(b-a) k/N ] } = ImN ,
k =0
где ImN = UmN + i VmN ,
Ck - веса формулы Симпсона для отрезка [0,1] , i = √-1 ,
wm = 2πm /(b-a) , m = 0, 1, 2, ..., N/2, N/2+1, N/2+2, ..., - 2, - 1
В.А.Морозов,Н.Н.Кирсанова,А.Ф.Сысоев. Комплекс алгоритмов быстрого преобразования Фурье дискретных рядов. Сб."Численный анализ на ФОРТРАНе", вып.15, Изд - во МГУ, 1976.
SUBROUTINE QS21R (U, V, A, B, F, N, IERR)
Параметры
| U - | вещественный вектор длины N для вычисленных значений UmN; |
| V - | вещественный вектор длины N для вычисленных значений VmN; |
| A, B - | заданные нижний и верхний пределы интегрирования (тип: вещественный); |
| F - | имя подпрограммы, вычисляющей подинтегральную функцию f (x); |
| N - | число узлов интегрирования (тип: вещественный); |
| IERR - | целая переменная для диагностических сообщений: |
| IERR=65 - | когда заданное N превосходит максимально допустимое число узлов. |
Версии
| QS21D - | вычисление серии интегралов Фурье с помощью алгоритма быстрого преобразования Фурье (БПФ) от комплекснозначной функции вещественного аргумента по квадратурной формуле Симпсона в режиме удвоенной точности. |
Вызываемые подпрограммы
| UTQS10 - | подпрограмма выдачи диагностических сообщений при работе подпрограммы QS21R. |
| UTQS11 - | подпрограмма выдачи диагностических сообщений при работе подпрограммы QS21D. |
| FTF1C - | подпрограмма вычисления дискретного или обратного дискретного преобразования Фурье комплексного ряда длины L = 2M (M - целое) методом быстрого преобразования Фурье при работе подпрограммы QS21R. |
| FTF1P - | подпрограмма вычисления дискретного или обратного дискретного преобразования Фурье комплексного ряда длины L = 2M (M - целое) методом быстрого преобразования Фурье при работе подпрограммы QS21D. |
Замечания по использованию
| 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. |
Для подпрограммы QS21D параметры U, V, A, B, а также параметры X, F1 и F2 из подпрограммы F имеют тип DOUBLE PRECISION. | |
| 5. | Подпрограмма QS21R вычисляет серию интегралов при заданном значении N. Если требуется вычислить интегралы с оценкой погрешности, то следует провести просчеты при нескольких значениях N и сравнить их. |
SUBROUTINE F(X, F1, F2)
REAL X, F1, F2
F1 = EXP(X)
F2 = 0.
RETURN
END
EXTERNAL F
DIMENSION U(512), V(512)
CALL QS21R (U, V, 0., 1., F, 512, IERR)
Результаты:
Приводятся значения интегралов UmN и VmN
для w0 = 0 и w1 = 2π при N = 512:
U(1) = 1.718281828 V(1) = 0.000000000
U(2) = 0.042449333 V(2) = 0.266717025