Текст подпрограммы и версий 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