Текст подпрограммы и версий
adh0r_p.zip   adh0e_p.zip   adh0c_p.zip
Тексты тестовых примеров
tadh0r_p.zip   tadh0e_p.zip   tadh0c_p.zip

Подпрограмма:  ADH0R (модуль ADH0R_p)

Назначение

Вычисление определителя симметричной матрицы модифицированным методом квадратного корня (модифицированным методом Холецкого).

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

Симметричная матрица А раскладывается в произведение А = UTDU, где U - верхняя треугольная матрица, на главной диагонали которой стоят единицы, D - диагональная матрица, с помощью модифицированного метода квадратного корня. Предпологается, что главные миноры матрицы А отличны от нуля. Определитель матрицы А вычисляется как определитель матрицы D и записывается в виде:

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

R.S.Мartin, G.Рeters, J.Н.Wilkinson, Symmetric Decomposition of a Рositive Definite Мatrix, Numer. Матн, 7, 1965.

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

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

Параметры

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

Версии

ADH0E - вычисление определителя симметричной матрицы, заданной с расширенной (Extended) точностью, модифицированным методом квадратного корня.
ADH0C - вычисление определителя эрмитовой матрицы модифицированным методом квадратного корня.

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

AFH0R - треугольное разложение неособенной симметричной матрицы модифицированным методом квадратного корня.
AFH0E - треугольное разложение неособенной симметричной матрицы, заданной с расширенной (Extended) точностью, модифицированным методом квадратного корня.
AFH0C - треугольное разложение эрмитовой матрицы модифицированным методом квадратного корня.

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

  1. 

В подпрограмме АDН0E параметры А, D1, S имеют тип Extended.

  2.  В подпрограмме АDН0С параметр А имеет тип Сomplex.

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

Unit TADH0R_p;
interface
uses
SysUtils, Math, { Delphi }
LStruct, Lfunc, UtRes_p, ADH0R_p;

function TADH0R: String; 

implementation

function TADH0R: String;
var
D2,I,J,N :Integer;
D1 :Real;
A :Array [0..24] of Real;
S :Array [0..4] of Real;
labЕL
_3;
begin
Result := '';
for I:=1 to 5 do
 begin
  for J:=I to 5 do
   begin
    A[(I-1)+(J-1)*5] := I;
_3:
    A[(J-1)+(I-1)*5] := I;
   end;
 end;
N := 5;
ADH0R(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('TADH0R',Result);  { вывод результатов в файл TADH0R.res }
exit;
end;

end.


Результат:

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