Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.su/lib_na/cat/af_htm_p/afh1r_p.htm
Дата изменения: Thu Jun 23 11:48:51 2011 Дата индексирования: Mon Oct 1 22:55:56 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