Текст подпрограммы и версий
adh3r_p.zip   adh3e_p.zip   adh3c_p.zip   ads3c_p.zip
Тексты тестовых примеров
tadh3r_p.zip   tadh3e_p.zip   tadh3c_p.zip   tads3c_p.zip

Подпрограмма:  ADH3R (модуль ADH3R_p)

Назначение

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

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

Симметричная матрица  A, Записанная в компактной форме, раскладывается в произведение А = L D LT, где  L - треугольная матрица c единичными диагональными элементами, LT - транспонированная к ней, а  D - блочнодиагональная матрица с блоками порядка 1 или 2. Определитель матрицы  А вычисляется как определитель матрицы  D и записывается в виде:

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

Bunch J.R., Parlett B.N. Direct methods for solving symmetric indefinite systems of linear equations, SIAM J. Numer. Anal., v.8, No.4, 1971.

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

procedure ADH3R(var A :Array of Real; var D1 :Real; var D2 :Integer;
                var RI :Array of Integer; var R :Array of Real;
                var N :Integer); 

Параметры

A - вещественный вектор длины N * (N + 1)/2, содержащий исходную матрицу, записанную в компактной форме;
D1 - вещественная переменная, в которой запоминается мантисса определителя;
D2 - целая переменная, в которой запоминается двоичный порядок определителя;
IR - целый вектор длины 2N, в последних  N компонентах которого запоминаются порядки блоков матрицы  D;
R - вещественный вектор длины  N, используемый как рабочий;
N - заданный порядок исходной матрицы (тип: целый).

Версии

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

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

AFH3R - треугольное разложение вещественной симметричной матрицы, заданной в компактной форме, с использованием метода квадратного корня (метода Холецкого).
AFH3E - треугольное разложение вещественной симметричной матрицы, заданной с расширенной (Extended) точностью в компактной форме, с использованием метода квадратного корня (метода Холецкого).
AFH3C - треугольное разложение неособенной эрмитовой матрицы с компактной формой представления методом квадратного корня.
AFS3C - треугольное разложение неособенной симметричной комплексной матрицы с компактной формой представления методом квадратного корня.

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

  1. 

В подпрограмме АDН3E массивы  А, R и переменная D1 имеют тип Extended.

  2.  В подпрограммах АDН3С и АDS3C массив  А и переменная  D1 имеют тип Сomplex.

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

Unit TADH3R_p;
interface
uses
SysUtils, Math, { Delphi }
LStruct, Lfunc, UtRes_p, ADH3R_p;

function TADH3R: String; 

implementation

function TADH3R: String;
var
D2,N :Integer;
D1 :Real;
RI :Array [0..5] of Integer;
R :Array [0..2] of Real;
const
A :Array [0..5] of Real = ( 1.0,0.5,-1.0,3.0,2.0,1.0 );
begin
Result := '';
N := 3;
АDН3R(A,D1,D2,RI,R,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('TADH3R',Result);  { вывод результатов в файл TADH3R.res }
exit;
end;

end.


Результат:

       D1 = 0.609375 ,     D2 = 4 ,

  т.е.    det A  =  0.609375*24  =  9.75