| 
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: 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