|
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.ru/lib_na/cat/q_htm_p/qsfpr_p.htm
Дата изменения: Tue Nov 17 12:53:58 2015 Дата индексирования: Sun Apr 10 02:05:26 2016 Кодировка: Windows-1251 |
|
Текст подпрограммы и версий 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 с. |
procedure QSFPR(FUN :Func_F1; A :Real; B :Real; ABSERR :Real;
RELERR :Real; T :Real; var RESULT_ :Real;
var ERREST :Real; var NOFUN :Integer; var FLAG :Real);
Параметры
| FUN - | имя комплексной подпрограммы - функции, вычисляющей плотность F (x) подынтегральной функции; |
| 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. |
Версии
| QSFPE - | вычисление этих же интегралов в режиме расширенной (Extended) точности. |
Вызываемые подпрограммы: нет
Замечания по использованию
|
Для подпрограммы QSFPE параметры A, B, T, ER, EA, RINT, FLAG, ERREST, а также параметр X, из подпрограммы FUN имеют тип Extended. |
π π
( ∫ sin10x F(x) dx = ∫ sin10x sin x/2 dx )
0 0
Unit TQSFPR_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, FQSFPR_p, QSFPR_p;
function TQSFPR: String;
implementation
function TQSFPR: String;
var
NOFUN :Integer;
PI,ER,EA,A,T,B,RINT,ERREST,FLAG :Real;
begin
Result := ''; { результат функции }
PI := 3.1415926;
ER := 1.E-5;
ЕА := 0.0;
A := 0.0;
T := 10.0;
B := PI;
QSFPR(FQSFPR,A,B,EA,ER,T,RINT,ERREST,NOFUN,FLAG);
Result := Result + Format(' %20.16f %20.16f %20.16f %20.16f %5d ',
[RINT,FLAG,ERREST,B,NOFUN]) + #$0D#$0A;
UtRes('TQSFPR',Result); { вывод результатов в файл TQSFPR.res }
exit;
end;
end.
Unit fqsfpr_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc;
function fqsfpr(X :Real): Complex;
implementation
function fqsfpr(X :Real): Complex;
var
ZI :Complex;
begin
{ Result - прототип имени функции FUN на FORTRANe }
ZI := Cmplx(0.0,1.0);
Result := MulC(SubC(Cmplx(0.0,0.0),ZI),Cmplx(Sin(X/2.0),0.0));
exit;
end;
end.
Результаты:
RINT = -1.0025063 * 10-1
NOFUN = 417
FLAG = 0
ERREST = 2.3 * 10-10