![]() |
|
Главная Промышленная автоматика. Эти результаты лолностью совпали с контрольными значениями 1/Г(л:), взятыми из работы Е. Янке и др. [36, с. 54 и 59] и справочника Б. R Сегала и К- А. Семендяева {37, с. 450] (в последнем для значений I/Vt: и 1/21/"). Смотрите также «Замечание к алгоритмам 34, 54, 80, 221 и 291» М. Пайка и И. Хилла, помещенное в предыдущем выпуске [38] вслед за «Свидетельством к алгоритму 346». Свидетельство к алгоритму 80а Алгоритм 80а получен в результате исправления, сокращения и ординарной переработки алгоритма 80 (Holsten W. «САСМ», 1962, № 3). В алгоритме 80 были обнаружены следующие ошибки. 1. В процедуре RGR спецификация real procedure RGAM не нужна и должна быть вычеркнута. 2. В процедуре RGAM описания integer i; и real array В[0:13]; должны быть перенесены из совокупности спецификаций в начало блока тела процедуры. 3. В примечании к процедуре RGR формула (2) должна иметь такой вид, какой она имеет в описании алгоритма 80а (см. [1, с. 162]). 4. В процедуре RGR после первых двух условных операторов должны быть точки с запятой. Алгоритм 80а проверен с помощью транслятора ТА-1 для трех значений х и получены следующие результаты (табл. 18). Таблица 18
Свидетельство к алгоритмам 816, 826, 836 [G7] Алгоритмы 816, 826 и 836 не публикзются здесь, потому что правильность соответствующих им алгоритмов 81, 82 и 83 («САСМ», 1962, № 3), равно как и алгоритмов 81а, 82а, 83а, не была подтверждена ни в журнале «САСМ» ни в расчетах авторов данного выпуска. При новом просмотре алгоритма 81а в нем была обнаружена опечатка. На с. 67 [23] в 12-й строке снизу вместо CM:=true; должно быть Е: C{k]:=true; Кроме того, как алгоритм 81, так и алгоритм 81а содержит явную ошибку: «а с. 67 [23] в последней строке условие if prices[j]<;i then при /=1 не выполняется, так как вначале г = 0. Следовательно, встречающаяся далее переменная / остается неопределенной и последний в теле процедуры оператор цикла выполняться не может. АЛГОРИТМ 846 Вычисление интеграла по Симпсону от таблично заданной функции [D1] Процедура siml дает приближенное значение определенного интеграла непрерывной функции y=f{x) на интервале [а,Ь], заданной в виде таблицы значений уо, уи---, Уп с постоянным шагом, где п - четное число, Уй-Ца) и Уп-}{Ь). Вычисление ведется по формуле Симпсона f{x)dx -- {уо+Ау1+2у2+ ... +4уп-1+Уп). real procedure siml (n,a,b,y); value a,b,n; real a,b; integer n; array y; begin real s; integer i; s:=(y[0]-y[n])/2; for i:=2 step 2 until n do s: = s+2Xy[i-1]+уЫ; siml:=2X (b-a) Xs/(3xn) end siml; Свидетельство к алгоритму 846 Процедура siml алгоритма 846 получена в результате замены в процедуре sim алгоритма 84а оператора for i:=l step 2 until n-1 do s: = s+2Xyffl+yti+1]; на оператор for i:=2 step 2 until n do s: = s + 2Xy[i-1]+уИ; для ускорения выполнения процедуры. Алгоритм 846 был транслирован на машине М-220 в системе ТА-1М. С помощью .процедуры siml вычислялся интеграл I cosxdx=l. Результаты приведены ниже.
Свидетельство к алгоритму 84а Алгоритм 84а получен в результате ординарной переработки алгоритма 84 (Hennion Р. Е. «САСМ», 1962, № 4). Переводы «Замечания к алгоритму 84» («САСМ», 1962, № 8) и «Подтверждения к алгоритму 84» («САСМ», 1962, № И) здесь не приводятся, поскольку они не добавляют новой информации к нижеследующему «Подтверждению» А. П. Релфа. Подтверждение к алгоритму 84 А. П. Релф (Rel ph А. Р. «САСМ», 1962, № 7) Этот алгоритм был транслирован с помощью транслятора DEUCE ALGOL и дал удовлетворительные результаты без всяких исправлений. в примечании к алгоритму не оговаривается, что п должно быть обязательно четным. АЛГОРИТМ 856 Вычисление собственных значений и собственных векторов симметричной матрицы методом Якоби [F2] Процедура jacobi находит все собственные значения и собственные ©екторы данной симметричной матрицы с помощью модифи- цированного итерационного метода Якоби [171]. На выходе из процедуры k-й столбец матрицы s содержит -й из п собственных векторов данной матрицы, диагональный элемент d[k,k] массива а является соответствующим k-u собственным значением. Начальное значение массива s несущественно. Параметр rho (требуемая точность) введен в вышеуказанной работе, где дается детальная схема метода. Назначение параметра rho состоит в том, что итерация заканчивается, когда для каждого недиагонального элемента a[i,j] выполняется неравенство abs{a[i,j])<i{rholn)y,norm\, где norml является функцией только недиагональных элементов первоначальной матрицы. .procedure jacobi (n,rho) dataresult: (a)result: (s); value n,rho; real rho; integer n; array a,s; begin real norml,norm2,thr,mu,omega,sint,cost,intl,vl,v2,v3; integer i,j,p,q,ind; comment Формирование в массиве s единичной матрицы; for i: - 1 step 1 until n do for j: = l step 1 until i do if i=j then s[i,j]: = l else sli,j]: = s[j,i]:=0; comment Вычисление начальной нормы (norml), конечной нормы (norm2) и порога (thr); intl:-=0; for i:=2 step 1 until n do for j:=:l step 1 until i-l do intl: = intl--2Xa[i,j]t2; if intl =0 then go to fin; norml:=thr: = sqrt(intl); norm2:= (rho/n) Xnorml; ind:=0; main: thr: = thr/n; comment Здесь начинается обработка недиагональных элементов; mainl: for q:=:2 step 1 until n do for p: = l step 1 until q-1 do if abs(a[p,q])thr then begin ind: = l; vl:-a[p,p]; v2: = a[p,q]; v3: = a[q,q]; mu:=0.5X(vl-v3); omega: = if mu=0 then-1 else -sign(mu) Xv2/sqrt(v2f2-bmuf2); sint:=omega/sqrt(2X (l-l-sqrt(l-omegaf2))); cost:=sqrt(l-sintf2); for i: = l step 1 until n do 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 0.0018 |