|
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.ru/lib_na/cat/af_htm_p/afh1r_p.htm
Дата изменения: Thu Jun 23 11:48:51 2011 Дата индексирования: Mon Oct 1 23:10:13 2012 Кодировка: Windows-1251 |
|
Текст подпрограммы и версий afh1r_p.zip , afh1e_p.zip , afh1c_p.zip |
Тексты тестовых примеров tafh1r_p.zip , tafh1e_p.zip , tafh1c_p.zip |
Треугольное разложение положительно определенной симметричной матрицы методом квадратного корня (методом Холецкого) с компактной формой представления симметричной и треугольной матриц.
Заданная положительно определенная симметричная матрица А приводится к действительной невырожденной нижней треугольной матрице L, такой, что LLT = А, методом квадратного корня (методом Холецкого).
В.В.Воеводин, Численные методы алгебры (теория и алгорифмы), "Наука", М., 1966 г.
procedure AFH1R(var A :Array of Real; N :Integer; var IERR :Integer);
Параметры
| A - | вектор длины N * (N + 1) / 2, в котором содержится заданная матрица, записанная в компактной форме; по окончании работы подпрограммы в массиве А запоминается также в компактной форме нижняя треугольная матрица L (тип: вещественный); |
| N - | порядок матрицы (тип: целый); |
| IERR - | целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы; при этом: |
| IЕRR=65 - | если исходная матрица не является положительно определенной. |
Версии
| AFH1E - | треугольное разложение положительно определенной симметричной матрицы методом квадратного корня с компактной формой представления симметричной и треугольной матриц с расширенной (Extended) точностью. |
| AFH1C - | треугольное разложение положительно определенной эрмитовой матрицы методом квадратного корня с компактной формой представления матриц. |
Вызываемые подпрограммы
| UTAF10 - | подпрограмма выдачи диагностических сообщений при работе подпрограмм АFН1R, AFH1C . |
| UTAF11 - | подпрограмма выдачи диагностических сообщений при работе подпрограмм АFН1E, AFH1Z . |
Замечания по использованию
| Для подпрограммы АFН1E параметр А должен тиметь тип Extended, а для АFН1С - тип Complex. |
Unit TAFH1R_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, AFH1R_p;
function TAFH1R: String;
implementation
function TAFH1R: String;
var
_i,IERR :Integer;
const
A :Array [0..5] of Real = ( 1.0,2.0,20.0,3.0,26.0,70.0 );
begin
Result := ''; { результат функции }
Result := Result + Format('%s',
[' ТРЕУГОЛЬНОЕ РАЗЛОЖЕНИЕ СИММЕТРИЧНОЙ ПОЛОЖИТЕЛЬНО ' + #$0D#$0A +
' ОПРЕДЕЛЕННОЙ МАТРИЦЫ :A=D*DT' + #$0D#$0A]) + #$0D#$0A;
Result := Result + Format('%s',[' ЗАДАННАЯ МАТРИЦА А:' + #$0D#$0A]);
Result := Result + #$0D#$0A;
for _i:=0 to 5 do
begin
Result := Result + Format('%20.16f ',[A[_i]]);
if ( ((_i+1) mod 4)=0 )
then Result := Result + #$0D#$0A;
end;
Result := Result + #$0D#$0A;
AFH1R(A,3,IERR);
Result := Result + Format('%s',
[' НИЖНЯЯ ТРЕУГОЛЬНАЯ МАТРИЦА В РАЗЛОЖЕНИИ ХОЛЕЦКОГО МАТРИЦЫ А:' + #$0D#$0A]);
Result := Result + Format('%s',[' (']);
Result := Result + #$0D#$0A;
for _i:=0 to 5 do
begin
Result := Result + Format('%20.16f ',[A[_i]]);
if ( ((_i+1) mod 4)=0 )
then Result := Result + #$0D#$0A;
end;
Result := Result + #$0D#$0A;
Result := Result + Format('%s',[' IERR = ']);
Result := Result + Format('%5d ',[IERR]) + #$0D#$0A;
UtRes('TAFH1R',Result); { вывод результатов в файл TAFH1R.res }
exit;
end;
end.
Результаты: A = (1., 2., 4., 3., 5., 6.), IERR = 0