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

щении к процедуре оба фактических параметра, соответствующих двум «а», должны быть одинаковы, иначе результат выполнения процедуры неопределен (согласно правилу подстановки). Пользователь может изменить заголовок процедуры на syminv{а,п)exit:{fail); не меняя результата вьшолнения процедуры.

Замечание редактора Дж. Вегстейна. Группа АЛКОР видоизменила правило подстановки так, что если значение параметра изменяется в процессе выполнения процедуры, то параметр нужно указывать дважды. Хотя «Сообщение по АЛГОЛу-60» не запрещает указывать в заголовке процедуры формальный параметр дважды, транслятор, который ограничивает язык согласно правилу группы АЛКОР, по-видимому, не сможет воспринять некоторые из примеров, данных в «Сообщении по АЛГОЛу-60».



ПРИЛОЖЕНИЕ 1

Подтверждения и замечания к алгоритмам, опубликованным в предыдущих выпусках

Замечания к алгоритмам 96, 226 и 516

В. И. Меерсон, Москва, июнь 1976 ,

В алгоритме 96 замечены две опечатки. I.e. 25, 12-я стр. снизу. Напечатано

if comp (yl[k],y3[k],eta) >eps then .

.Должно быть

if comp(yl[k],y3[k],eta) >eps then 2. C. 25, 19-я стр. снизу. Напечатано

begin hs:=h;

Должно быть

begin hs: = h;

В алгоритме 226 замечена опечатка на с. 47, 14-я стр. снизу. После комментария

отсутствует точка с запятой.

В алгоритме 516 нужно предусмотреть случай, когда в операторе присваивания

i:=d/(a[/,t]Xrf+l) знаменатель обращается в нуль, т. е. когда d=-l/a[j,i]. Это соот-.ветствует тому, что после корректировки прямой матрпцы получается вырожденная

матрица.

Предлагается перед вышеуказанным оператором вставить

if a[j, ij X d = - 1 then go to signal 51; где signalSl-нелокализованная метка.

Замечания к алгоритмам 176, 236, 376, 436, 636, 746, 756, 926, 946, 245 и 50CJ

М. И. Агеев, Москва, апрель 1977

В материалы предыдущих выпусков [23, 24] данной серии нужно внести следую-..Щие поправки.

Номер алгоритаа

Страница

Строка

Напечатано

Должно быть

3 св.

...уравнений (с сохранением входных массивов) [F4]

... уравнений [F4]

19 СИ.

fori:=l step 1 until к do

for i:=l step 1 until n do

376*

3 СИ.

функции е",...

функции <?-•*,...

436*

10 СИ.

begin t:=0

begin t:=0;

636**

8 св.

value a, b; real a, b;

real a, b;

746***

15 сн.

.. .alpha, beta [0 : n-1]

.. .alpha, beta [Orn-J-l]

2 СН.

...(/[i]=exp(x[t] для

...(/[i]=exp(x[i]) для

22 сн.

...(HjX-bf,) где l<t<r

... {UiX+Vi), где Kt<r

8 СН.

for j:=l step 1 until n do

for i:=l step 1 until n do

21 св.

b : =n-k-f 1;

b : =п,-k-1;

245****

11 СН.

6.2. :M [k-2]SsM [k] для 4<k<i

6.2:M[k2]>M[kI для 4<k<i

50CJ****

.9 св.

5) берется на проходе

5) берет на проходе

» Эти поправки предложеаы С. В. Ратафьевым (г. Горький, ГПИ). •» Эта поправка предложена В. В. Гусевым (г. Киев, ИК АН УССР). *»» Эта поправка предложена С. В. Ратафьевым и С. С. Калитиным (г. Москва, МЭИ). **»» См. приложение к выпуску 2 [24].



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

В. А. Любимов, Целиноград, февраль 1977

Алгоритм 186 был проверен на ЭВМ «Наири-2». Тело процедуры confr было переведено на язык автоматического-программирования машины «Наири-2». Транслированная программа для примера, помешенного на с. 41 [23], дала следующие результаты:

ai =;;- 40.0000000000; bo = 236142,343750; аг = - 0.230769230; bj = - 7220.21533203;

аз = 162.500000000; b = 53.995215415;

= - 0.390189521; d„ = 2825.956939697;

а, = - 68.504784584; d, = - 111.578947067;

4= 1.00000000000.

Для сокращения времени счета в алгоритме 186 предлагается следующая модификация. В четвертой строке процедуры confr вместо

for j: = 1 step 1 until m do

можно писать

a[l].=y[l]; for j:=2 step 1 until m do

В заголовке табл. 8 [23, с. 42] вместо аЩ должно быть Q![fe-f-l]-Замечание к алгоритму 236

B. Ф. Ротко, А. К- Васильченко, Севастополь, СПИ, март 1976

Алгоритм 236 не всегда дает правильные результаты. Хотя для отладочны,-? примеров, приведенных в «Свидетельстве к алгоритму 236», результаты получаются верными, для л: = (5,3,7,2,1) алгоритм выдал неупорядоченный массив =(2,1,3,5,7).

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

C. В. Ратафьев, Горький, ГПИ, ноябрь 1976

Алгоритм 236 предназначен для быстрой мртировки больших массивов и так же,, как и любой другой аторитм так называемой ключевой или композиционной сортировки, имеет конечную разрешающую способность, под которой понимают величину g. такую, что при d< (где d=abs(jc[tl]-x[i2]) -это расстояние между двумя различными элементами сортируемого массива х), соответствующие этому d элементы х[И] и хЩ] могут оказаться неупорядоченными.

Достаточным условием, гарантирующим успешную сортировку, яв.чяется выполнение неравенства

dX (п-1)/(max-min) > 1

для любой пары отличных друг от друга элементов сортируемого массива.

Нетрудно убедиться, что для примеров, приведенных в «Свидетельстве к алгоритму 236», т. е. для массивов л:= (3,1,1,5) и л:= (2,2,1,5,4,4,4,3), вышеприведенное условие выполняется, в то время как для массива л:= (5,3,7,2,1) имеем п=5, тах=7, min=\ и (для элементов 1 и 2) d=l, откуда dX (п-1)/(/па.)с-min) =1Х4/6<1, т. е. успешная сортировка не гарантирована.

Избавиться от сбоев можно путем увеличения числа элементов п до -выполнения вышеприведенного условия, вводя, например, дополнительные дублирующие элементы. Так, если вместо массива (5,3,7.2.1) рассматривать массив (5,3,7,2,1,1,1.1), то сортировка будет -успе/лной. Однако в общем случае добиться абсолютной разрешающей спо-





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.0016