Главная Промышленная автоматика.

for = l step 1 until n do

if ij then denom: = denomX (xtab[j]-xtab(i]); if terms = 0 then go to yy; ra: = high: = 1; -aa: if (high = j) V (xtab[high]=xp) then

begin high: = high+l; go to aa end; if high>n then begin m:=m-1;

if mO then go to xx; high: = xuse[m]+l; go to aa end;

xusefm]: = high; m:=m+l; if m:terms then

begin high:=high+l; go to aa end; for i:= 1 step 1 until terms do

part: = partX (xp-xtab[xuse[i]]); sum:=sum + part; m:=terms; part: = l; high: = xus4terms]-f-l; go to aa; yy: sum: = l;

xx: coef[j]: = sumXfactk/aenom

end j; go to fin;

zz: for i: = l step 1 until n do coef[i]: = 0; fin: end dicol;

Свидетельство к алгоритму 796

Процедура dicol алгоритма 796 является стереотипным переизданием процедуры dicol алгоритма 79а. В пояснительный текст алгоритма 796 было внесено несколько изменений редакторского характера.

Алгоритм 796 был транслирован в системе ТА-1М для М-220 с входными параметрами п=3; =0, 1, 2; xp=G, 2; xtab = l, 3, 6. Результаты трансляции даны в табл. 15.

Выражения для коэффициентов Лагранжа при п=3 (=0) даны, например, в работе П. В. Мелентьева [33, с. 127]. Выражения для coef[i\ при k-l и k-2 легко получаются из выражений для coef[i] при k=0 обычным дифференцированием.

Имея табличные значения функции уЩ в опорных (узловых) точках xtab[i] и вычислив coef[i\ с помощью процедуры dicol, легко получить значения как самой функции так и любой ее производной в точке Sep по формуле

yM=2coef[i]y[i]. 1=1

Например, для функции у-х в точке хр = 2 получаем у=ут=2/5Х1 +2/3X91/15x36=4, 1/=г/0)= 1/2х 1 + 1/2x9+0x36=4, =::=<2)=1/5Х 1-1/3X9+12/16X36=2.

Это полностью совпадает с контрольными значениями д{хр)==А; у(хр) =2X2=4 у{хр)=2.



Аналитические выражения для coef[i]

Контрольные значения coef [i]

Результаты трансляции

хр=0

coef [1] coef{2] coef [3]

{X - Хз){х - Xi) {Xi - Xs){Xi -X2)

(x - Xs){X - Xl) {X2 - Xs)(X2 - Xi)

(X - Xi){X - Xi)

coef [1] coef[2] coef [3]

coef{1} coef[2] coef [3]

Xi)(X3

-X,)

- Xi -

- (Хг-

Xi)(Xi

- Xi)

- Xz-

~~ (Xi -

xis(Xi

-Хг)

- Xi-

Xi

~ (Xz -

Xi)(X3

-Хг)

Хз)(Х1 2

- Хг)

~ (Xi -

Xi)(Xi 2

-Xl)

(Xs - Xi)(X3 - Xl)

"10

j4 15

-тг 0

J 3 2 15

"3 2

1.8000000 -1.0000000 0.2000000

-0.90000000

-1.1666666

-0.26666666

0.20000000 -0.33333333 0.13333333

0.40000000 0.66666666 -0.066666666

-0.50000000 0.50000000 0

0.20000000 -0.33333333 0.13333333

Свидетельство к алгоритму 79a

Алгоритм 79a получен в результате ординарной переработки и некоторых очевидных сокращений алгоритма 79 (Giammo Т. Р. «САСМ», 1962, № 2).

Подтверждение к алгоритму 79

Ева С. Кларк (С1 агк Eva S. «САСМ», 1963, № 3)

Эта процедура была переведена на язык ФОРТРАН и проверена на машине CDC 1604. Приемлемая точность была получена для k=0,. 4п<42. При возрастании пик точность снижается. Было обнаружено, что при возрастании п время выполнения процедуры быстро растет. Для k=0 получены результаты, приведенные в табл. 16.

Таблица 16

Примерное количество машшаых операций

1.3,оЗ

6.9,оЗ

3.8,„4

1.8,о5

8.6,о5



Автор алгоритма 79 указал в письме, что процедура была составлена» для использования с малым п и малым k.

АЛГОРИТМ 806

Вычисление обратной гамма-функции с точностью до 10 цифр [S14]

Процедура rgrSQ вычисляет обратную вещественную гамма-функцию 1/Г (л;) для любых вещественных значений х при использовании схемы Горнера для вычисления аппроксимирующего полинома. Погрешность метода аппроксимации равна ±2-. real procedure rgr80 (х);

value х; real х; begin real у;

у:=1;

if х> 1 then

begin x: = x-1; y: = yXx; go to aa end;

y:=i/y; if x<-1 then

begin y:=yXx; x: = x-fl; go to cc end; rgr80:= if x=l then у else У X (((((((((({((-0.00000018122 X x+0.000001328554) Xx -0.000002625721) Xx-0.000017527917) Xx +0.000145624324) Xx-0.000360851496) Xx -0.000804341335) Xx+0.008023278113) Xx -0.017645242118) X x-0.024552490887) X x +0.191091101162) Xx-0.233093736365) Xx -0.422784335092),Xx-fl) XxX (x + 1) end rgr80;

Свидетельство к алгоритму 806

Алгоритм 806 составлен, по существу, заново в значительно более-краткой и экономной форме, чем алгоритм 80а. Для экономии памяти и машинного времени "тело процедуры rgam алгоритма 80а было использовано внутри процедуры rgrSO в последнем из ее операторов. Это тело было предварительно модифицировано так, чтобы не требовался вспомогательный массив &[0:12], и не вычислялись бы переменные с индексами.

Алгорит.м 806 был транслирован на машине М-220 в системе ТА-1М и дал результаты, приведенные в табл. 17.

Таблица IT

rgr (80)

rer (80)

rgr (80)

0.85710962

1.1077321

0.56418958

1.0880652

1.1198465

-0.2

-0.17178740

1.1032626

0.73848811

-0.5

-0.28209479

0.81604893

0.37328217

-1.2

0.20614488

0.27581566

1.0000000

-1.5

0.42314218





0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [19] 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43

0.0046