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

НО и на место оператора

ааЗ: ДОСКА ЧУЖИХ[ОТ] :=с[УРОВЕНЬ];

поскольку пешку, взятую на проходе, нужно возвращать на доску не так как любую другую фигуру не только при возврате хода, но и при -обычной смене хода.

Эта ошибка в алгоритме А. Белла не была обнаружена, при его отладке, потому что для всех задач со взятием пешки на проходе (задачи типа Валодао), которые име-.лись тогда в распоряженпи автора данного замечания, результаты, несмотря на при--.сутствие этой ошибки в программе, получались верными.

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

Г. А. Клугерман, М. А. Ожегов, Пермь, апрель 1977

Алгоритм 50CJ был транслирован в системе ТА-!1М (М-2120М) без операторов :рокировки и взятия пешки на проходе. Ввиду особенностей транслятора ТА-1М (малого объема памяти, невозможности в процессе работы с алгоритмами хранить на МЛ Ч)ттранслированную программу и таблицы фигур и вызывать их оттуда для решения задачи) в алгоритме 50CJ были сделаны следующие изменения.

1. Исключены таблицы фигур, ходы фигур вычисляются в процедуре ОБЗОР ХОДОВ.

2. Перед меткой ВВОД ТАБЛИЦ вставлены операторы . -P0042(L);

for М: = 1 step 1 until L do .

begin...

a в конце программы добавлен символ end. Здесь L - это число решаемых задач, набиваемое на первой перфокарте числовых данных в колоде, которая формируется пользователем. Это- позволяет при одной трансляции решать подряд несколько задач.

С помощью модифицированной таким образом программы решались несколько

жгах.матных двухходовок с общим числом фигур 5-7. Время трансляции было oi-оло

3 минут,-а время решения 5-10 минут.

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

Н. М. Кимлик, Рига, январь 1978.

Алгоритм 50CJ был переведен на алгоритмический язык ПЛ-1 -и успешно проверен в системе ДОС ЕС-1020. Время исследования задач с числом фигур от 15 до 20 вследствие малого быстродействия машины ЕС-1020 составляло в среднем 25 мин (без учета времени на трансляцию, которое равно примерно 13 мин). От затрат времени на трансляцию можно избавиться, если включить программу ъ библиотеку объектных модулей систе.\1ы ЕС-1020.

После того, как редактором выпуска [42] в программу алгоритма 50CJ после метки ОЧИСТК.4 ДОСОК был добавлен оператор

for i: = l step 1 until 5 do с [i]: =0;

оператор

c[l]:=0;

следующий за меткой НАЧАЛО, стал лишним, и его можно вычеркнуть.

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

А. Л. Брудно, Л. А. Плит, Москва, июнь 1978.

Алгоритм 50CJ был запрограммирован для машины SIEMENS (быстродействие 100000 оп./с, память до 256К). При решении задач, в которых не требуется рокировка лли взятие на проходе, программа выполнялась верно. Для вьшолнения программы (вместе с диспетчером и транслирующей системой) требуется 65К памяти. На трансляцию уходит около 3 мин. Для решения 10 задач с количеством фигур от 10 до 20 нужно 10 мин.

В опубликованном тексте алгоритма [49] были замечены две следующие опечатки.

1. С. 106, стр. 3 снизу. Напечатано



Должно быть

список [с+5]:=4; 2. С. ИЗ, стр. 19 снизу. Напечатано

ер2; if ЧУЖАЯ ДОСКА [ТАБДИЦА ПЕШЕК [i]]=0 then

Должно быть

ер2: if ЧУЖАЯ ДОСКА [ТАБЛИЦА ПЕШЕК [i]]i=0 then

Кроме того для правильного выполнения операторов с метками ер2 и ерЗ нужно расширить массив НА ПРОХОДЕ до границ [0:5] я очистить в начале программы переменную НА ПРОХОДЕ [0], так как в противном случае переменная НА ПРОХОДЕ [УРОВЕНЬ -1] при значении УР0ВЕНЬ=1 окажется яе определенной.

Была организована возможность решения нескольких задач при однократном вводе и одноразовой трансляции программы.

Мы полагаем, что программу полезно упростить путем запоминаяия всей информации на каждом уровне и исключения частей, относящихся к возврату хода, - памяти на это потребуется немного.

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

И. Шимерда, Прага (ЧССР), сентябрь 1976

Алгоритм 666 был переведен на язык ПЛ-1 и после трансляции в системе OS/360, PL-1, version 5.4 для первого из примеров, приведенных в подтверждении к алгоритму 66 Б. Рандела и К. Г. Бройдена («САСМ», 1962, № 4), дал правильный результат примерно с той же точностью, какая была указана у авторов этого подтверждения.

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

Л. М. Шульмаи, Киев, ГАО АН УССР, декабрь 1976

Алгоритм 666 был переведен на язык АНАЛИТИК-71 (ЭВМ МИР-2) и дал точный результат обращения матрицы Вильсона (4X4). Для экономии памяти алгоритм был модифицирован так, чтобы в память машины вводился только верхний треугольник (включая главную диагональ) исходной симметричной матрицы. Для этого строки (кроме поддиагональных .элементов) исходной матрицы (порядка п) последовательно записываются в одномерный массив а[1:пХ{п+1)/2]. В этом же массиве получается и результат, т. е. верхний треугольник (с главной диагональю) обращенной матрицы. Модифицированный алгоритм имеет следующий вид *.

procedure inverse66m(n)dataresult:(а);

value n; integer n; array a; begin real y,p; integer i,j,I<,t,m,q,r,d;

array v[l:n-1];

m: = n-1;

for q: = l step 1 until n do begin if a[l =0 then go to signal66m; p:=l/.a[l]; k:=0; d:=n; for i: = l step 1 until m do v[i]: = a[i+l]; for i:= 1 step 1 until m do begin t:=k-i-f-1; k:=k+d; r:=t-bd; a[k]:=y:=-pXv[i]; for j:=i step 1 until m do

a[t+j]: = a[r+i]+yXvm; d: = d-1 end i; a[k+l]:=-p end q; m:=nx(n+l)/2;

for i: = l step 1 until m do a[i]:=-a[i] end invers66m;

В нижеприведенном виде процедура invers 66m была также транслирована редактором выпуска в системе БЭСМ - АЛГОЛ и дала точный результат обращения матрицы Вильсона (4X4). {Прим. ред.)



* Этот материал (так же, как и нижеследующее подтверждение к алгоритму 159а) был направлен А. Е. Колесниковым (и. о. зав. лаб. мат. экспл. ЭВМ Института математики с ВЦ АН МССР) в форме письма в редакцию «Сов. радио» для передачи редактору выпуска «Библиотека алгоритмов 16-506».

A. В. Чекудаев, Новосибирск, апрель 1977

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

1) в пятой строке после метки step2 выражение 1/f (п-1) X (п/2)) заменить на 2/((п-1)Хп).

2) в двух условных операторах [24, с. 41, строка 11 св. и строка 19 сн.] выражение abs((sl-)-dl)-sl)>0 заменить на sl-)-dil=sl.

Замечание к алгоритму 856

B. А. Трупп, В. Ф. Руденко, Москва, сентябрь 1976

При проведении статистических исследований нами был использован алгоритм вычисления собственных векторов симметрической матрицы методом Якоби для определения собственных векторов корреляционных матриц (алгоритм 856).

В некоторых случаях этот алгоритм приводил к аварийному останову, связанному с попыткой извлечения квадратного корня из отрицательного числа при выполнении операторов

omega:=if rnu=0 then -1 else -sign(mu)Xv2/sqrt(v22--mu2); sint: = omega/sqrt (2X (1 -f sqrt (1-omega2)));

Анализ этих операторов показывает, что условие if mu=0 в первом операторе не является достаточным для безотказного вычисления выражения sqrt(l-omegat2). Если mu< (для БЭСМ-6 =i;io-Ю), то muf2=0. В этом случае первый оператор сводится к

omega:=-sign (mu) Xv2/sqrt (v2f 2);

H ошибка округления при вычислении квадратного корня может сделать значение omega несколько больше (по модулю) единицы. В результате происходит аварийный останов при вычислении второго оператора, когда делается попытка вычислить выражение sqrt(l-omegaf2).

Эта ошибка в исходном алгоритме 85 была описа-на Дж, Хилмором (Hilmore J. S. «САСМ», 1962, № 8). Однако проведенная в алгоритме 856 (так же как и предложенная Дж. Хилмором) модификация алгоритма 85, как показано выше, не гарантирует исправление.

Предлагаем операторы j

mu: = 0.5X(vl-v3); • .

omega: =if mu=0 then -1 eise

-sign (mu) Xv2/sqrt (v2t2-f ти2); заменить на операторы .

mu:=(0.5X(vl-v3))t2; omega:=if mu=0 then -1 else

sign (v3-V1) X v2/sqrt (v2 f 2+mu);

Такая модификация, как показали результаты многократного использования алгоритма, обеспечивает его безотказную работу.

, Подтверждения к алгоритмам 157а и 199а и замечания к алгоритмам 1а-250а*

А. Е. Колесников, Кишинев, июнь 1975

Ваша многолетняя работа по выпуску сборников алгоритмов в пригодном для употребления виде получает чрезвычайно высокую оценку во многих организациях страны, в том числе и в Вычислительном центре АН Молдавской ССР. Сотрудники Института математики с ВЦ АН МССР и других институтов Академии используют эти





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