Текст подпрограммы и версий ( Фортран )
sfg6r.zip  sfg6d.zip 
Тексты тестовых примеров ( Фортран )
tsfg6r.zip  tsfg6d.zip 
Текст подпрограммы и версий ( Си )
sfg6r_c.zip  sfg6d_c.zip 
Тексты тестовых примеров ( Си )
tsfg6r_c.zip  tsfg6d_c.zip 
Текст подпрограммы и версий ( Паскаль )
sfg6r_p.zip  sfg6e_p.zip 
Тексты тестовых примеров ( Паскаль )
tsfg6r_p.zip  tsfg6e_p.zip 

Подпрограмма:  SFG6R

Назначение

Вычисление неполной бета - функции  Ix (a, b) .

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

Подпрограмма - функция SFG6R вычисляет неполную бета - функцию

       Ix(a, b)  =  Bx(a, b) / B(a, b)  =
                                                                     x
                                             =  1/ B(a, b)    ∫   t a -1 (1 - t)b -1 dt
                                                                   0 

где  0 ≤ x ≤ 1,  a > 0,  b > 0,  B (a, b) - значение (полной) бета - функции от параметров  a и  b.

Если  x < (a + 1) / (a + b + 1), то используется представление  Ix (a, b) в виде непрерывной дроби:

  Ix(a, b)  =  [ xa  (1 - x)b / (a B(a, b) ) ]  [ 1/(1+ d1/(1+ d2/(1+ ... ))) ]   , 
 где
           d2m+1  =  - [(a + m) (a + b + m) x ] / [(a + 2m) (a + 2m + 1)]
           d2m     =   [ m (b - m) x] / [(a + 2m - 1) (a + 2m)] 

Для достижения точности примерно в семь значащих цифр требуется приблизительно O ( (max (a, b) ) 1/2) итераций при суммировании непрерывной дроби.

Если  x > (a + 1) / (a + b + 1), то сначала вычисляется  I 1 - x (b, a), а затем  Ix (a, b) = 1 - I 1 - x (b, a).

Справочник по специальным функциям. Под ред. Абрамовица M. и Стиган И. Изд - во "Наука", 1979.

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

    FUNCTION  SFG6R (X, A, B, EPS, ITMAX, IERR) 

Параметры

X - заданное значение верхнего предела интегрирования (тип: вещественный);
A, B - заданные значения параметров  a  и  b (тип: вещественный);
EPS - заданная относительная точность вычислений (тип: вещественный);
ITMAX - заданное максимальное количество итераций, предположительно необходимых для достижения заданной точности (тип: целый);
IERR - целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы - функции; при этом:
IERR=65 - когда значение аргумента не принадлежит отрезку [0, 1]; значение функции полагается равным наибольшему представимому на машине числу;
IERR=66 - когда один или оба параметра неполной бета - функции меньше либо равны нулю; значение функции полагается равным наибольшему представимому на машине числу;
IERR=67 - когда заданное максимальное колчиство итераций недостаточно для заданных значений  A, B и EPS; значение функции полагается равным наибольшему представимому на машине числу.

Версии

SFG6D - вычисление неполной бета - функции  Ix(a, b) в режиме удвоенной точности; при этом параметры X, A, B и EPS должны иметь тип DOUBLE PRECISION.

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

       SF66R -
       SF66D  
вычисление натурального логарифма гамма - функции вещественного аргумента в режиме одинарной и удвоенной точности; используются в SFG6R и SFG6D соответственно;
      UTSF12 -
      UTSF13  
подпрограммы выдачи диагностических сообщений при работе SFG6R и SFG6D соответственно.

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

 

В подпрограммах - функциях SFG6R и SFG6D имеется общий блок COMMON /SFG6R2/ ITREAL. Переменной ITREAL присваивается то реальное количество итераций, которое было выполнено при счете.

В SFG6R и SFG6D используются рабочие подпрограммы - функции SFG6R1 и SFG6D1 соответственно.

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

       COMMON /SFG6R2/ ITREAL 
       X = 0.6 
       A = 16.0 
       B = 10.5 
       EPS = 0.000001 
       ITMAX = 100 
       RES = SFG6R(X, A, B, EPS, ITMAX, IERR) 

Результаты:

       RES = 0.47322 
       IERR = 0 
       ITREAL = 7