Главная страница Алгоритмы [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.0137 |