Главная страница Алгоритмы [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] [ 44 ] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] Райе [231, с. 325-328] недавно заметил, что если метод ортогона-лизации Грама - Шмидта теряет ортогональность, то он дает почти одинаковые векторы. Однако алгоритм Г27 включает в себя механизм коррекции, который дает вторую и лучшую оценку истинного значения ортонормального вектора, если известно значение, полученное -по Граму - Шмидту. Поэтому, несмотря на то, что в программу были включены, модификации, предложенные Райсом, никакой существенной разницы в затратах машинного времени .мы не ва метили. Замечание к алгоритму 142 М. И. Агеев, -Москва, май 1971 г. В выпуске 29 сборника «Программы и алгоритмы» 61] опубли-вана «Модификация алгоритма 142» О. Г. Фаянса. Подтверждение к алгоритму 147 Р. Парсонс (Parsons R. G. «САСМ», 1969, № 12) • Кроме ошибок, замеченных Г. Тачером (Thacher Н. С. «САСМ», 1963, № 4), были еще обнаружены и следующие погрешности. 1. В пояснительном тексте алгоритма фраза, начинающаяся со слов «Для х<-1 используется...», должна иметь вид «Для -х<-1 используется соотношение -х)=¥\{х-l)-l-nctg(n л;)». 2. ;В конце пояснительного текста к алгоритму нужно добавить следующее: «Заметим, что psif{x)=4{x)-это iip{x+l), как она определена, например, в работе Е. Янке, Ф. Эмде и Ф. Леша [241]». 3. Оператор, помещающийся перед меткой pos, нужно заменить* Г на оператор psi: = pi X cos(pi X x)/sin(pi X х); Шта ошибка приводит к неверным результатам при х<-1. W - 4. Аргументы tan и In нужно исключить из списка -формальных параметров, а «геа1 procedure tan, ln;» - из совокупности спецификаций заголовка процедуры. После внесения этих поправок, так же как и поправок Г. Тачера, процедура была переведена на расширенный АЛГОЛ и проверена на стенфордской машине В 5500. Значения ps{x,a) были табулированы для х=-2,9(0.1)5.0 при а=в.О. Результаты не отличались от табличных значений больше чем на 1/(2400). Подтверждение и замечания к алгоритму 147а М. И. Агеев, Ю. И. Марков, Москва, ноябрь 1970 В процедуру psif алгоритма 147а была внесена поправка 3 вы-" шеприведенного «Подтверждения к алгоритму 147» Г. Роналда; затем эта процедура была транслирована в системе ТА-1М (М-220) * В алгоритме .147а заменять перед меткой pos нужно два оператора. В данном переводе используются обозначения алгоритма 147а, в частности, pei заменено на pi. Ошибки, указываемые Г. Ро-налдом в п. 2 и 4 его «Подтверждения», были уже ранее замечены авторами выпусков я учтены при составлении алгоритма 147а. (Прим. ред.) для а=3 и х=-1.5,-0.5,0,0.5,1,2. Результаты трансляции для а:= =0,0.5,1 полностью совпали с данными табл. 18 выпуска «Алгоритмы (101-150)» [26]. Результаты трансляции для а;=-1.5,-0.5,2 проверялись с помощью рекуррентных соотношений 4lJ(-fl)=t()+lK t(-l)=*()-l/(-l),- приведенных в работе Е. Янке и др. {32, с. 57]*, и оказались верными во всех значащих цифрах. Полезно заметить, что для расширения области применимости алгоритма 147а в трансляторах с сокращенного АЛГОЛ-60 [19] иул?-но специфицировать параметр psi, т. е. заменить real х,а; на real x,a,psi; Нужно заметить также, что ошибка алгоритма 147, заключающаяся в отсутствии спецификации параметров х и а, вызываемых по значению, не была указана ни Г. Тачером, ни Г. Роналдом. Подтверзкдение к алгоритму 165 -- ТГ Фаркас ib а г к а s 1. «САСМ», 1S69, № 1) В алгоритме 165 была обнаружена одна опечатка и одна семантическая ошибка. 1. iB списке формальных .параметров вместо ml должно быть ml.**. 2. Второй оператор тела процедуры a: = fact: = l; должен быть заменен на операторы fact:=l; а: = 1; поскольку fact и а разных типов. Алгоритм 465 был переведен на ФОРТРАН IV для машины IBM 7094-11, в которой числа имеют мантиссу из 27 двоичных значащих цифр (около восьми десятичных значащих цифр). (Посколысу наша программа, вычисляющая значение функции sqrt, имеет относительную погрешность 0.75,0-8, то параметр tol (в алгоритме 165а параметр eps ~ Прим ред.) был выбран равным Зю-8. Значения К к Е были вычислены для ml =0.01 (О 01) 1.0, и результаты сравнивались с таблицами М. Абрамовича и И. Стегуна {81]. Значения Е для ml =0.01 отличались от контрольных двумя единицами последней цифры, для всех других значений ml абсолютная погрешность не превышала одной единицы в последней цифре. Для вычисления 100 значений расходовалось время 0.1с. Замечание к алгоритму 170 а ;В. д. Сычев; Ю. И. Марков, Москва, сентябрь 1971 В процедуре polymatrix [27] необходимы две поправки. * Первая из этих формул приведена в работе Е. Янке и др-[32] с опечаткой. [Прим. ред.) ** Эта опечатка была уже замечена ранее авторами выпусков и исправлена при составлении алгоритма 165а. [Прим. ред.) 1. На странице 63 (4-6-я стр. сверху) вместо begin j3:=i; if matp,] 1]<0 then go to exit; if mat (!,]11>0 then j9:=j9-f 1 ;олжны быть begin , if matj;i,jl]<0 then go to exit; = if mat[i,j 1J>0 then begin ]"9:=j9+l; j3: = i end 2. Ha странице 63 (2-я стр. снизу) вместо if matUl,jl]=7bOAmat[i,jl]<mat:01.il] then - .должно быть- if matlJl,jl]=5tOAmatli,jl}>mat[jl,jl] then Исправленный вариант этой процедуры использовался в многочисленных расчетах и всегда давал верные результаты. В частности был решен пример для 1 1-х 1-4-х 1 т. е. для р = 2, /2=1, /я = / = 3 и
ЯТолучен результат„с=-(0,0,1). В этом случае массив а формировался-следующим образом: Gjli = 0121 =0211 = 212 = 221= 1; flll2 = ail3 = fll23 = a213 = *222=«22S = 0; Ui22-l. Замечание К алгоритму 178 Ф. Томлин, Л. Смит (Т о m 1 i п F. К., S m i t h L. В. «САСМ», 1969, № И) Алгоритм 178 в том виде, как он был модифицирован М. Беллом и М. Пайком (Bell М., Pike М. С. «САСМ», 1966, № 9), не всегда дает определенный минимум. Кроме того, в тот момент, когда» количество вычислений функции больше или равно значению тах и размер шага больше delta, максимально допустимое количество вычислений функции почти всегда оказывается уже превышенным. Наконец, метка 3 в алгоритме 178 пе используется. Для получения определенного минимума тест проверки количества вычислений нужно переместить к той точке, где достигается минимум. Р. Де-Вогелер в «Замечании к алгоритму 178» («САСМ», 1968, № 7. Русский перевод :в (28]) правильно отметил, что выход из-процедуры .происходит не так, как это определено в пояснительном тексте к ней, и дал поправки, которые действительно приводят к тому, что процедура заканчивается, когда количество вычислений функции превосходит заданный предел (а не позже на некоторое количество вычислений). Однако думается, что решение этой задачи, предложенное Де-Вогелером, приводит к излишним проверкам. Следовательно, тест должен выполняться после пробного продвижения, как это было у М. Белла и М. Пайка, но он должен также выполняться и тогда, когда уменьшается размер шага. Такой метод. [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] [ 44 ] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] 0.0177 |