Текст подпрограммы и версий
am05r_p.zip , am05e_p.zip , am05c_p.zip
Тексты тестовых примеров
tam05r_p.zip , tam05e_p.zip , tam05c_p.zip

Подпрограмма:  AM05R (модуль AM05R_p)

Назначение

Умножение прямоугольной матрицы на вектор.

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

Вычисляется произведение С = А В прямоугольной матрицы  А размера N * М и вектора  B длины  М. Результатом этого произведения является вектор длины N.

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

procedure AM05R(var A :Array of Real; var B :Array of Real;
                var C :Array of Real; N :Integer; M :Integer); 

Параметры

A - двумерный массив размера N * М, в котором задается исходная матрица  А (тип: вещественный);
B - одномерный массив длины  М, в котором задается исходный вектор  B - правый сомножитель произведения (тип: вещественный);
C - одномерный массив длины  N, в котором запоминается результат произведения (тип: вещественный);
N, M - число строк и столбцов матрицы  А (тип: целый).

Версии

AM05E - умножение прямоугольной матрицы на вектор с расширенной (Extended) точностью;
AM05C - умножение комплексной прямоугольной матрицы на комплексный вектор;

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

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

  1. 

В подпрограмме АМ05E параметры А, B, C имеют тип Extended.

  2.  В подпрограмме AM05C параметры А, B, C имеют тип Complex.

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

Unit tam05r_p;
interface
uses
SysUtils, Math, { Delphi }
LStruct, Lfunc, UtRes_p, AM05R_p;

function tam05r: String; 

implementation

function tam05r: String;
var
N,M,_i :Integer;
C :Array [0..3] of Real;
const
A :Array [0..11] of Real = ( 1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0,11.0,
12.0 );
B :Array [0..2] of Real = ( 1.0,0.0,1.0 );
begin
Result := '';
N := 4;
M := 3;
AM05R(A,B,C,N,M);
Result := Result + #$0D#$0A;
for _i:=0 to 3 do
 begin
  Result := Result + Format('%20.16f ',[C[_i]]);
  if ( ((_i+1) mod 1)=0 )
   then Result := Result + #$0D#$0A;
 end;
Result := Result + #$0D#$0A;
UtRes('tam05r',Result);  { вывод результатов в файл tam05r.res }
exit;
end;

end.


Результат:   С   =  ( 10., 12., 14., 16. )