Вторая пачка часть 149


.., где Г(x) имеет полюсы, и приводя затем значения ар¬гу¬мен¬та к x [-1, 1] на основании соотношения (5.1). В слу¬чае если при заданном значении аргумента вы¬чис¬ля¬е¬мая функция Г(x) имеет полюс, выход из программы осуществляется путем обращения к программе об¬ра¬бот¬ки ошибки. Ос¬нов¬ной вычислительный процесс стро¬ится на использовании раз¬ложения обратной гам¬ма-функции (5.4). Формальные параметры процедуры. Входные: x (тип re¬al) - аргумент гамма-функции; k (тип integer) - пе¬ре¬клю¬ча¬тель: при k = -1 вычисляется 1/Г(x), при всех других зна¬чениях k полагается равным Г(x). Выходной: gamf (тип double) - зна¬че¬ние Г(x) или 1/Г(x). FUNCTION GAMF (X: REAL;K:INTEGER) : REAL; VAR G : REAL; LABEL A0, A1, A2, A3; BEGIN IF (K<> -1) AND INT(X)=-ABS(X) THEN BEGIN WRITE (“ОШИБКА В ИСХОДНЫХ ДАННЫХ “); EXIT; END; GAMF:=1; WHILE X>1 DO BEGIN X:=X-1; GAMF=GAMF*X; END; GAMF:=1/GAMF; WHILE X<-1 DO BEGIN GAMF:=GAMF*X; X:=X+1; END; IF X<>1 THEN BEGIN G:=(((((((((-0.00000018122*X+0.000001328554)*X -0.000002625721)*X-0.000017527917)*X+ 0.000145624324)*X-0.000360851496)*X- 0.000804341335)*X+0.008023278113)*X -0.017645242118)*X-0.024552490887)*X; GAMF:=GAMF*((((G+0.191091101162)*X- 0.233093736365)*X-0.422784335092)*X+ 1)*X*(1+X); END; IF K = -1 THEN EXIT; GAMF:=1/GAMF END {GAMF}. Процедура-функция GAMF была получена путем не¬кторой переработки и перевода программы вы¬чис¬ле¬ния гамма-функции, приведенной в работе Янке и др. (1968), с языка Бей¬си¬к вначале на язык FORTRAN [Бе¬ла¬шов, 1997], а затем на язык PASCAL и про¬тес¬ти¬ро¬ва¬на на IBM PC/AT-286 при x = 5, -2.5 для k = 1, -1, ког¬да таб¬личные значения Г(x) равны соответственно Г(5) = 24, Г(-2.5) = -0.945308720... . Полученные при этом результаты (см. табл. 5.2) со⬬па¬дают с точными до восьмого десятичного знବ¬ка. Таблица 5.2 x k = 1 k = -1 5 24.00000000 0.04166667 -2.5 -0.94530872 -1.05785544 Другой алгоритм вычисления Г(x) и 1/Г(x), ос¬но¬ван¬ный на использовании асимптотического разложения Стир¬линга (5
Индекс
Элементарные функции    Линейные уравнения    Нелинейные уравнения    Случайные числа


Hosted by uCoz