|
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.su/lib_na/cat/ae_htm_p/aeh5r_p.htm
Дата изменения: Thu Oct 29 14:50:11 2015 Дата индексирования: Sun Apr 10 02:39:00 2016 Кодировка: Windows-1251 |
|
Текст подпрограммы и версий aeh5r_p.zip , aeh5e_p.zip |
Тексты тестовых примеров taeh5r_p.zip , taeh5e_p.zip |
Вычисление всех собственных значений и собственных векторов вещественной симметричной матрицы, заданной в компактной форме, с помощью QL - алгоpитма.
Заданная матрица ортогональными преобразованиями подобия
приводится к трехдиагональной симметричной форме,
собственные значения которой затем вычисляются с помощью неявного
QL - алгоpитма.
Информация о преобразованиях используется для вычисления
собственных векторов.
Уилкинсон, Pайнш. Справочник алгоритмов на языке АЛГОЛ. Линейная алгебра. М.: "Машиностроение", 1976.
procedure AEH5R(N :Integer; NV :Integer; var A :Array of Real;
var EV :Array of Real; var V :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, содержащий вычисленные собственные значения, расположенные в порядке неубывания; |
| V - | вещественный двумерный массив размерности N на N, содержащий в своих столбцах ортонормированные собственные векторы; |
| R - | вещественный вектор длины 3 * N, используемый как рабочий; |
| IERR - | целочисленная переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы; при этом IЕRR имеет тот же смысл, что и в подпрограмме АЕЕ1R. |
Версии
| AEH5E - | вычисление с помощью QL - алгоpитма всех собственных значений и собственных векторов вещественной симметричной матрицы, заданной в компактной форме с расширенной (Extended) точностью. |
Вызываемые подпрограммы
| AFH5R - | приведение вещественной симметричной матрицы, заданной в компактной форме, к симметричной трехдиагональной форме ортогональными преобразованиями подобия. |
| AEE1R - | вычисление всех собственных значений и соответствующих собственных векторов вещественной симметричной трехдиагональной матрицы неявным QL - алгоpитмом. |
| AFH5R1 - | рабочая подпрограмма. |
Замечания по использованию
| 1. |
Подпрограмма АЕН5R не сохраняет исходный вектор А. | |
| 2. |
В подпрограмме АЕН5E параметры А, ЕV, V, R имеют тип Extended. | |
| 3. | Подпрограмма АЕН5R1 используется в качестве рабочей. |
Unit TAEH5R_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, AEH5R_p;
function TAEH5R: String;
implementation
function TAEH5R: String;
var
_i,J,I,IERR :Integer;
EV :Array [0..3] of Real;
R :Array [0..11] of Real;
V :Array [0..15] of Real;
const
A :Array [0..9] of Real = ( 43.0,0.0,68.0,0.0,24.0,82.0,24.0,0.0,0.0,57.0 );
begin
Result := ''; { результат функции }
AEH5R(4,10,A,EV,V,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 3 do
begIN
RЕSULT := RЕSULT + FОRMat('%20.16f ',[EV[_i]]);
if ( ((_i+1) mod 4)=0 )
then Result := Result + #$0D#$0A;
end;
Result := Result + #$0D#$0A;
Result := Result + #$0D#$0A;
Result := Result + Format('%s',[' V=' + #$0D#$0A]);
for I:=1 to 4 do
begin
for J:=1 to 4 do
begin
Result := Result + Format('%20.16f ',[V[(I-1)+(J-1)*4]]) + #$0D#$0A;
end;
end;
Result := Result + #$0D#$0A;
UtRes('TAEH5R',Result); { вывод результатов в файл TAEH5R.res }
exit;
end;
end.
Результаты:
IERR = 0
| - 0.8 1.8E -12 0.6 0. |
V = | 0. - 0.8 0. - 0.6 |
| 1.8E -12 0.6 0. - 0.8 |
| 0.6 0. 0.8 0. |
EV = (25., 50., 75., 100.)