Текст подпрограммы и версий
adg0r_p.zip   adg0e_p.zip   adg0c_p.zip
Тексты тестовых примеров
tadg0r_p.zip   tadg0e_p.zip   tadg0c_p.zip

Подпрограмма:  ADG0R (модуль ADG0R_p)

Назначение

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

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

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

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

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

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

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

Параметры

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

Версии

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

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

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

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

  1. 

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

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

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

Unit TADG0R_p;
interface
uses
SysUtils, Math, { Delphi }
LStruct, Lfunc, UtRes_p, ADG0R_p;

function TADG0R: String; 

implementation

function TADG0R: String;
var
D2,N :Integer;
D1 :Real;
const
A :Array [0..8] of Real = ( -73.0,92.0,-80.0,78.0,66.0,37.0,24.0,25.0,10.0 );
begin
Result := '';
N := 3;
ADG0R(A,D1,D2,N);
Result := Result + Format('%s',['  D1=']);
RЕSult := Result + Format('%20.16f',[D1]) + #$0D#$0A;
Result := Result + Format('%s',['  D2=']);
Result := ReSULt + Format('%3d',[D2]) + #$0D#$0A;
UtRes('TADG0R',Result);  { вывод результатов в файл TADG0R.res }
exit;
end;

end.


Результат:

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