|
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.su/lib_na/cat/ae_htm_p/aeh6r_p.htm
Дата изменения: Thu Oct 29 14:50:18 2015 Дата индексирования: Sun Apr 10 02:39:03 2016 Кодировка: Windows-1251 |
|
Текст подпрограммы и версий aeh6r_p.zip , aeh6e_p.zip |
Тексты тестовых примеров taeh6r_p.zip , taeh6e_p.zip |
Вычисление всех собственных значений вещественной симметричной матрицы, заданной в компактной форме, с помощью QL - алгоритма.
Заданная матрица ортогональными преобразованиями подобия приводится к треугольной симметричной форме, собственные значения которой затем вычисляются с помощью неявного QL - алгоритма.
Уилкинсон, Pайнш. Справочник алгоритмов на языке АЛГОЛ. Линейная алгебра. М.: "Машиностроение", 1976.
procedure AEH6R(N :Integer; NV :Integer; var A :Array of Real;
var EV :Array of Real; var R :Array of Real;
var IERR :Integer);
Параметры
| N - | порядок исходной матрицы (тип: целый); |
| NV - | длина вектора А, NV ≥ N(N + 1)/2 (тип: целый); |
| A - | вещественный вектор длины NV, содержащий в своих первых N (N + 1)/2 компонентах исходную матрицу, заданную в компактной форме; |
| EV - | вещественный вектор длины N, содержащий вычисленные собственные значения, расположенные в неубывающем порядке; |
| R - | вещественный вектор длины 2 * N, используемый как рабочий; |
| IERR - | целочисленная переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы; IЕRR имеет тот же смысл, что и в подпрограмме АЕЕ2R. |
Версии
| AEH6E - | вычисление с помощью QL - алгоpитма всех собственных значений вещественной симметричной матрицы, заданной в компактной форме, с расширенной (Extended) точностью. |
Вызываемые подпрограммы
| AEE2R - | вычисление всех собственных значений вещественной симметричной трехдиагональной матрицы при помощи неявного QL - алгоpитма. |
| AFH5R - | приведение вещественной симметричной матрицы, заданной в компактной форме, к симметричной трехдиагональной матрице ортогональными преобразованиями подобия. |
Замечания по использованию
| 1. |
Подпрограмма АЕН6R не сохраняет исходный вектор А. | |
| 2. | В подпрограмме АЕН6E параметры А, ЕV, R имеют тип Extended. |
Unit TAEH6R_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, AEH6R_p;
function TAEH6R: String;
implementation
function TAEH6R: String;
var
_i,IERR :Integer;
EV :Array [0..2] of Real;
R :Array [0..5] of Real;
const
A :Array [0..5] of Real = ( 294.0,-180.0,-25.0,108.0,240.0,231.0 );
begin
Result := ''; { результат функции }
AEH6R(3,6,A,EV,R,IERR);
Result := Result + Format('%s',[' IERR=']);
Result := Result + Format('%5d ',[IERR]) + #$0D#$0A;
Result := Result + Format('%s',[' EV=']);
Result := Result + #$0D#$0A;
for _i:=0 to 2 do
begin
Result := Result + Format('%20.16f ',[EV[_i]]);
if ( ((_i+1) mod 3)=0 )
tHЕN RЕSULT := RЕSULT + #$0D#$0А;
end;
Result := Result + #$0D#$0A;
UtRes('TAEH6R',Result); { вывод результатов в файл TAEH6R.res }
exit;
end;
end.
Результаты:
IERR = 0
EV = (- 250., 375., 375.)