Документ взят из кэша поисковой машины. Адрес оригинального документа : http://num-anal.srcc.msu.ru/lib_na/cat/am_htm_p/ammjr_p.htm
Дата изменения: Thu Dec 3 13:57:36 2015
Дата индексирования: Sun Apr 10 03:48:46 2016
Кодировка: Windows-1251
БЧА НИВЦ МГУ. AMMJR_P. Умножение матриц
Текст подпрограммы и версий
ammjr_p.zip , ammje_p.zip
Тексты тестовых примеров
tammjr_p.zip , tammje_p.zip

Подпрограмма:  AMMJR (модуль AMMJR_p)

Назначение

Численное умножение прямоугольных разреженных матриц, заданных в формате RR (C) U .

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

Описание формата RR (C) U приведено в описании подпрограммы AMTSR .

Пусть в формате RR (C) U заданы матрица A размеров  p  на  q  и матрица B размеров  q  на  r. Пусть известен также портрет результирующей матрицы C = A * B в формате RR (C) U, полученный, например, предварительно при помощи подпрограммы AMMIR. Подпрограмма AMMJR вычисляет ненулевые элементы матрицы C посредством алгоритма, изложенного в описании подпрограммы AMMIR .

С.Писсанецки. Технология разреженных матриц. - М.: Мир, 1988.

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

procedure AMMJR(var IA :Array of Integer; var JA :Array of Integer;
                var AN :Array of Real; var IB :Array of Integer;
                var JB :Array of Integer; var BN :Array of Real;
                var IC :Array of Integer; var JC :Array of Integer;
                NP :Integer; NQ :Integer; NR :Integer;
                var CN :Array of Real; var X :Array of Real); 

Параметры

   IA, JA -
      AN  
заданные портрет и ненулевые элементы матрицы A в формате RR (C) U;
   IB, JB -
      BN  
заданные портрет и ненулевые элементы матрицы B в формате RR (C) U;
IC, JC - заданный портрет результирующей матрицы C в формате RR (C) U;
NP - заданное число строк матрицы A (тип: целый);
NQ - заданное число столбцов матрицы A и строк матрицы B (тип: целый);
NR - заданное число столбцов матрицы B (тип: целый);
CN - вещественный одномерный массив, в котором помещаются вычисленные ненулевые элементы матрицы C согласно портрету  IC, JC;
X - вещественный одномерный массив длины NR, используемый в подпрограмме в качестве рабочего.

Версии

AMMJE - численное умножение прямоугольных разреженных матриц, заданных в формате RR (C) U, в режиме расширенной (Extended) точности; при этом параметры AN, BN, CN и X должны иметь тип Extended.

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

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

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

Unit TAMMJR_p;
interface
uses
SysUtils, Math, { Delphi }
LStruct, Lfunc, UtRes_p, AMMJR_p;

function TAMMJR: String; 

implementation

function TAMMJR: String;
var
NP,NQ,NR,_i :Integer;
CN :Array [0..3] of Real;
X :Array [0..2] of Real;
const
IA :Array [0..4] of Integer = ( 1,4,4,6,7 );
JA :Array [0..5] of Integer = ( 1,5,4,4,2,1 );
IB :Array [0..5] of Integer = ( 1,2,4,6,6,7 );
JB :Array [0..5] of Integer = ( 2,2,1,2,1,2 );
IC :Array [0..4] of Integer = ( 1,2,2,4,5 );
JC :Array [0..3] of Integer = ( 2,2,1,2 );
AN :Array [0..5] of Real = ( 1.0,1.0,1.0,1.0,1.0,1.0 );
BN :Array [0..5] of Real = ( 1.0,1.0,1.0,1.0,1.0,1.0 );
begin
Result := '';

{      ТЕСТ ДЛЯ ПОДПРОГРАММЫ AMMJR }

NP := 4;
NQ := 5;
NR := 3;
AMMJR(IA,JA,AN,IB,JB,BN,IC,JC,NP,NQ,NR,CN,X);
Result := Result + Format('%s',[' CN=']);
Result := Result + #$0D#$0A;
for _i:=0 to 3 do
 begin
  Result := Result + Format('%20.16f ',[CN[_i]]);
  if ( ((_i+1) mod 4)=0 )
   then Result := Result + #$0D#$0A;
 end;
Result := Result + #$0D#$0A;
UtRes('TAMMJR',Result);  { вывод результатов в файл TAMMJR.res }
exit;
end;

end.

Результаты:   CN  =  ( 2, 1, 1, 1 )