|
Текст подпрограммы и версий ammlr_p.zip , ammle_p.zip |
Тексты тестовых примеров tammlr_p.zip , tammle_p.zip |
Численное умножение обратной для нижней треугольной разреженной матрицы с единичной диагональю, заданной в формате RR (L) U, на прямоугольную разреженную матрицу, заданную в формате RR (C) U .
Форматы RR (L) U и RR (C) U приведены в описаниях подпрограмм AMMKR и AMTSR .
Данная операция эквивалентна следующей:
X = U -TB ,
где B - прямоугольная разреженная матрица с NR строками и NC столбцами в формате RR (C) U и U - верхняя треугольная матрица порядка NR в формате RR (L) U.
Алгоритм, реализованный в подпрограмме AMMLR, приведен в описании подпрограммы AMMKR .
С.Писсанецки. Технология разреженных матриц. - М.: Мир, 1988.
procedure AMMLR(var IUT :Array of Integer; var JUT :Array of Integer;
var UNT :Array of Real; var IB :Array of Integer;
var JB :Array of Integer; var BN :Array of Real;
NR :Integer; NC :Integer; var IX :Array of Integer;
var JX :Array of Integer; var XN :Array of Real;
var P :Array of Real);
Параметры
| IUT, JUT, - UNT | заданные портрет и ненулевые элементы матрицы UT в формате RR (L) U; |
| IB,JB,BN - | заданные портрет и ненулевые элементы матрицы B в формате RR (C) U; |
| NR - | заданный порядок матрицы UT и число строк матриц B и X (тип: целый); |
| NC - | заданное число столбцов матриц B и X (тип: целый); |
| IX, JX - | заданный портрет результирующей матрицы X в формате RR (C) U; |
| XN - | вещественный одномерный массив, содержащий вычисленные ненулевые элементы матрицы X в соответствии с заданным ее портретом IX и JX; |
| P - | вещественный одномерный массив длины NC, используемый в подпрограмме в качестве рабочего. |
Версии:
| AMMLE - | численное умножение обратной для нижней треугольной разреженной матрицы с единичной диагональю, заданной в формате RR (L) U, на прямоугольную разреженную матрицу, заданную в формате RR (C) U, в режиме расширенной (Extended) точности; при этом параметры UNT, BN, XN и P должны иметь тип Extended. |
Вызываемые подпрограммы: нет
Замечания по использованию: нет
Unit TAMMLR_p;
interface
uses
SysUtils, Math, { Delphi }
LStruct, Lfunc, UtRes_p, AMMLR_p;
function TAMMLR: String;
implementation
function TAMMLR: String;
var
NR,NC,_i :Integer;
P :Array [0..2] of Real;
XN :Array [0..7] of Real;
const
IUT :Array [0..4] of Integer = ( 1,1,1,2,4 );
JUT :Array [0..2] of Integer = ( 2,3,1 );
IB :Array [0..4] of Integer = ( 1,3,4,5,6 );
JB :Array [0..4] of Integer = ( 3,1,2,1,3 );
UNT :Array [0..2] of Real = ( 1.0,1.0,1.0 );
BN :Array [0..4] of Real = ( 1.0,1.0,1.0,1.0,1.0 );
IX :Array [0..4] of Integer = ( 1,3,4,6,9 );
JX :Array [0..7] of Integer = ( 3,1,2,1,2,3,1,2 );
begin
Result := '';
{ ТЕСТ ДЛЯ ПОДПРОГРАММЫ AMMLR }
NR := 4;
NC := 3;
AMMLR(IUT,JUT,UNT,IB,JB,BN,NR,NC,IX,JX,XN,P);
Result := Result + Format('%s',[' XN=']);
Result := Result + #$0D#$0A;
for _i:=0 to 7 do
begin
Result := Result + Format('%20.16f ',[XN[_i]]);
if ( ((_i+1) mod 8)=0 )
then Result := Result + #$0D#$0A;
end;
Result := Result + #$0D#$0A;
UtRes('TAMMLR',Result); { вывод результатов в файл TAMMLR.res }
exit;
end;
end.
Результаты: XN = ( 1, 1, 1, 1, - 1, 0, - 2, 1 )