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

[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]

вырожденной матрицы указывается значением 5=1

после выполнения процедуры.

procedure invert(matr,n)result:.(matrl,s);

value n; integer n,s; array matr, matrl;

begin real t; integer i,j,k,m; array aP:n,l:2Xn];

comment наращивание MaTpHHH"matr единичной матрицей;

m:=2xn; s: = 0; for 1: = 1 step 1 until n do for j:= 1 step 1 until m do

ati,j]:= if jn then matrpj] else if j = n + i then 1.0 else 0.0; comment начало обращения; for i: = 1 step 1 until n do begin k: = i; testO: if aik,i]=0 then

- begin s: = Tr

if k<n then k:=k + l else go to fin; go to testO end; Sfs==lthen for j:= 1 step 1 until m do begin t: = alk,j]; a[k,j]: = a[i,j]; ali,j]:=:t end i;

for j: = m step -1 until i do ai,j]: = 4i.j]MU]; . for k: = 1 step 1 until n do if k=#i then

for j: = m step -1 until i do alk,j]: = a(k,j]-a[i,j]Xaik,il

end i;

for i:= 1 step 1 until n do

for j:= 1 step 1 until n do matrl i[i,j]: = afi,j + n]-, s:=0; fin: end invert;

Свидетельство к алгоритму 426

Процедура invert алгоритма 426 является стереотипным переизданием процедуры invert алгоритма 42а.

Алгоритм 426 был транслирован на машине М-220 в системе ТА-1М и для примера, приведенного в нижеследующем «Подтверждении» А. Кнапна и П. Шамана, дал .результат, полностью совпавший с точным значением обращенной матрицы Гильберта четвертого порядка,



приведенной в этом же «Подтверждении». Следовательно, результат был гораздо более точным, чем результат, полученный А. Кнаппом и П. Шаманом. Элементы исходной матрицы Гильберта формировались по формуле

h[i,j]=mi+j-i).

Свидетельство к алгоритму 42а

Алгоритм 42а получен в результате исправления, сокращения и ординарной переработки алгоритма 42 (Wood Т. С. «САСМ», 1961, № 4). Алгоритм проверен ручным счетом для Матрицы второго порядка.

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

А. В. Кнапп и П. Шаман ( К п а р р А. W., Shaman Р. «САСМ», 1961, № 111)

Процедура invert была запрограммирована вручную для машины LGP-30, использующей машинный язык и систему 24.0 интерпретации плавающей запятой с 24 значащими разрядами для дробной части числа и пятью разрядами для экспоненты. Были найдены необходимыми следующие изменения... *.

Процедура invert дала следующие результаты.

Обращалась матрица размера 17Х17, элементы которой были целыми, меньшими 10 но абсолютной величине. После перемножения прямой и обращенной матриц было найдено, что наибольший недиагональный элемент в произведении равен -0.00003. Большинство недиагональ-ных элементов по абсолютной величине было меньше .0.00001..

\ Процедура invert была проверена с использованием конечного сегмента матрицы Гильберта. Для матрицы размера 4X4 получены следующие результаты:

16.005 -120.052 240.125 -140.082 -120.052 1200.584 -2701.407 1680.917 240.126 -2701.411 6483.401 -4202.217 -140.082 1680.920 -4202.219 2801.416 Точная обращенная матрица:

16 -120 240 -140 > -120 1200 -2700 1680

240 -2700 6480 -4200

-140 1680 -4200 2800

к • Указывается несколько поправок к алгоритму 42. (Прим. ред.)



процедура invert была также запрограммирована для машины LGP-30 на машинном языке с расширенной интерпретирующей системой 24.1. Эта система, использующая 30 значащих разрядов для дробной части, дала следующие результаты при обращении данной матрицы Гильберта размера 4X4;

16.000 -120.001 240.001 -140.001

-120.001 1200.006 -2700.015 1680.010

240.001 -2700.016 6480.037 -4200.024

-140.001 .1680.010 -4200.024 2800.016

Программа, разработанная для интерпретирующей системы 24.0, успешно обратила матрицу, состоящую аз матриц но главной диагонали и нулей в остальных местах.

Замечание к алгоритму 42 П. Наур (Naur Р. «САСМ», 1963, № 1)

Процедура invert не может быть рекомендована*, поскольку не делает поиска главного элемента и, следовательно, дает малую точность. Это подтверждается цифрами, приведенными Киаппом и Шаманом в их «Подтверждении» («САСМ», 1961, № И). Результаты,-полученные ими при использовании 30 значащих разрядов для дробной части, могут быть сравнены непосредственно с результатами, полученными при использовании процедуры INVERSION (алгоритм 120) и процедуры gjr для системы языка GIER-ALGOL (см. подтверждение ниже). Наибольшая ошибка в любом элементе, полученная при обращении сегмента 4x4 матрицы Гильберта, приводится ниже.

Индексы Ошибка элемента

3; 3 0.037 3; 3 0.0306 4; 3 0.00010

INVERT (Кнапп и Шаман)

INVERSION (см. «Подтверждение к алгоритму 120°)

Из-за этого основного дефекта алгоритма 42 нет ие-обходимости обсуждать его остальные свойства *.

* См. нижеследующую «Поправку к ранее опубликованным замечаниям...» (Прим. ред.)




[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.0107