|
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.su/lib_na/cat/af_htm_p/afh7r_p.htm
Дата изменения: Mon Nov 9 10:24:23 2015 Дата индексирования: Sun Apr 10 02:09:01 2016 Кодировка: Windows-1251 |
|
Текст подпрограммы и версий afh7r_p.zip , afh7e_p.zip , |
Тексты тестовых примеров tafh7r_p.zip , tafh7e_p.zip |
Численное треугольное разложение симметричной положительно определенной разреженной матрицы, заданной в формате RR (U) U.
Описания форматов RR (U) U и RR (U) О приведены в описаниях подпрограмм AM21R и ASH4R соответственно.
Пусть симметричная положительно определенная разреженная матрица А порядка N задана в формате RR (U) U. Подпрограмма AFH7R вычисляет элементы матрицы U по заданному ее портрету в формате RR (U) О, такую, что A = UTDU, где U - верхняя треугольная матрица с единичной диагональю, а D - диагональная матрица. Портрет матрицы U может быть предварительно получен при помощи подпрограммы AFH6R сначала в формате RR (U) U, а затем упорядочен в формат RR (U) О путем двухкратного применения подпрограммы AMTCR .
С.Писсанецки. Технология разреженных матриц. - М.: Мир, 1988.
procedure AFH7R(var IA :Array of Integer; var JA :Array of Integer;
var AN :Array of Real; var AD :Array of Real;
N :Integer; var IU :Array of Integer;
var JU :Array of Integer; var UN :Array of Real;
var DI :Array of Real; var IP :Array of Integer;
var IUP :Array of Integer);
Параметры
| IA, JA, - AN, AD | заданные портрет и ненулевые элементы матрицы A в формате RR (U) U; |
| N - | заданный порядок матрицы А (тип: целый); |
| IU, JU - | заданный портрет матрицы U в формате RR (U) O; |
| UN - | вещественный одномерный массив длины N, в который помещаются вычисленные ненулевые элементы матрицы U в соответствии с ее портретом; |
| DI - | вещественный одномерный массив длины N, в который помещаются вычисленные элементы матрицы, обратной к диагональной матрице D разложения; |
| IP, IPU - | целые одномерные массивы длины N, используемые в подпрограмме в качестве рабочих. |
Версии
| AFH7E - | численное треугольное разложение симметричной положительно определенной разреженной матрицы, заданной в формате RR (U) U, в режиме расширенной (Extended) точности; при этом параметры AN, AD, UN и DI должны имет тип Extended. |
Вызываемые подпрограммы: нет
Замечания по использованию: нет
Unit TAFH7R_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, AFH7R_p;
function TAFH7R: String;
implementation
function TAFH7R: String;
var
N,_i :Integer;
IP :Array [0..4] of Integer;
IUP :Array [0..4] of Integer;
UN :Array [0..3] of Real;
DI :Array [0..4] of Real;
const
IA :Array [0..5] of Integer = ( 1,2,3,4,5,5 );
JA :Array [0..3] of Integer = ( 5,5,5,5 );
IU :Array [0..5] of Integer = ( 1,2,3,4,5,5 );
JU :Array [0..3] of Integer = ( 5,5,5,5 );
AN :Array [0..3] of Real = ( 2.0,0.5,2.0,1.0 );
AD :Array [0..4] of Real = ( 16.0,0.625,3.0,0.5,4.0 );
begin
Result := ''; { результат функции }
{ ТЕСТ ДЛЯ ПОДПРОГРАММЫ AFH7R }
N := 5;
AFH7R(IA,JA,AN,AD,N,IU,JU,UN,DI,IP,IUP);
Result := Result + Format('%s',[' UN=']);
Result := Result + #$0D#$0A;
for _i:=0 to 3 do
begin
Result := Result + Format('%20.16f ',[UN[_i]]);
if ( ((_i+1) mod 4)=0 )
then Result := Result + #$0D#$0A;
end;
Result := Result + #$0D#$0A;
Result := Result + Format('%s',[' DI=']);
Result := Result + #$0D#$0A;
for _i:=0 to 4 do
begin
Result := Result + Format('%20.16f ',[DI[_i]]);
if ( ((_i+1) mod 4)=0 )
then Result := Result + #$0D#$0A;
end;
Result := Result + #$0D#$0A;
UtRes('TAFH7R',Result); { вывод результатов в файл TAFH7R.res }
exit;
end;
end.
Результаты:
UN = .125000E+00, .800000E+00, .666667E+00, .200000E+01
DI = .625000E-01, .160000E+01, .333333E+00, .200000E+01, .600002E+02