|
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.su/lib_na/cat/am_htm_p/amz1r_p.htm
Дата изменения: Fri Jul 8 13:32:59 2011 Дата индексирования: Mon Oct 1 23:10:13 2012 Кодировка: Windows-1251 |
|
Текст подпрограммы и версий amz1r_p.zip , amz1e_p.zip , amz1c_p.zip |
Тексты тестовых примеров tamz1r_p.zip , tamz1e_p.zip , tamz1c_p.zip |
Преобразование симметричной матрицы, заданной в компактной форме, в полную форму представления.
Симметричная матрица А порядка N, заданная в компактной форме, преобразуется в полную форму представления. Таким образом, AMZ1R выполняет действие, обратное по отношению к подпрограмме AMZ0R.
procedure AMZ1R(var A :Array of Real; N :Integer;
var B :Array of Real);
Параметры
| A - | вещественный вектор длины N на (N + 1)/2, в котором задается симметричная матрица в компактной форме; |
| N - | заданный порядок матрицы (тип: целый); |
| B - | двумерный массив размера N на N, в котором запоминается исходная симметричная матрица в полной форме представления. |
Версии
| AMZ1E - | преобразование симметричной матрицы, заданной в компактной форме с расширенной (Extended) точностью, в полную форму представления. |
| AMZ1C - | преобразование эрмитовой матрицы, заданной в компактной форме, в полную форму представления. |
Вызываемые подпрограммы: нет.
Замечания по использованию
|
Двумерный массив B может занимать то же место в памяти, что и массив А (это означает, что первый элемент массива B может совпадать с первым элементом вектора А). В подпрограмме АМZ1E параметры А и B должны иметь тип Extended. В подпрограмме АМZ1С параметры А и B должны иметь тип Complex. |
1.
Unit tamz1r_p;
interface
uses
SysUtils, Math, { Delphi }
LStruct, Lfunc, UtRes_p, AMZ1R_p;
function tamz1r: String;
implementation
function tamz1r: String;
var
N,_i :Integer;
B :Array [0..8] of Real;
const
A :Array [0..5] of Real = ( 1.1,2.1,2.2,3.1,3.2,3.3 );
begin
Result := '';
N := 3;
AMZ1R(A,N,B);
Result := Result + #$0D#$0A;
for _i:=0 to 8 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('tamz1r',Result); { вывод результатов в файл tamz1r.res }
exit;
end;
end.
Результаты: B = ( 1.1, 2.1, 3.1, 2.1, 2.2, 3.2, 3.1, 3.2, 3.3 )
2.
Unit tamz1c_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, AMZ1C_p;
function tamz1c: String;
implementation
function tamz1c: String;
var
N,_i :Integer;
B :Array [0..8] of Complex;
const
A :Array [0..5] of Complex = ( ( re:1.1; im:0.0 ),( re:2.1; im:2.1 ),( re:2.2;
im:0.0 ),( re:3.1; im:3.1 ),( re:3.2; im:3.2 ),(
re:3.3; im: 0.0 ) );
begin
Result := ''; { результат функции }
N := 3;
AMZ1C(A,N,B);
Result := Result + #$0D#$0A;
for _i:=0 to 8 do
begin
Result := Result + Format('%20.16f %20.16f ',[B[_i].re,B[_i].im]);
if ( ((_i+1) mod 2)=0 )
then Result := Result + #$0D#$0A;
end;
Result := Result + #$0D#$0A;
UtRes('tamz1c',Result); { вывод результатов в файл tamz1c.res }
exit;
end;
end.
Результаты:
B = ( (1.1, 0.), (2.1, 2.1), (3.1, 3.1), (2.1, - 2.1), (2.2, 0.),
(3.2, 3.2), (3.1, - 3.1), (3.2, - 3.2), (3.3, 0.) )