![]() |
Главная страница Алгоритмы [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] Перед трансляцией в алгоритм 29а было внесено исправление указанное в «Приложении 1» к выпуску «Алгоритмы (151-200)» а (В алгоритм 77а - модификация, которая указана в «Замечании к алгоритму 77а» Э. М. Каплинского, приведенном в данном выпуске (см. ниже). Алгоритм 37а был транслирован для того же примера, который использовал Г. Тачер в его «Подтверждении к алгоритму 37» [24, с. 69] и для eps=io-4. Были получены результаты п-3; eps=0.67io 3- «=(0.9994825908, 1.016111609, 0.4230086482, 0.2791072393). Сумма компонент выходного значения вектора с, которая должна аппроксимировать число е, здесь равна 2.7177100873. Расхождение полученных результатов с результатами Г. Тачера объясняется, по-видимому ошибкой Г. Тачера, указанной в «Подтверждении к алгоритму 27» Дж. Бриджеса [24, с. 70], и погрешностями использованной Г. Таче-" ром машинной арифметики. В алгоритме 122а была замечена одна опечатка. Вместо procedure tridiag (n) dataresult: (a) result (u); должно быть - ; procedure tridiag (n) dataresult: (a) result: (u); В алгоритме 128a в заголовке процедуры fourier вместо -----value r.w.n:. должно быть value w,n; В алгоритме 134а в пояснительном тексте [26, с. 65, 1-я стр. снизу] вместо фразы «вычисляет парные п коэффициентов b[il ряда» должна быть фраза «вычисляет первые п коэффициентов ЩЦ ряда>. Подтверждение к алгоритмам ЗОа, 43а, 53а, 157а, 160а, 170а, 190а, 195а Шиншинова 3. Д., Москва, .май 1972 Вышеперечисленные алгоритмы были транслированы в системе БЭСМ-АЛ ГОЛ и для примеров, приведенных в соответствующих «Свидетельствах», дали результаты, не отличающиеся от ранее полученных более чем на одну единицу последней значащей цифры. Предварительно в алгоритм ЗОа были внесены поправки, указанные в «Замечании и подтверждении к алгоритму ЗОа» Г. В. Пеледова [27, с. 177], в алгоритм 43а - изменения, предложенные в «Подтверждении к алгоритму 43а» И. В. Григорьева (см. ниже), а в алгоритм 170а - поправки, указанные в «Замечании к алгоритму 170а» В. Д. Сычева и Ю. И. Маркова (см. ниже). Подтверждение к алгоритмам 41 и 269* А. Бергсон (В е г g s о п А. «САСМ», 1966, № 9) Алгоритмы 41 и 269 были запрограммированы на языке АЛГОЛ-803 и прошли на машине National-Elliott 803 (с плавающей запятой). Были сделаны следующие изменения. 1. К обеим процедурам было добавлено value п; * Этот материал не относится к алгоритму 41а, поскольку последний существенно отличается от алгоритма 41. {Прим. ред.) 2. Поскольку процедура EQUILIBRATE в алгоритме 269 вызывается только один раз, то она не была оформлена как процедура, а была записана в виде операторов тела процедуры determinant. Для определителей порядка п были зарегистрированы следующие значения времени счета (исключая время ввода и вывода) при использовании одной и той же ведущей программы и одних и тех же исходных данных (см, табл. 25). Таблица 25
По графику зависимости 1п{Т,) от 1п{п) было найдено, что Т± = =0.00104п2.92 Аналогично, 72=Ь.001БЗи2.7о По графику зависимости Tl от было выявлено, что алгоритм 269 на.30.6% быстрее алгоритма 41, но последний требует меньше памяти. Замечание к алгоритму 77а Э. М. Каплинский, Москва, март 1970 j; Заголовок цикла с меткой dagr:i> 25, с. 68], Б-я стр. сверху}-If должен иметь вид ! lagr: for j:=jl,jl+l step 1 until j2 do \ Аналогичный недочет содержался и в исходном алгоритме 77 *. i- Без этой модификации алгоритм 77а давал неверный результат при интегрировании функции по двум значениям аргумента.. .На результатах дифференцирования и интерполяции эта поправка не отражается. i Замечание к алгоритму 103а Э. М. Каплинский, Москва, март 1970 Первый оператор тела процедуры simpson нужно заменить на int: = i:=0; m:=n:=0; поскольку в нем участвуют переменные разных типов **. На с. 8 после оператора a2:=hX(g2+4Xg3+g4); * С этой поправкой алгоритм 77а использовался для многочисленных расчетов И. В. Григорьевым (Москва) и всегда давал правильные результаты. (Прим. ред.) ** Позднее для интегрирования функций по Симпсону были опубликованы более совершенные алгоритмы, в частности, алгоритм 182а. Таким образом, алгоритм 103а нужно считать устаревшим. (Прим. ред.) нужно добавить оператор - . if al+a2=0 then go to signal 103; BO избежание деления на нуль в случае, когда р(х)=0 для любых х. Подтверждение к алгоритму 127 * Ян Барродел (Barrodale Ian. «САСМ», 1970, № 2) Алгоритм 127 содержит следующие ошибки. 1. Символ begin должен находиться между 6-ft и 7-к строками т. е. сразу после спецификаций integer и перед описанием переключателя. Символ begin, следующий за комментарием и предшествующий описанию integer, нужно убрать. 2. В вышеуказанном описании типа integer вместо идентификаторов mui, elzl, elz2 должны быть идентификаторы nui, e\z\, el22 соответственно. 3. Часть оператора, помеченного меткой atl, имеющая вид .У(2,/): = 2(1,/), должна иметь вид Д2,/]: = 2[1, /]. 4. После оператора с меткой box8d, между end и go to box8a должна быть точка с запятой. 5. Формальный .параметр fn не определен и в комментарии не „дашиыаетгя, В процедуре этот параметр появляется между меткой ЬохВс и меткой boxSd. Если положить fn равным п, то массив ЕР будет содержать объективные оценки т стандартных отклонений. Нам не требовалось обобщенного определения скалярного произведения (221, с. Э48]-, но часто было нужно большое значение п <число компонент вектора). Поэтому мы заменили массив Wl : п,\ : п\ на массив Щ1 : п\; это приводит к необходимости удаления элемента тыЗ переключательного списка в восьмой строке процедуры ORTHO, а также "изменения строки перед оператором с меткой тиЪ и удаления трех строк, начинающихся оператором с меткой тиЪ. Следовательно, та часть процедуры ORTHO, которая появляется в шести строках, начинающихся оператором с меткой тий и заканчивающихся оператором с меткой 6оа:7, будет иметь вид mu2: for i:= 1 step 1 until n do PKi[i]:=X[k, i]X Wfi]; Ъох7: go to om[omil; После вышеуказанных модификаций и поправок программа ус- пешно прошла на машине English Electric KDF9 с использованием уитстоиского и кидсгровского АЛГОЛ-траисляторов, входные языки которых являются правильными подмножествами языка АЛГОЛ-60. Некоторые из задач, использованных для проверки алгоритма 127, относились к теории аппроксимации в приложении к краевым задачам эллиптического типа. Для одной из таких задач использовались функции линейной аппроксимации, в которых больтпинство коэффициентов наилучшей аппроксимации .равны нулю. Вычисленные значения стандартных отклонений иногда отличались более чем иа 10% как- от истинных значений, так и от объективных оценок. Мы решали также и проблему Дирихле, описанную Девнсом в вышеупомянутой его работе. Значения коэффициентов, полученные, для аппроксимирующей функции, только в трех десятичных цифрах совпали со значениями, данными в этой работе Девиса. Все наши расчеты велись с одинарной точностью в арифметике с плавающей запятой. * В выпуске «Алгоритмы (101-150)» (26] этот алгоритм опубликован не был. (Прим. ред.) [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.0478 |
|