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