|
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.su/lib_na/cat/sf_htm_c/sfg4r_c.htm
Дата изменения: Tue Nov 24 10:38:55 2015 Дата индексирования: Sun Apr 10 01:52:03 2016 Кодировка: Windows-1251 |
|
Текст подпрограммы и версий sfg4r_c.zip sfg4d_c.zip |
Тексты тестовых примеров tsfg4r_c.zip tsfg4d_c.zip |
Вычисление неполной гамма - функции P (a, x) вещественного аргумента и вещественного параметра.
Подпрограмма - функция sfg4r_c вычисляет неполную гамма - функцию P (a, x):
x
P(a, x) = 1/ Г(a) ∫ e -t t a -1 dt ( x ≥ 0 , a > 0 ) ,
0
где через Г обозначена гамма - функция.
Если x < a + 1, то используется ряд:
∞
P(a, x) = [ e-x xa / Г(a) ] ∑ [ Г(a) / Г(a+1+n) ] xn
n=0
Если x ≥ a + 1, то используется непрерывная дробь
P(a, x) = 1 - e-x xa / Г(a) [ 1 /( x+ (1-a) /(1+ 1 /(x+ (2-a) /(1+ 2 /(x+ ...)))) ]
( x > 0 )
Справочник по специальным функциям. Под ред. Абрамовица М. и Стигана И. Изд - во "Наука", 1979.
real sfg4r_c (real *a, real *x, real *eps, integer *itmax, integer *ierr)
Параметры
| a - | заданное значение параметра a (тип: вещественный); |
| x - | заданное значение параметра x (тип: вещественный); |
| eps - | заданная относительная точность, с которой необходимо вычислить значение P (a, x) (тип: вещественный); |
| itmax - | максимально допустимое количество членов ряда или непрерывной дроби, используемых при вычислении P (a, x) (тип: целый); |
| ierr - | целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы функции; при этом |
| ierr=65 - | значение аргумента x меньше 0; значение функции полагается равным наибольшему представимому на машине числу; |
| ierr=66 - | значение аргумента a меньше или равно 0; значение функции полагается равным наибольшему представимому на машине числу; |
| ierr=67 - | заданное максимальное количество итераций недостаточно для заданных значений a и eps; значение функции полагается равным наибольшему представимому на машине числу. |
Версии
| sfg4d_c - | вычисление неполной гамма - функции P (a, x) вещественного аргумента и вещественного параметра в режиме удвоенной точности; при этом параметры a, x, eps имеют тип double, а функция sfg4d_c должна быть описана как double. |
Вызываемые подпрограммы
|
sf66r_c - sf66d_c | вычисление натурального логарифма гамма - функции Г (х) вещественного аргумента в режимах одинарной и удвоенной точности; используются в подпрограммах - функциях sfg4r_c и sfg4d_c соответственно; |
|
utsf10_c - utsf11_c | подпрограмма выдачи диагностических сообщений при работе подпрограмм - функций sfg4r_c и sfg4d_c соответственно. |
Замечания по использованию
|
В подпрограммах - функциях sfg4r_c и sfg4d_c используются рабочие подпрограммы sfg4r1_c, sfg4r2_c и sfg4d1_c, sfg4d2_c соответственно. |
int main(void)
{
/* Local variables */
static int ierr;
extern float sfg4r_c(float *, float *, float *, int *, int *);
static float a, r__, x;
static int itmax;
static float eps;
a = .5f;
x = 6.f;
eps = 1e-6f;
itmax = 100;
r__ = (float)sfg4r_c(&a, &x, &eps, &itmax, &ierr);
printf("\n %16.7e %5i \n",r__,ierr);
return 0;
} /* main */
Результаты:
r__ = 0.999468
ierr = 0