|
Текст подпрограммы и версий adh3r_p.zip adh3e_p.zip adh3c_p.zip ads3c_p.zip |
Тексты тестовых примеров tadh3r_p.zip tadh3e_p.zip tadh3c_p.zip tads3c_p.zip |
Вычисление определителя симметричной матрицы, заданной в компактной форме, с использованием метода квадратного корня (метода Холецкого).
Симметричная матрица 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