Вторая пачка часть 138
;
IF (X =0) AND (N=0) THEN EXIT;
NA:=ABS(N);
XA:=ABS(X);
IF (XA > 3) THEN
JANX:=JNX01(NA,XA,A,B,C)
ELSE
IF (X =0) THEN
BEGIN
JANX:=0.;
EXIT;
END
ELSE
JANX:=JNX(NA,XA,EPS)
END;
IF(N=0) THEN EXIT;
IF(N < 0) THEN
IF (NA MOD 2 = 1) THEN JANX := -JANX;
IF(X < 0.) THEN
IF (NA MOD 2 = 1) THEN JANX := -JANX;
END.
Тестирование процедуры-функции JANX на IBM PC/AT-386 при тех же значениях n и x, что и для про¬це¬дур JNX и JNX01, дало аналогичные значения ; ре¬зуль¬та¬ты при отрицательных значениях порядка и ар¬гу¬мента пред¬ставлены в табл. 5.11 (ср. с табл. 5.10).
Таблица 5.11
x n = -1 n = 1
2.9 -0.3754275162-3.44e-8 0.3754275162+3.44e-8
-2.9 0.3754275162+3.44e-8 -0.3754275162-3.44e-8
4 0.0660433224+0.56e-8 -0.0660433224-0.56e-8
-4 -0.0660433224-0.56e-8 0.0660433224+0.56e-8
15 -0.2051040490+1.04e-8 0.2051040490-1.04e-8
-15 0.2051040490-1.04e-8 -0.2051040490+1.04e-8
Вычисление функции Бесселя II рода для любого це¬ло¬го v= = n и вещественного аргумента x может быть вы¬пол¬нено на основании ее разложения [Справочник ..., 1979]
(5.29)
где C = 0.57721566490153 - постоянная Эйлера.
Такой алгоритм реализован в приведенной далее процедуре-функции ynx, использующей константы 2C= =1.1544... и 1/? = 0.318... . При этом, если n < 0, вначале вы-числяется функция , а затем используется соотношение .
Формальные параметры процедуры. Входные: n (тип in¬¬teger) - порядок n функции; x (тип real) - значение ар¬г󬬬мен¬та. Выходной: ynx (идентификатор процедуры-фунꬬции, тип double) - значение . При x = 0, ког¬да функ-ция Неймана (Вебера) не определена, осу¬щес¬тв-ля¬¬¬ет¬ся вы¬ход к программе обработки соответствующей ошиб¬ки.
FUNCTION YNX (N : INTEGER; X : DOUBLE) : DOUBLE;
VAR X1,X2,A,R,B,S,D,P,T : DOUBLE;
BEGIN
IF(X = 0.) THEN
EXIT;
YNX := 0.;
NA := IABS(N);
X1 := DOUBLE(X/2.);
X2 := X1*X1;
A := 1.;
R := 1.;
B := 0.;
S := 0.;
IF(N <>0)THEN
FOR I : := 1 TO NA DO
BEGIN
R := R*I;
S := S+1
Индекс
Элементарные функции
Линейные уравнения
Нелинейные уравнения
Случайные числа