Текст подпрограммы и версий
am11r_p.zip , am11e_p.zip , am11c_p.zip
Тексты тестовых примеров
tam11r_p.zip , tam11e_p.zip , tam11c_p.zip

Подпрограмма:  AM11R (модуль AM11R_p)

Назначение

Умножение квадратных матриц.

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

Вычисляется произведение квадратных матриц  А и  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.  |