Текст подпрограммы и версий
ammlr_p.zip , ammle_p.zip
Тексты тестовых примеров
tammlr_p.zip , tammle_p.zip

Подпрограмма:  AMMLR (модуль AMMLR_p)

Назначение

Численное умножение обратной для нижней треугольной разреженной матрицы с единичной диагональю, заданной в формате 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 )