|
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.su/lib_na/cat/ai_htm_p/aig5r_p.htm
Дата изменения: Mon Nov 9 10:45:06 2015 Дата индексирования: Sun Apr 10 02:36:36 2016 Кодировка: Windows-1251 |
|
Текст подпрограммы и версий aig5r_p.zip aig5e_p.zip |
Тексты тестовых примеров taig5r_p.zip taig5e_p.zip |
Модификация обратной матрицы после изменения одного элемента исходной матрицы
Пусть известна обратная матрица 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 |