Текст подпрограммы и версий
adg1r_p.zip   adg1e_p.zip   adg1c_p.zip
Тексты тестовых примеров
tadg1r_p.zip   tadg1e_p.zip   tadg1c_p.zip

Подпрограмма:  ADG1R (модуль ADG1R_p)

Назначение

Вычисление определителя матрицы методом Гаусса с выбором ведущего элемента по столбцу.

Математическое описание

Для матрицы А выполняется разложение вида Q*А = L*U, где Q - матрица перестановок, L, U - треугольные матрицы и матрица L имеет единичные диагональные элементы. Определитель матрицы А вычисляется как произведение определителя матрицы Q и диагональных элементов матрицы U и записывается в виде:

     det A = D1*2D2,   где   0.0625 ≤ D1 < 1.

В.В.Воеводин, Р.В.Петрина, Комплекс алгоритмов, основанных на преобразованиях Гаусса, в пакете линейной алгебры, Сб. "Численный анализ на ФОPТPАНе", вып.3, Изд-во МГУ, 1973.

Использование

procedure ADG1R(var A :Array of Real; var D1 :Real; var D2 :Integer;
                var S :Array of Integer; var N :Integer); 

Параметры

A - вещественный двумерный массив размера N на N, в котором задается исходная матрица;
D1 - вещественная переменная, в которой запоминается мантисса определителя;
D2 - целая переменная, в которой запоминается двоичный порядок определителя;
IS - целый вектор длины N, используемый как рабочий;
N - заданный порядок исходной матрицы (тип: целый).

Версии

ADG1E - вычисление определителя матрицы, заданной с расширенной (Extended) точностью, методом Гаусса с выбором ведущего элемента по столбцу.
ADG1C - вычисление определителя комплексной матрицы C с выбором ведущего элемента по столбцу.

Вызываемые подпрограммы

AFG1R - треугольное разложение матрицы методом Гаусса с выбором ведущего элемента по столбцу.
AFG1E - треугольное разложение матрицы, заданной с расширенной (Extended) точностью, методом Гаусса с выбором ведущего элемента по столбцу.
AFG1C - треугольное разложение комплексной матрицы методом Гаусса с выбором ведущего элемента по столбцу.

Замечания по использованию

  1. 

В подпрограмме АDG1E массив А и переменная D1 имеют тип Extended.

  2.  В подпрограмме АDG1С массив А и переменная D1 имеют тип Сomplex.

Пример использования

Unit TADG1R_p;
interface
uses
SysUtils, Math, { Delphi }
LStruct, Lfunc, UtRes_p, ADG1R_p;

function TADG1R: String; 

implementation

function TADG1R: String;
var
D2,N :Integer;
D1 :Real;
S :Array [0..3] of Integer;
const
A :АRRay [0..15] of Real = ( 5.0,7.0,6.0,5.0,7.0,10.0,8.0,7.0,6.0,8.0,10.0,
9.0,5.0,7.0,9.0,10.0 );
begin
Result := '';
N := 4;
ADG1R(A,D1,D2,S,N);
Result := Result + Format('%s',['  D1=']);
Result := Result + Format('%20.16f',[D1]) + #$0D#$0A;
Result := Result + Format('%s',['  D2=']);
Result := Result + Format('%3d',[D2]) + #$0D#$0A;
UtRes('TADG1R',Result);  { вывод результатов в файл TADG1R.res }
exit;
end;

end.


Результат:

         D1 = 0.0625,  D2 = 4,
 т.е.  det A = 0.0625*24 = 1.