|
Текст подпрограммы и версий sf87r_p.zip sf87e_p.zip sf87c_p.zip |
Тексты тестовых примеров tsf87r_p.zip tsf87e_p.zip tsf87c_p.zip |
Вычисление гипергеометрической функции 2F1 (a, b; c; z) вещественного переменного z с вещественными параметрами a, b, c ..
Подпрограмма SF87R вычисляет значение гипергеометрической функции(ряда) 2F1 (a, b; c; z) при заданных значениях вещественного переменного z и вещественных параметров a, b, c посредством суммирования соответствующего ряда. Если прибавление нового члена ряда к накопленной его частичной сумме не изменяет ее значения, то вычисления заканчиваются, т.к. в этом случае достигнута машинная точность. Если после заданного заранее количества ITMAX таких итераций машинная точность не достигается, то выдается соответствующее диагностическое сообщение. В этом случае подпрограмма получает результат без гарантированной точности. Повторным обращением к подпрограмме с увеличенным значением ITMAX можно попытаться повысить точность результата. Выполненное количество итераций присваивается переменной ITER.
Абрамовиц М., Стиган И. Справочник по специальным функциям. М.: Наука, 1979.
procedure SF87R(A :Real; B :Real; C :Real; Z :Real; ITMAX :Integer;
var S :Real; var ITER :Integer; var IERR :Integer);
Параметры
| A,B,C - | заданные значения параметров гипергеометрической функции (тип: вещественный); |
| Z - | заданное значение переменной, для которой требуется вычислить гипергеометрическую функцию (тип: вещественный); |
| ITMAX - | заданное максимально допустимое количество итераций при суммировании ряда; |
| S - | вещественная переменная, значение которой на выходе полагается равным вычисленному значению функции; |
| ITER - | целая переменная, значение которой на выходе полагается равным выполненному количеству итераций, требуемых для достижения машинной точности; |
| IERR - | целая переменная, служащая для сообщения об ошибках, обнаруженных в процессе счета; при этом: |
| IERR=65 - | когда машинная точность не достигается за заданное максимальное количество итераций ITMAX. |
Версии
| SF87E - | вычисление гипергеометрической функции 2F1 (a, b; c; z) вещественного переменного z с вещественными параметрами a, b, c в режиме расширенной (Extended) точности; при этом параметры A, B, C, Z и S должны иметь тип Extended. |
| SF87C - | вычисление гипергеометрической функции 2F1 (a, b; c; z) комплексного переменного z с комплексными параметрами a, b, c; при этом параметры A, B, C, Z и S должны иметь тип Complex. |
Вызываемые подпрограммы:
UTSF12 -|
подпрограммы выдачи диагностических сообщений при
работе SF87R и SF87E соответственно.
| |
Замечания по использованию: нет
Unit TSF87R_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, SF87R_p;
function TSF87R: String;
implementation
function TSF87R: String;
var
ITMAX,ITER,IERR :Integer;
A,B,C,Z,S :Real;
begin
Result := ''; { результат функции }
A := 1.0;
B := 1.0;
C := 1.0;
Z := 0.5;
IТМАХ := 100;
SF87R(A,B,C,Z,ITMAX,S,ITER,IERR);
Result := Result + Format('%15.7f ',[S]) + #$0D#$0A;
Result := Result + Format(' %5d %5d ',[ITER,IERR]) + #$0D#$0A;
UtRes('TSF87R',Result); { вывод результатов в файл TSF87R.res }
exit;
end;
end.
Результаты:
S = 2.0
ITER = 62
IERR = 0