Текст подпрограммы и версий
ame3r_p.zip , ame3e_p.zip
Тексты тестовых примеров
tame3r_p.zip , tame3e_p.zip

Подпрограмма:  AME3R (модуль AME3R_p)

Назначение

Копирование разреженной матрицы, заданной в произвольном строчном формате.

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

Подпрограмма AME3R выполняет копирование разреженной матрицы  A с NR строками, заданной в произвольном строчном представлении, в массивы, определяющие то же самое строчное представление матрицы  B.

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

procedure AME3R(var IA :Array of Integer; var JA :Array of Integer;
                var AN :Array of Real; NR :Integer;
                var IB :Array of Integer; var JB :Array of Integer;
                var BN :Array of Real); 

Параметры

 IA, JA -
      AN  
заданные портрет и ненулевые элементы разреженной матрицы  A в произвольном строчном формате;
NR - число строк матриц  A и  B (тип: целый);
   IB, JB -
      BN  
заданные портрет и массив для ненулевых элементов матрицы  B в том же самом строчном формате.

Версии:

AME3E - копирование разреженной матрицы, заданной в произвольном строчном формате, в режиме расширенной (Extended) точности; при этом параметры AN и BN должны иметь тип Extended.

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

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

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

Unit TAME3R_p;
interface
uses
SysUtils, Math, { Delphi }
LStruct, Lfunc, UtRes_p, AME3R_p;

function TAME3R: String; 

implementation

function TAME3R: String;
var
NR,_i :Integer;
IB :Array [0..4] of Integer;
JB :Array [0..5] of Integer;
BN :Array [0..5] 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 );
AN :Array [0..5] of Real = ( 1.0,1.0,1.0,1.0,1.0,1.0 );
begin
Result := '';

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

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

end.

Результаты:

        IB = ( 1, 4, 4, 6, 7 )
        JB = ( 1, 5, 4, 4, 2, 1 )
       BN = ( 1, 1, 1, 1, 1, 1 )