Текст подпрограммы и версий 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. |