Главная страница  Алгоритмы 

[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

Время, мин

Г, (алгоритм 41)

(алгоритм 269)

10 15 20 25 30

0.87 2.77 6.47 12.47 21.37

0.78 2.18 4.78 8.99 14.98

По графику зависимости 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.0205