Текст подпрограммы и версий ( Фортран )
aeh3r.zip , aeh3d.zip
Тексты тестовых примеров ( Фортран )
taeh3r.zip , taeh3d.zip
Текст подпрограммы и версий ( Си )
aeh3r_c.zip , aeh3d_c.zip
Тексты тестовых примеров ( Си )
taeh3r_c.zip , taeh3d_c.zip
Текст подпрограммы и версий ( Паскаль )
aeh3r_p.zip , aeh3e_p.zip
Тексты тестовых примеров ( Паскаль )
taeh3r_p.zip , taeh3e_p.zip

Подпрограмма:  AEH3R

Назначение

Вычисление собственных значений, принадлежащих заданному интервалу, их номеpов и соответствующих собственных векторов вещественной симметрической матрицы.

Математическое описание

Исходная задача Ax = λx для вещественной симметрической матрицы  A решается путем приведения ее с помощью ортогональных преобразований  P к симметрической трехдиагональной матрице A1 = PTAP. Вычисление собственных значений, принадлежащих заданному интервалу, и их номеpов задачи А1y = λy осуществляется с помощью метода бисекций; при этом собственные значения обеих задач совпадают. Для вычисления собственных вектоpов используется метод обратных итераций. Собственные векторы обеих задач связаны соотношением  x = Py.

Уилкинсон, Райнш. "Справочник алгоритмов на языке АЛГОЛ. Линейная алгебра", M., "Машиностроение", 1976.

Использование

    SUBROUTINE  AEH3R (N, A, V, EV, RLB, RUB, MM, M, IRAB,
                                              RAB, IERR) 

Параметры

N - порядок исходной матрицы (тип: целый);
A - вещественный двумерный массив размера N на N, содержащий исходную матрицу; в подпрограмме используется только полный нижний треугольник матрицы  A;
V - вещественный двумерный массив размера N на MM, содержащий в первых  M столбцах вычисленные ортонормированные собственные векторы, соответствующие  M собственным значениям;
EV - вещественный одномерный массив длины MM, содержащий вычисленные в возрастающем порядке собственные значения, принадлежащие заданному интервалу;
      RLB -
      RUB  
заданные нижняя и верхняя границы интервала собственных значений (тип: вещественный); если RLB > RUB, то собственные значения не вычисляются;
MM - оценка свеpху числа собственных значений матрицы  A, принадлежащих заданному интервалу, MM ≤ N (тип: целый); если вычисленное число  M собственных значений, принадлежащих заданному интервалу, больше, чем MM, то собственные значения и соответствующие собственные векторы не вычисляются;
M - целая переменная, в которой запоминается вычисленное число собственных значений, принадлежащих заданному интервалу;
IRAB - целый вектоp длины MM, содержащий индексы расположенных в возрастающем порядке  M собственных значений;
RAB - вещественный вектоp длины 8 на N, используемый как рабочий;
IERR - целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы; при этом:
IERR=3*N+1 - если значение MM меньше числа вычисленных собственных значений  M на интервале; при этом собственные значения и соответствующие собственные векторы не вычисляются;
IERR= - k - если для вычисления собственного вектоpа с индексом  k потребовалось более 5 итераций; при этом компоненты этого вектоpа полагаются равными нулю. Если таких собственных вектоpов несколько, то значение IERR полагается равным индексу последнего из них.

Версии

AEH3D - вычисление собственных значений, принадлежащих заданному интервалу, их номеpов и соответствующих собственных вектоpов симметрической матрицы, заданной с удвоенной точностью. Массивы A, V, EV, RAB и переменные RLB, RUB имеют тип DOUBLE PRECISION.

Вызываемые подпрограммы

UTAE10 - подпрограмма выдачи диагностических сообщений при работе подпрограмм AEH3R и AEH3D.

Замечания по использованию

  Подпрограммы AEH3R(D) сохраняют полный верхний треугольник исходной матрицы, остальные элементы используются для запоминания ортогональных преобразований.
  Подпрограмма АЕH3R использует служебные подпрограммы AER4R, AER14R, AER17R, AER18R.
Подпрограмма АЕH3D использует служебные подпрограммы AER4D, AER14D, AER17D, AER18D.

Пример использования

       DIMENSION  A(4, 4), V(4, 3), EV(3), IRAB(3), RAB(32)
       DATA  A /1., 0.42, 0.54, 0.66, 0.42, 1., 0.32, 0.44, 0.54, 0.32, 
      *                1., 0.22, 0.66, 0.44, 0.22, 1./
       N = 4
       MM = 3
       RLB = 0.
       RUB = 1.
       CALL  AEH3R (N, A, V, EV, RLB, RUB, MM, M, IRAB, RAB, IERR)

Результаты:

Собственные значения в интервале (0., 1.):

       EV  =  (0.2422607,  0.6382838,  0.7967067) , 

Собственные векторы, соответствующие вычисленным
в интервале (0., 1.) собственным значениям:

       V1  =  (0.7188460,  0.0956990,  - 0.3874355,  - 0.5692064) , 
       V2  =  (0.3804499,  - 0.8502755,  - 0.0358896,  0.3619412) , 
       V3  =  (0.0503284,  - 0.2372265,  0.8128462,  - 0.5295958) , 

       IERR  =  0