Текст подпрограммы и версий
aig5r_p.zip  aig5e_p.zip 
Тексты тестовых примеров
taig5r_p.zip  taig5e_p.zip 

Подпрограмма:  AIG5R (модуль AIG5R_p)

Назначение

Модификация обратной матрицы после изменения одного элемента исходной матрицы

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

Пусть известна обратная матрица AI = A - 1, где A - вещественная квадратная матрица порядка N. Пусть матрица AM получена из матрицы A увеличением элемента  ai j на величину D. Подпрограмма AIG5R выполняет такую модификацию матрицы AI, что в результате формируется матрица AIM = AM - 1 без непосредственного обращения матрицы AM.

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

procedure AIG5R(var AI :Array of Real; N :Integer; I :Integer;
                J :Integer; D :Real; var AIM :Array of Real); 

Параметры

AI - вещественный двумерный массив размеров N на N, в котором задается известная матрица, обратная к исходной матрице A;
N - порядок матрицы AI (тип: целый);
I, J - заданные номера строки и столбца элемента  ai j  исходной матрицы A, значение которого увеличивается на величину D (тип: целый);
D - заданное значение константы, на которую увеличивается элемент  ai j  (тип: вещественный);
AIM - вещественный двумерный массив размеров N на N, в котором помещается модифицированная обратная матрица.

Версии

AIG5E - модификация обратной матрицы после изменения одного элемента исходной матрицы в режиме расширенной (Extended) точности; при этом параметры AI, D и AIM должны иметь тип Extended.

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

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

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

Unit TAIG5R_p;
interface
uses
SysUtils, Math, { Delphi }
LStruct, Lfunc, UtRes_p, AIG5R_p;

function TAIG5R: String; 

implementation

function TAIG5R: String;
var
N,I,J,_i :Integer;
D :Real;
AI :Array [0..3] of Real;
AIM :Array [0..3] of Real;
begin
Result := '';
AI[0] := -2.0;   { прототип оператора DАТА на FORTRANе }
AI[2] := 1.0;   
AI[1] := 1.5;   
AI[3] := -0.5;  
N := 2;
I := 1;
J := 2;
D := 3.0;
AIG5R(AI,N,I,J,D,AIM);
Result := Result + #$0D#$0A;
for _i:=0 to 3 do
 begin
  Result := Result + Format('%13.6f ',[AIM[_i]]);
  if ( ((_i+1) mod 4)=0 )
   then Result := Result + #$0D#$0A;
 end;
Result := Result + #$0D#$0A;
UtRes('TAIG5R',Result);  { вывод результатов в файл TAIG5R.res }
exit;
end;

end.


Результаты: 

                       |   -0.363636     0.454545    |
    AIM    =     |
                       |    0.272727    -0.0909091  |