Текст подпрограммы и версий amz3r_p.zip , amz3e_p.zip , amz3c_p.zip |
Тексты тестовых примеров tamz3r_p.zip , tamz3e_p.zip , tamz3c_p.zip |
Преобразование ленточной матрицы, заданной в компактной форме, в полную форму представления.
Ленточная матрица А порядка N с NUС верхними и NLС нижними ко - диагоналями, заданная в компактной форме, преобразуется в полную форму представления. Таким образом, AMZ3R выполняет действие, обратное по отношению к подпрограмме AMZ2R.
procedure AMZ3R(var A :Array of Real; N :Integer; NUC :Integer; NLC :Integer; var B :Array of Real);
Параметры
A - | вещественный двумерный массив размера N на (NUС + 1 + NLС), в котором задается ленточная матрица в компактной форме представления; |
N - | порядок матрицы (тип: целый); |
NUC - | число верхних ко - диагоналей (тип: целый); |
NLC - | заданное число нижних ко - диагоналей (тип: целый); |
B - | двумерный массив размера N на N, в котором запоминается исходная ленточная матрица в полной форме. |
Версии
AMZ3E - | преобразование ленточной матрицы, заданной в компактной форме с расширенной (Extended) точностью, в полную форму представления. |
AMZ3C - | преобразование комплексной ленточной матрицы, заданной в компактной форме, в полную форму представления. |
Вызываемые подпрограммы: нет.
Замечания по использованию
Массив B может занимать то же место в памяти, что и массив А (это означает, что первый элемент массива B может совпадать с первым элементом массива А). В подпрограмме АМZ3E параметры А и B должны иметь тип Extended. В подпрограмме АМZ3С параметры А и B должны иметь тип Complex. |
Unit tamz3r_p; interface uses SysUtils, Math, { Delphi } LStruct, Lfunc, UtRes_p, AMZ3R_p; function tamz3r: String; implementation function tamz3r: String; var N,NUC,NLC,_i :Integer; B :Array [0..24] of Real; const A :Array [0..19] of Real = ( 0.0,0.0,3.1,4.2,5.3,0.0,2.1,3.2,4.3,5.4,1.1,2.2, 3.3,4.4,5.5,1.2,2.3,3.4,4.5,0.0 ); begin Result := ''; N := 5; NUC := 1; NLC := 2; AMZ3R(A,N,NUC,NLC,B); Result := Result + #$0D#$0A; for _i:=0 to 24 do begin Result := Result + Format('%20.16f ',[B[_i]]); if ( ((_i+1) mod 3)=0 ) then Result := Result + #$0D#$0A; end; Result := Result + #$0D#$0A; UtRes('tamz3r',Result); { вывод результатов в файл tamz3r.res } exit; end; end. Результаты: B = ( 1.1, 2.1, 3.1, 0., 0., 1.2, 2.2, 3.2, 4.2, 0., 0., 2.3, 3.3, 4.3, 5.3, 0., 0., 3.4, 4.4, 5.4, 0., 0., 0., 4.5, 5.5 )