|
Текст подпрограммы и версий am11r_p.zip , am11e_p.zip , am11c_p.zip |
Тексты тестовых примеров tam11r_p.zip , tam11e_p.zip , tam11c_p.zip |
Умножение квадратных матриц.
Вычисляется произведение квадратных матриц А и B размера N * N. Результат произведения - квадратная матрица размера N * N, запоминающаяся на месте матрицы В.
procedure AM11R(var A :Array of Real; var B :Array of Real;
var S :Array of Real; N :Integer);
Параметры
| A, B - | двумерные массивы размера N * N, в которых задаются, соответственно левая и правая матрицы произведения; на выходе из подпрограммы вычисленное произведение запоминается на месте матрицы B (тип: вещественный); |
| S - | рабочий вектор длины N (тип: вещественный); |
| N - | заданное число строк и столбцов матриц А и B (тип: целый). |
Версии
| AM11E - | умножение кавдратных матриц с расширенной (Extended) точностью; |
| AM11C - | умножение комплексных квадратных матриц; |
Вызываемые подпрограммы: нет.
Замечания по использованию
| 1. |
В подпрограмме АМ11E параметры А, B и S имеют тип Extended. | |
| 2. | В подпрограмме AM11C параметры А, B и S имеют тип Complex. |
Unit tam11r_p;
interface
uses
SysUtils, Math, { Delphi }
LStruct, Lfunc, UtRes_p, AM11R_p;
function tam11r: String;
implementation
function tam11r: String;
var
N,_i :Integer;
S :Array [0..3] of Real;
const
A :Array [0..15] 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,13.0,14.0,15.0,16.0 );
B :Array [0..15] of Real = ( 1.0,0.0,1.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,
1.0,0.0,0.0,1.0 );
begin
Result := '';
N := 4;
AM11R(A,B,S,N);
Result := Result + #$0D#$0A;
for _i:=0 to 15 do
begin
Result := Result + Format('%20.16f ',[B[_i]]);
if ( ((_i+1) mod 1)=0 )
then Result := Result + #$0D#$0A;
end;
Result := Result + #$0D#$0A;
UtRes('tam11r',Result); { вывод результатов в файл tam11r.res }
exit;
end;
end.
Результат:
| 10. 18. 6. 14. |
| 12. 20. 8. 16. |
B = | 14. 22. 10. 18. |
| 16. 24. 12. 20. |