Текст подпрограммы и версий ( Фортран )
aeh3c.zip , aeh3p.zip
Тексты тестовых примеров ( Фортран )
taeh3c.zip , taeh3p.zip
Текст подпрограммы и версий ( Си )
aeh3c_c.zip , aeh3p_c.zip
Тексты тестовых примеров ( Си )
taeh3c_c.zip , taeh3p_c.zip
Текст подпрограммы и версий ( Паскаль )
aeh3c_p.zip , aeh3z_p.zip
Тексты тестовых примеров ( Паскаль )
taeh3c_p.zip , taeh3z_p.zip

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

Назначение

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

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

Комплексная эрмитова матрица  А последовательностью унитарных подобных преобразований приводится к симметричной трехдиагональной форме F = V*Q*AQV (где  Q - произведение унитарных матриц,  V - унитарная диагональная матрица), используемой для вычисления собственных значений, заданных в интервале, и их номеров методом бисекций. Собственные векторы, соответствующие вычисленным собственным значениям вычисляются методом обратной итерации, при этом связь между векторами матриц  А и  F определяется следующим соотношением: x = QVy.

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

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

    SUBROUTINE  AEH3C (N, AR, AI, VR, VI, EV, RLB, RUB, MM, M,
                                              IRAB, RAB1, RAB2, IERR) 

Параметры

N - порядок исходной матрицы (тип: целый);
AR, AI - вещественные двумерные массивы размера N на N, содержащие соответственно действительную и мнимую части исходной матрицы; в подпрограмме используется только полный нижний треугольник матрицы АI и строгий нижний треугольник матрицы АR;
VR, VI - вещественные двумерные массивы размера N на MM, содержащие соответственно действительную и мнимую части вычисленных ортонормированных собственных векторов;
EV - вещественный вектор длины ММ, содержащий вычисленные в возрастающем порядке собственные значения, принадлежащие заданному интервалу;
      RLB -
      RUB  
заданные нижняя и верхняя границы интервала собственных значений (тип: вещественный); если RLВ > RUВ, то собственные значения не вычисляются;
MM - оценка сверху числа собственных значений исходной матрицы, принадлежащих заданному интервалу, ММ ≤ N (тип: целый); если вычисленное число  М собственных значений, принадлежащих заданному интервалу, больше, чем ММ, то собственные значения и соответствующие собственные векторы не вычисляются;
M - целая переменная, в которой запоминается вычисленное число собственных значений, принадлежащих заданному интервалу;
IRAB - целый вектор длины ММ, содержащий индексы расположенных в возрастающем порядке  М собственных значений;
RAB1 - вещественный двумерный массив размера 2 на N, используемый как рабочий;
RAB2 - вещественный вектор длины 8 на N, используемый как рабочий;
IERR - целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы; при этом:
IERR = 3*N + 1 - если значение ММ меньше числа  М вычисленных собственных значений на интервале; при этом собственные значения и соответствующие собственные векторы не вычисляются;
IERR = - К - если для вычисления собственного вектора с индексом  К потребовалось более 5 итераций; при этом компоненты этого вектора полагаются равными нулю. Если таких собственных векторов несколько, то значение IЕRR полагается равным индексу последнего из них.

Версии

AEH3P - вычисление собственных значений, принадлежащих заданному интервалу, их номеров и соответствующих собственных векторов комплексной эрмитовой матрицы, заданной с удвоенной точностью. Массивы АR, АI, VR, VI, ЕV, RАВ1, RАВ2 и переменные RLВ, RUВ имеют тип DОUВLЕ РRЕСISIОN.

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

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

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

  Подпрограммы AEH3C(P) сохраняют полный верхний треугольник массива АR и строгий верхний треугольник массива АI, остальные элементы массивов АR и АI используются как рабочие.
  Подпрограмма АЕH3C использует служебные подпрограммы AER4R, AER6R, AER7R, AER14R.
Подпрограмма АЕH3P использует служебные подпрограммы AA01P, AER4D, AER6D, AER7D, AER14D.

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

       DIMENSION  AR(4, 4), AI(4, 4), VR(4, 3), VI(4, 3), EV(3), IRAB(3), 
      *                       RAB1(2, 4), RAB2(32)
       DATA  AR /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./
       DATA  AI /16*0./
       N = 4
       MM = 3
       RLB = 0.
       RUB = 1.
       CALL  AEH3C (N, AR, AI, VR, VI, EV, RLB, RUB, MM, M,
      *                         IRAB, RAB1, RAB2, IERR)

Результаты:

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

                  |  0.242260708  |       
       EV  =  |  0.638283803  |   ,
                  |  0.796706689  |

Собственные векторы, соответствующие вычисленным
в интервале (0., 1.) собственным значениям:
 
                  |  - 0.718845953  |                             |  - 0.380449882   |
       V1  =  |  - 0.095698981  |   ,               V2  =  |    0.850275473   |   ,
                  |    0.387435463   |                             |    0.035889606   |
                  |    0.569206432   |                             |  - 0.361941215  |

                  |    0.050328449  |
       V3  =  |  - 0.237226458  |   ,
                  |    0.812846171  |
                  |  - 0.529595844  |

       IERR  =  0