Вторая пачка часть 145
14), (5.18) для 0 < x <1 (погрешность |?2| <3?10-8) и (5.15), (5.19) для x ? 1 (погрешность ? < 8?10-7) р嬬ализовано в при¬ве¬ден¬ной процедуре-функции SCI.
Формальные параметры процедуры. Входные: x (тип re¬al) - значение аргумента (x > 0); k (тип integer) - пе¬ре¬клю¬¬чатель: при вычисляется Si(x), при k = 2 - Ci(x). Выходной параметр: идентификатор функции sci (тип do¬u¬ble) - вычисленное значение функции.
FUNCTION SCI ( X : DOUBLE; K : INTEGER) : DOUBLE;
VAR SC, S, C : DOUBLE;
BEGIN
X1:=X;
X:=X X;
IF X >= 1 THEN
BEGIN
SCI:=1/X1;
SCI:=SCI*((((X/100+0.38027264)*X+2.65187033)*X
+3.3567732)*X
+0.38102495)/((((X/100+0.40021433)*X+
3.22624911)*X+5.7023628)*X+1.57105423);
S:=SIN(X1);
C:=COS(X1);
IF K=2 THEN
BEGIN
SCI:=SCI*S;
SC:=C;
END
ELSE
BEGIN
SCI:=1.570796326-SCI*C;
SC:=S;
END;
SCI:=SCI-SC/X*((((X/100+0.42242855)*X+
3.02757865)*X+3.52018498)*X
+0.21821899)/((((X/100+0.48196927)*X
+4.82485984)*X+11.14978885)*X+4.49690326);
END
ELSE
IF K=2 THEN
BEGIN
SCI:=0.577215664+LN(X1);
SCI:=SCI+(((X/322560-2.3148148E-4)*X +0.010416666667)*X-0.25)*X;
END;
ELSE
BEGIN
SCI:=X1;
SCI:=SCI*((((X/3265920-2.834467E- 5)*X+
1.66666666E-3)*X-0.0555555556)*X+1)
END
END { ***** SCI **** }.
Процедура-функция SCI была получена путем су¬ще¬ст¬¬вен¬ной переработки и перевода вначале на язык FORT¬RAN [Белашов, 1997], а затем на язык PASCAL Бе鬬сик-про¬грамм вычисления интегральных синуса и кси¬ну¬са, опуб¬ли¬кованных в работе Гринчишина и др. (1988), и в целях конт¬роля протестирована для тех же зна¬че¬ний аргумента. В результате было получено (по¬греш¬¬ность указана по от¬но¬шению к табличным зна¬че¬ни¬ям [Cпра¬вочник ..., 1979])
Si(0.5) = 0.493107418 + 0.0e-9;
Si(10) = 1.65834785 - 2.6e-7;
Ci(0.5) =-0.177784079+2.0e-10;
Ci(10)=-0.045456288-1.5e-7,
что также с достаточной точностью совпадает с ре¬зуль¬та¬тами, полученными в работе Гринчишина и др
Индекс
Элементарные функции
Линейные уравнения
Нелинейные уравнения
Случайные числа