Текст подпрограммы и версий aig1r_p.zip aig1e_p.zip aig1c_p.zip |
Тексты тестовых примеров taig1r_p.zip taig1e_p.zip taig1c_p.zip |
Обращение вещественной матрицы методом Жордана с выбором ведущего элемента по столбцу.
Заданная матрица А N - го порядка приводится к единичной матрице Е последовательностью элементарных преобразований Жордана L1, L2, ..., LN и матрицей перестановок Р так, что
LNLN-1 ... L1PA = E,
при этом А-1 = LNLN-1 ... L1Р. Матрица Р осуществляет перестановку строк матрицы А и обеспечивает стратегию выбора ведущего элемента по столбцам.
В.В.Воеводин, Р.В.Петрина, Комплекс алгоритмов, основанных на преобразованиях типа Гаусса, в пакете линейной алгебры, Сб. "Численный анализ на ФОPТPАНе", вып.3, Изд-во МГУ, 1973.
procedure AIG1R(var A :Array of Real; var S :Array of Integer; N :Integer);
Параметры
A - | двумерный N на N массив, в котором задается исходная матрица; по окончании работы подпрограммы в массиве А запоминается вычисленная обратная матрица (тип: вещественный); |
S - | одномерный массив длины N используемый подпрограммой как рабочий (тип: целый); |
N - | заданный порядок матрицы (тип: целый). |
Версии
AIG1E - | обращение матрицы, заданной с расширенной (Extended) точностью, методом Жордана с выбором ведущего элемента по столбцу. |
AIG1C - | обращение комплексной матрицы методом Жордана с выбором ведущего элемента по столбцу. |
Вызываемые подпрограммы : нет
Замечания по использованию
1. |
В подпрограмме АIG1E массив А имеет тип External. | |
2. | В подпрограмме АIG1С массив А имеет тип Сomplex. |
Unit TAIG1R_p; interface uses SysUtils, Math, { Delphi } LStruct, Lfunc, AIG1R_p; function TAIG1R: String; implementation function TAIG1R: String; var _i :Integer; S :Array [0..3] of Integer; const A1 :Array [0..15] of Real = ( 7.9,8.5,4.3,3.2,5.6,-4.8,4.2,-1.4,5.7,0.8,-3.2, -8.9,-7.2,3.5,9.3,3.3 ); begin Result := ''; AIG1R(A1,S,4); Result := Result + #$0D#$0A; for _i:=0 to 15 do begin Result := Result + Format('%15.5f ',[A1[_i]]); if ( ((_i+1) mod 4)=0 ) then Result := Result + #$0D#$0A; end; Result := Result + #$0D#$0A; exit; end; end. Результат: | 0.0505 0.0542 0.0062 0.0350 | | 0.0518 -0.0846 0.0721 -0.0003 | A-1 = | -0.0084 0.0432 0.0202 -0.1211 | | -0.0497 0.0279 0.0790 -0.0577 |