|
Текст подпрограммы и версий aih3r_p.zip aih3e_p.zip |
Тексты тестовых примеров taih3r_p.zip taih3e_p.zip |
Обращение неособенной симметричной матрицы с компактной формой представления с использованием метода квадратного корня.
Подпрограмма AIH3R вычисляет матрицу В, записанную в компактной форме, такую что А*В = Е, где А - исходная неособенная симметричная матрица порядка N, заданная в компактной форме, а Е - единичная матрица. Используется метод квадратного корня. Матрица B является симметричной.
Вunch J.R., Рarlett В.N., Direct methods for solving symmetric indefinite systems of linear equations, SIАМ J. Numer. Аnal.,Vol.8, No.4, December 1971.
procedure AIH3R(var A :Array of Real; var AINV :Array of Real;
N :Integer; IR :Array of Integer;
var R :Array of Real; var IERR :Integer);
Параметры
| A - | вещественный вектор размерности N на (N+1)/2, который содержит исходную матрицу, записанную в компактной форме; |
| AINV - | вещественный вектор размерности N на (N+1)/2, который содержит обратную матрицу В, записанную в компактной форме; |
| N - | порядок заданной матрицы А (тип: целый); |
| IR - | целый вектор длины 2*N, используемый как рабочий массив; |
| R - | вещественный вектор длины N, используемый как рабочий массив; |
| IERR - | целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы: при этом: |
| IЕRR=65 - | если матрица является сингулярной. |
Версии
| AIH3E - | обращение неособенной симметричной матрицы с компактной формой представления (используется метод квадратного корня) с расширенной (Extended) точностью. |
Вызываемые подпрограммы
| AFH3R - | подпрограмма треугольного разложения неособенной симметричной матрицы, заданной в компактной форме, методом квадратного корня. |
| AFH3E - | подпрограмма треугольного разложения неособенной симметричной матрицы, заданной в компактной форме, методом квадратного корня с расширенной (Extended) точностью. |
| ASH3R - | подпрограмма решения системы с неособенной симметричной матрицей в компактной форме представления методом квадратного корня. |
| ASH3E - | подпрограмма решения системы с неособенной симметричной матрицей в компактной форме представления методом квадратного корня с расширенной (Extended) точностью. |
| UTAI10 - | подпрограмма печати диагностических сообщений при работе подпрограммы АIН3R. |
| UTAI11 - | подпрограмма печати диагностических сообщений при работе подпрограммы АIН3E. |
Замечания по использованию
|
При работе подпрограмм АIН3R и АIН3E исходная матрица А не сохраняется. На место матрицы А помещается ее треугольное разложение, полученное методом квадратного корня. Для подпрограммы АIН3E параметры А, АINV должны иметь тип Extended. |
Unit TAIH3R_p;
interface
uses
SysUtils, Math, { Delphi }
LStruct, Lfunc, UtRes_p, AIH3R_p;
function TAIH3R: String;
implementation
function TAIH3R: String;
var
N,_i,IERR :Integer;
AINV :Array [0..5] of 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;
AIH3R(A,AINV,N,RI,R,IERR);
Result := Result + #$0D#$0A;
for _i:=0 to 5 do
begin
Result := Result + Format('%20.12f ',[AINV[_i]]);
if ( ((_i+1) mod 3)=0 )
then Result := Result + #$0D#$0A;
end;
Result := Result + #$0D#$0A;
Result := Result + Format('%5d ',[IERR]) + #$0D#$0A;
UtRes('TAIH3R',Result); { вывод рЕЗУЛЬТАТов в файл TAIH3R.res }
end;
end.
Результаты:
AINV = (-0.51, 0.56, -0.82, 0.41, -0.05, -0.13) ,
IERR = 0