Текст подпрограммы и версий am16r_p.zip , am16e_p.zip , am16c_p.zip |
Тексты тестовых примеров tam16r_p.zip , tam16e_p.zip , tam16c_p.zip |
Умножение симметричной матрицы, заданной в компактной форме, на вектор.
Для симметричной матрицы А размера N * N, заданной в компактной форме, и вектора B длины N вычисляется вектор C длины N, C = A B .
procedure AM16R(var A :Array of Real; var B :Array of Real; var C :Array of Real; N :Integer);
Параметры
A - | вещественный вектор длины N * (N + 1)/2, содержащий симметричную матрицу A, заданную в компактной форме; |
B - | вещественный одномерный массив длины N, содержащий заданный вектор - сомножитель; |
C - | вещественный вектор длины N, в котором запоминается результат произведения; |
N - | заданный порядок исходной матрицы А (тип: целый). |
Версии
AM16E - | умножение с расширенной (Extended) точностью вещественной симметричной матрицы, заданной в компактной форме, на вектор; |
AM16C - | умножение эрмитовой матрицы, заданной в компактной форме, на комплексный вектор. |
Вызываемые подпрограммы: нет.
Замечания по использованию
1. |
В подпрограмме АМ16E параметры А, B, C имеют тип Extended. | |
2. | В подпрограмме AM16C параметры А, B, C имеют тип Complex. |
Unit tam16r_p; interface uses SysUtils, Math, { Delphi } LStruct, Lfunc, UtRes_p, AM16R_p; function tam16r: String; implementation function tam16r: String; var N,K,_i :Integer; R :Real; A :Array [0..9] of Real; B :Array [0..3] of Real; C :Array [0..3] of Real; label _1,_2; begin Result := ''; N := 4; for K:=1 to 10 do begin R := K; _1: A[K-1] := R; end; for K:=1 to 4 do begin R := 5.0-K; _2: B[K-1] := R; end; AM16R(A,B,C,N); Result := Result + #$0D#$0A; for _i:=0 to 3 do begin Result := Result + Format('%20.16f ',[C[_i]]); if ( ((_i+1) mod 2)=0 ) then Result := Result + #$0D#$0A; end; Result := Result + #$0D#$0A; UtRes('tam16r',Result); { вывод результатов в файл tam16r.res } exit; end; end. Результат: С = ( 25., 35., 52., 80. )