Вторая пачка часть 135
Вы¬ход¬ной: knx (идентификатор про¬це¬ду¬ры-функции, тип do¬ub-le) - значение .
FUNCTION KNX(N : INTEGER; X1,EPS : REAL) : DOUBLE;
VAR X,H,G,S,Z,U,ZN,F : DOUBLR;
BEGIN
X := DOUBLE(X1);
KNX := 0.;
H := 1.;
REPEAT
G := KNX;
S := 0.;
Z := EXP(H/2.);
U := Z*Z;
REPEAT
ZN := EXP (N * LN(Z));
F := 0.5*DEXP(X*(1.-0.5*(Z+1./Z)))*(ZN+1./ZN);
S := S+F;
Z := Z*U;
UNTIL (F <=EPS);
KNX := H*S;
H := H/2.;
UNTIL (ABS(KNX-G) <=KNX*EPS);
END.
Процедура-функция KNX была получена путем не¬ктрой модификации и перевода вначале на язык FOR¬T¬¬RAN [Белашов, 1997], а затем на язык PASCAL Бе鬬сик-про¬грам¬мы вычисления , приведенной в рବ¬бо¬те Грин-чишина и др. (1988), и проверена при тех же зна¬-че¬ни¬ях порядка n и ар¬гумента x на машине IBM PC/AT-386. Полученные при этом для ? = 1e-8 ре¬зуль¬та¬ты
1325.16874, 0.310561234
сов¬пали с контрольными [Гринчишин и др., 1988] с точ¬нос¬¬¬тью до девяти десятичных знаков.
В процедуре-функции BENX в зависимости от спо¬со¬ба оᬬращения реализовано вычисление функций или bein(x) на основании их разложений в ряды (5.43), (5.44), при этом вычисления прекращаются, когда сов¬па¬дут зна-че¬ния сумм слагаемых 2i и 2i + 2 в раз¬ло¬же¬ни¬ях. При отрицательном n вычисления вначале ведутся для |n|, а затем используется соотношение (5.48).
Формальные параметры процедуры. Входные: x (тип re¬al) - значение аргумента; n (тип integer) - значение по¬ряд¬ка; k (тип integer) - параметр, по значению которого вы¬¬бирается вычисляемая функция: при k = -1 вы¬¬чис¬ля¬ет¬ся функ¬ция , при k = 1 - bein (x). Вы¬ход¬ной: benx (иден¬ти¬фикатор процедуры-функции, тип do¬u¬b¬le) - вы¬чис¬ленное зна¬чение функции.
FUNCTION BENX(X : REAL;N,K : INTEGER) : DOUBLE;
VAR X0,X1,F,F1,F2 : DOUBLE;
BEGIN
X0 := DOUBLE(X);
X1 := X0*X0/4.;
NA := IABS(N);
N1 := NA;
WHILE (N1 > 8) DO
N1 := N1-8
IF (K =-1) THEN
BEGIN
F1 := DCOS(N1*2.35619449019D0);
F2 := X1*DSIN(N1*2.35619449019D0);
END
ELSE
BEGIN
F2 := X1*DCOS(N1*2
Индекс
Элементарные функции
Линейные уравнения
Нелинейные уравнения
Случайные числа