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

АЛГОРИТМ 1316

Деление степенного ряда на степенной ряд [С1]

Если даны первые п коэффициентов степенных рядов

G(2)-g.-fg.2H-g32+...-fg„2"- + ...

H{z)KKz-\-h-\-...+Kz-+...,

то процедура serdiv (сокращение от series - ряды, divide -деление) определяет Первые п коэффициентов СтепевнОГО ряда, который является разложением отношения H{z)lG(z). Предполагается, что gi=#0. При обращении к процедуре первые п коэффициентов G{z) и H{z) должны содержаться в массивах g[l:n] и /г[1:п]. После вьшолнения процедуры коэффициенты частного содержатся в массиве /г[1:п].

Процедура serdiv может быть также полезна при вычислении остатков разложения в ряд некоторых комплексных функций. Пусть

* Кроме этих изменений, в алгоритме 130 была исправлена ошибка, заключавшаяся в том, что в заголовке последнего из операторов цикла

for m: =m/2-while m>0 do

для ионстанты, обозначающе.й некоторую яоложительную величину, меньшую 0.5, был использован идентификатор А, спец-ифицированный в процедуре, как массив. В алгоритме 130а буква А была заменена на 0.4. {Прим. ред.)

Алгоритм 130а получен ,в результате исправления, сокращения и ординарной переработки алгоритма 130 (Eaves Lt. В. С. «САСМ», 1962, № 11). Исправление заключалось в замене оператора В [т]:-В [ft] на Л[]:=В[А] (в алгоритме 130а этому оператору соответствует оператор a[ft]:=b[ft]) во втором операторе цикла по k. Кроме того, собственная переменная t заменена формальным параметром L В результате глобальная переменная first стала ненужной *.

Алгоритм 130а транслирован с исходными данными, указанными в описании алгоритма, и получены правильные результаты.

Подтверждение и замечание к алгоритму 130а М. И. Агеев, Ю. И. Марков, Москва, июнь, 1968

Алгоритм 130а был вновь транслирован с исходными данными, указанными в описании алгоритма, и были получены правильные результаты. Кроме того, правильные результаты были получены с исходными данными, отличающимися от указанных в описании алгоритма значением х=2 в обоих примерах.

В пояснительный текст ,к алгоритму 130а (с. 60, стр. 12 снизу) нужно внести поправку. Вместо «Перед обращением к perm 130 параметр нужно «Перед первым обращением к perm 130 параметр t...».

Кроме того, в описании процедуры perm 130 параметр t лучше внести в список значений.



F (z) -H (z) j G (z) является комплексной функцией комплексной переменной и пусть F имеет т-кратный корень z=b, где

Требуемый остаток при z-b есть dm, где

Более подробно этот метод изложен в работе Хилла [Hi].

procedure serdiv (n,g) dataresult: (h);

value n; integer n; array g,h; begin real alpha,beta; integer i,j;

alpha:=l/g[l];

for j:=l step 1 until n do .

begin beta:=alphaXh[j]; for i:=j--I step 1 until n do

h[i]:=h[i]-betaXg[i-j + l] end j;

for j:=l step 1 until n do h[j]:==h[j] Xalpha

end serdiv;

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

Алгоритм 1316 является стереотипным переизданием алгоритма 131а. В свидетельство к алгоритму 131а внесено исправление, указанное в «Замечаниях к алгоритмам 9а, 12а, 13а, 25а, 59а, 131а, 137а, 138а и 143а» [27, с. 160].

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

Алгоритм 131а получен в результате исправления и ординарной переработки алгоритма 131 (Smith V. Н., Allen М. L. «САСМ», 1962, № 11). В алгоритме 131 была исправлена одна ошибка, заключающаяся в том, что в. теле процедуры был локализован формальный параметр п.

Алгоритм 131а проверен с помощью транслятора ТА-1 для следующих рядов:

Я (z) =е« X cos xl + х-х 13-5гЛ / 24-5 / 24 -Ь /48 -Ь 144, G (г) rel + х-Ь х2/2+3/6+х4/24-Ь 120+хб/720 + XV5040 при п=8.

Получен результат >

1-0.5x2-1-0.104773789Х 10-8ХХЗ-0.64028427Х ЮХх-ь + 0.333333332Х 10-»Хх5-1-0.694444468ха0-2Ххб- -0.126984128 Х10-1 Хх7, совпадающий с точным значением частного

l-x2/2-l-Х5/30-Ь 5x6/720-55x5040 не менее чем в семи значащих цифрах.



АЛГОРИТМ 1336

Генератор случайных чисел [G5]

Процедура-функция random выдает псевдослучайные числа, равномерно распределенные на интервале [а,Ь]. При первом обращении к процедуре random значение хО должно быть нечетным и находиться в интервале

10000000000 <л:0 < 34359738368

(последнее число равно 2). При последующих обращениях должно быть л:0=0.

Используемый математический метод определяется формулой Хп+1=йХХп (по модулю 235). Последовательность значений Хп имеет период 233. Процедура random использует собственные переменные х, т35, тЗб и т37.

real procedure random (a,b,xO);

value a,b,xO; real a,b; integer xO; begin own integer x,m35,m36,m37; if хОфО then begin x:=xO; m35:=34359738368;

т.36:=68719476736; m37:=I37438953472 end; x:=5Xx;

if x>m37 then x:=x-m37; if хтЗб then x:=x-m36; if X >m35 then x:=x-m35; random:=x/m35x (b-a)-ba end random;

Процедура random была успешно проверена на машине FACIT EDB с использованием языка FACIT-ALG0L1, который является конкретным представлением АЛГОЛа-60 для машины FACIT EDB. Из процедуры исключен описатель own, который не применяется в системе FACIT-ALG0L1.

Для проверки процедуры random были вычислены 1/ЛХ2л;„ и \jNxLx\ в интервале [0,1] для Л=500, 1000, 5000. Было взято на-

Алгоритм 1326 «Квантовомехаяические интегралы для орбит электронов» не публикуется здесь потому, что соответствующий алгоритм 132 (Browne J. С. «САСМ», 1962, №11) содержит ряд дефектов и недомолвок:

1) в описании процедуры-функции Ьрс нет присваивания значения идентификатору функции Ьрс;

2) делается попытка дважды описать процедуры с1, Ьрс и modulus;

3) имеются открывающие скобки, которым нет соответствующих закрывающих;

4) возможны значительные очевидные сокращения процедур алгоритма и т. д.





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

0.0057