# Вторая пачка часть 134

37) - (5.40). Точность вы¬¬чис¬лений опре¬де-ляется по¬греш¬нос¬тью со¬от¬вет¬ству¬ю¬щих разложений. Формальные параметры процедур. Входной: x (тип re¬¬al) - значение аргумента. Выходной: i0x или i1x (иден¬ти¬фи¬катор процедуры-функции, тип double). FUNCTION I0X(X1 : REAL) : DOUBLE; VAR X,T : DOUBLE; BEGIN X := DOUBLE(X1); IF X <=3.75 THEN BEGIN X := (X/3.75)*(X/3.75); I0X := 1.+X*(3.5156229D0+X*(3.0899424D0+ X*(1.2067492D0+X*(0.26597332D0+ X*(0.0360768D0+X*0.0045813D0))))); END ELSE BEGIN T := 3.75/X; I0X := ((((((((0.00392377D0*T-0.01647633D0)*T+ 0.02635537D0)*T-0.02057706D0)*T+ 0.00916281D0)*T- 0.00157565D0)*T+ 225319D0)*T+0.01328592D0)*T+ 0.39894228D0)*EXP(X)/SQRT(X); END; END. FUNCTION I1X(X1 : REAL) : DOUBLE; VAR X,T : DOUBLE; BEGIN X := DOUBLE(X1); IF X <=3.75 THEN BEGIN T := (X/3.75)*(X/3.75); I1X := (0.5+T*(0.87890594D0+T*(0.51498869D0+ T*(0.15084934D0+T*(0.02658733D0+ T*(0.00301532D0+T*0.00032411D0))))))*X; END ELSE BEGIN T := 3.75/X; I1X := ((((((((-0.00420059D0*T+0.01787654D0)*T- 0.02895312D0)*T+0.02282967D0)*T- 0.01031555D0)*T+0.00163801D0)*T- 0.00362018D0)*T-0.03988024D0)*T+ 0.39894228D0)*EXP(X)/SQRT(X); END; END. Процедуры-функции I0X и I1X тестировались на IBM PC/AT-286 для x = 2.9, 10. Полученные при этом ре¬зуль¬та¬ты (см. табл. 5.16) совпадают с контрольными [Спра¬воч¬ник ..., 1979] и результатами, пред¬став¬лен¬ны¬ми в работах Бе¬лашовa (1997) и Гринчишина и др. (1988), с точностью до вось¬ми десятичных знаков. Таблица 5.16 n x = 2.9 x = 10 0 4.50274867 3.61260722 1 2815.71665 2670.98831 В процедуре-функции KNX реализовано вычисле¬ние зна¬чения функции при v = n (n - целое) на ос¬¬но¬ва¬нии ее интегрального представления (5.41), при этом тре¬бу¬емая точность ? задается при обращении к KNX. Формальные параметры процедуры. Входные: n (тип in¬teger) - значение порядка; x (тип real) - значение ар¬гу¬мен¬¬та; eps (тип real) - требуемая точность вычислений

Индекс
Элементарные функции Линейные уравнения Нелинейные уравнения Случайные числа