Текст подпрограммы и версий
sf88r_p.zip  sf88e_p.zip  sf88c_p.zip 
Тексты тестовых примеров
tsf88r_p.zip  tsf88e_p.zip  tsf88c_p.zip 

Подпрограмма:  SF88R (модуль SF88R_p)

Назначение

Вычисление конфлюентной гипергеометрической функции  1F1 (a, c; z)  вещественного переменного  z  с вещественными параметрами  a  и  c.

Математическое описание

Подпрограмма SF88R вычисляет значение конфлюентной (вырожденной) гипергеометрической функции(ряда)  1F1 (a, c; z)  при заданных значениях вещественного переменного  z  и вещественных параметров  a, c  посредством суммирования соответствующего ряда. Если прибавление нового члена ряда к накопленной его частичной сумме не изменяет ее значения, то вычисления заканчиваются, т.к. в этом случае достигнута машинная точность. Если после заданного заранее количества ITMAX таких итераций машинная точность не достигается, то выдается соответствующее диагностическое сообщение. В этом случае подпрограмма получает результат без гарантированной точности. Повторным обращением к подпрограмме с увеличенным значением ITMAX можно попытаться повысить точность результата. Выполненное количество итераций присваивается переменной ITER.

Абрамовиц М., Стиган И. Справочник по специальным функциям. М.: Наука, 1979.

Использование

procedure SF88R(A :Real; C :Real; Z :Real; ITMAX :Integer;
                var S :Real; var ITER :Integer; var IERR :Integer);

Параметры

A, C - заданные значения параметров конфлюентной гипергеометрической функции (тип: вещественный);
Z - заданное значение переменной, при котором требуется вычислить конфлюентную гипергеометрическую функцию (тип: вещественный);
ITMAX - заданное максимально допустимое количество итераций при суммировании ряда;
S - вещественная переменная, значение которой на выходе полагается равным вычисленному значению функции;
ITER - целая переменная, значение которой на выходе полагается равным выполненному количеству итераций, требуемых для достижения машинной точности;
IERR - целая переменная, служащая для сообщения об ошибках, обнаруженных в процессе счета; при этом:
IERR=65 - когда машинная точность не достигается за заданное максимальное количество итераций ITMAX.

Версии

SF88E - вычисление конфлюентной гипергеометрической функции  1F1 (a, c; z)  вещественного переменного  z  с вещественными параметрами  a  и  c  в режиме расширенной (Extended) точности; при этом параметры A, C, Z и S должны иметь тип Extended.
SF88C - вычисление конфлюентной гипергеометрической функции  1F1 (a, c; z)  комплексного переменного  z  с комплексными параметрами  a и  c; при этом параметры A, C, Z и S должны иметь тип Complex.

Вызываемые подпрограммы:

      UTSF12 -       UTSF13   подпрограммы выдачи диагностических сообщений при работе SF88R и SF88E соответственно.

Замечания по использованию: нет

Пример использования

Unit TSF88R_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, SF88R_p;

function TSF88R: String;

implementation

function TSF88R: String;
var
ITMAX,ITER,IERR :Integer;
A,C,Z,S :Real;
begin
Result := '';  { результат функции }
A := 1.0;
C := 1.0;
Z := -1.0;
IТМАХ := 100;
SF88R(A,C,Z,ITMAX,S,ITER,IERR);
Result := Result + Format('%15.7f ',[S]) + #$0D#$0A;
Result := Result + Format(' %5d %5d ',[ITER,IERR]) + #$0D#$0A;
UtRes('TSF88R',Result);  { вывод результатов в файл TSF88R.res }
exit;
end;

end.

Результаты:

       S = 0.3678794 
       ITER = 21 
       IERR = 0