Текст подпрограммы и версий
aih3r_p.zip  aih3e_p.zip 
Тексты тестовых примеров
taih3r_p.zip  taih3e_p.zip 

Подпрограмма:  AIH3R (модуль AIH3R_p)

Назначение

Обращение неособенной симметричной матрицы с компактной формой представления с использованием метода квадратного корня.

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

Подпрограмма 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