|
Текст подпрограммы и версий am06r_p.zip , am06e_p.zip , am06c_p.zip |
Тексты тестовых примеров tam06r_p.zip , tam06e_p.zip , tam06c_p.zip |
Умножение вектора на прямоугольную матрицу.
Вычисляется призведение С = А В вектора А длины N и прямоугольной матрицы B размера N * М. Результатом этого произведения является вектор длины М.
procedure AM06R(var A :Array of Real; var B :Array of Real;
var C :Array of Real; N :Integer; M :Integer);
Параметры
| A - | одномерный массив длины N, в котором задается исходный вектор А (тип: вещественный); |
| B - | двумерный массив размера N * М, в котором задается исходная матрица B (тип: вещественный); |
| C - | одномерный массив длины М, в котором запоминается результат произведения (тип: вещественный); |
| N, M - | число строк и столбцов матрицы B (тип: целый). |
Версии
| AM06E - | умножение вектора на прямоугольную матрицу с расширенной (Extended) точностью; |
| AM06C - | умножение комплексного вектора на комплексную прямоугольную матрицу; |
Вызываемые подпрограммы: нет.
Замечания по использованию
| 1. |
В подпрограмме АМ06E параметры А, B, C имеют тип Extended. | |
| 2. | В подпрограмме AM05C параметры А, B, C имеют тип Complex. |
Unit tam06r_p;
interface
uses
SysUtils, Math, { Delphi }
LStruct, Lfunc, UtRes_p, AM06R_p;
function tam06r: String;
implementation
function tam06r: String;
var
N,M,_i :Integer;
C :Array [0..3] of Real;
const
A :Array [0..2] of Real = ( 1.0,0.0,1.0 );
B :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 );
begin
Result := '';
N := 3;
M := 4;
AM06R(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('tam06r',Result); { вывод результатов в файл tam06r.res }
exit;
end;
end.
Результат: С = ( 4., 10., 16., 22. )