|
Текст подпрограммы и версий ( Фортран ) qsfpr.zip qsfpd.zip |
Тексты тестовых примеров ( Фортран ) tqsfpr.zip tqsfpd.zip |
|
Текст подпрограммы и версий ( Си ) qsfpr_c.zip qsfpd_c.zip |
Тексты тестовых примеров ( Си ) tqsfpr_c.zip tqsfpd_c.zip |
|
Текст подпрограммы и версий ( Паскаль ) qsfpr_p.zip qsfpe_p.zip |
Тексты тестовых примеров ( Паскаль ) tqsfpr_p.zip tqsfpe_p.zip |
Вычисление интегралов вида
B
I = ∫ [ cos(tx) Re F(x) - sin(tx) Im F(x) ] dx ,
A
где Re F (x) и Im F (x) - действительная и мнимая части комплексной функции F(x) действительного переменного x, на основе квадратурной формулы Филона.
Подпрограмма QSFPR вычисляет интеграл I с заданной абсолютной или относительной точностью на основе квадратурной формулы Филона [1], в которой плотность подынтегральной функции F (x) вычисляется в девяти равноотстоящих точках каждого подинтервала.
При делении подинтервала узлы и значения функции F (x) запоминаются для последующего использования [2].
| 1. | Справочник по специальным функциям. Под ред. М.А.Абрамовица и И.Стиган. - M.: Hаука, 1979, 832 с. |
| 2. | Форсайт Дж., Малькольм M., Моулер K. Машинные методы математических вычислений. - M.: Мир, 1980, 280 с. |
SUBROUTINE QSFPR (FUN, A, B, ABSERR, RELERR, RESULT,
ERREST, NOFUN, FLAG)
Параметры
| FUN - | имя комплексной подпрограммы - функции, вычисляющей плотность F (x) подынтегральной функции (должна быть описана в основной программе в операторе EXTERNAL); |
| A, B - | заданные нижний и верхний пределы интегрирования (тип: вещественный); |
| ABSERR - | заданная абсолютная погрешность вычисления интеграла (тип: вещественный); |
| RELERR - | заданная относительная погрешность вычисления интеграла (тип: вещественный); |
| T - | заданное значение параметра t (тип: вещественный); |
| RESULT - | приближение к интегралу, удовлетворяющее менее жесткой из двух границ погрешности (тип: вещественный); |
| ERREST - | оценка погрешности вычисленного значения интеграла (тип: вещественный); |
| NOFUN - | число вычисленных значений плотности подынтегральной функции F (x), потребовавшихся для получения результата (тип: целый); |
| FLAG - |
индикатор надежности: если FLAG = 0, то RESULT, вероятно, удовлетворяет заданной погрешности, если FLAG = XXX.YYY, то XXX - число интегралов, на которых не удалось достигнуть заданной точности, а 0.YYY = (B - X0)/(B - A) - граница отрезка [A, X0], на котоpом был израсходован лимит обращений к подпрограмме, вычисляющей функцию FUN. |
Версии
| QSFPD - | вычисление этих же интегралов в режиме удвоенной точности. |
Вызываемые подпрограммы: нет
Замечания по использованию
| 1. |
Для подпрограммы QSFPD параметры A, B, T, ER, EA, RINT, FLAG, ERREST, а также параметр X, из подпрограммы FUN имеют тип DOUBLE PRECISION. | |
| 2. | Для подпрограммы QSFPD функция FUN должна быть описана как комплексная двойной точности (см. пример использования). |
π π
( ∫ sin10x F(x) dx = ∫ sin10x sin x/2 dx )
0 0
COMPLEX FUNCTION FUN*16(X)
COMPLEX*16 ZI
DOUBLE PRECISION X
ZI = (0.D0, 1.D0)
FUN = -ZI*DSIN(X/2.D0)
RETURN
END
EXTERNAL FUN
DOUBLE PRECISION A, B, PI, T, ER, EA, RINT, FLAG, ERREST
COMPLEX*16 FUN
PI = 3.1415926D0
T = 10.D0
ER = 1.D-8
EA = 0.D0
A = 0.D0
B = PI
CALL QSFPD (FUN, A, B, EA, ER, T, RINT, ERREST, NOFUN, FLAG)
Результаты:
RINT = -1.0025063 * 10-1
NOFUN = 417
FLAG = 0
ERREST = 2.3 * 10-10