Текст подпрограммы и версий am05r_p.zip , am05e_p.zip , am05c_p.zip |
Тексты тестовых примеров tam05r_p.zip , tam05e_p.zip , tam05c_p.zip |
Умножение прямоугольной матрицы на вектор.
Вычисляется произведение С = А В прямоугольной матрицы А размера 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. )