Текст подпрограммы и версий
am19r_p.zip , am19e_p.zip
Тексты тестовых примеров
tam19r_p.zip , tam19e_p.zip

Подпрограмма:  AM19R (модуль AM19R_p)

Назначение

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

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

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

Пусть заданы прямоугольная разреженная матрица  A размеров N на M в формате RR (C) U и заполненный вектор - столбец  B длины  M. Подпрограмма AM19R вычисляет заполненный вектор - столбец  C длины  N, равный произведению матрицы  A  на  вектор - столбец  B .

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

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

procedure AM19R(var IA :Array of Integer; var JA :Array of Integer;
                var AN :Array of Real; var B :Array of Real;
                N :Integer; M :Integer; var C :Array of Real); 

Параметры

   IA, JA -       AN   заданные портрет и ненулевые элементы матрицы  A в формате RR (C) U;
B - вещественный одномерный массив  M, содержащий компоненты заданного заполненного вектора - столбца;
N - заданное число строк матрицы  A (тип: целый);
M - заданное число столбцов матрицы  A (тип: целый);
C - вещественный одномерный массив длины  N, содержащий компоненты результирующего вектора.

Версии

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

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

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

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

Unit TAM19R_p;
interface
uses
SysUtils, Math, { Delphi }
LStruct, Lfunc, UtRes_p, AM19R_p;

function TAM19R: String; 

implementation

function TAM19R: String;
var
N,M,_i :Integer;
C :Array [0..3] of Real;
const
IA :Array [0..4] of Integer = ( 1,3,7,9,11 );
JA :Array [0..9] of Integer = ( 5,3,4,3,1,5,1,6,4,2 );
AN :Array [0..9] of Real = ( -1.0,2.0,3.0,3.0,4.0,7.0,-2.0,-1.0,1.0,1.0 );
B :Array [0..5] of Real = ( 1.0,1.0,1.0,1.0,1.0,1.0 );
begin
Result := '';

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

N := 4;
M := 6;
AM19R(IA,JA,AN,B,N,M,C);
Result := Result + Format('%s',[' C=']);
Result := Result + #$0D#$0A;
for _i:=0 to 3 do
 begin
  Result := Result + Format('%20.16f ',[C[_i]]);
  if ( ((_i+1) mod 4)=0 )
   then Result := Result + #$0D#$0A;
 end;
Result := Result + #$0D#$0A;
UtRes('TAM19R',Result);  { вывод результатов в файл TAM19R.res }
exit;
end;

end.

Результаты:    C = ( 1, 17, - 3, 2 )