Текст подпрограммы и версий ( Фортран ) 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 |
Вычисление собственных значений, принадлежащих заданному интервалу, их номеров и соответствующих собственных векторов комплексной эрмитовой матрицы.
Комплексная эрмитова матрица А последовательностью унитарных подобных преобразований приводится к симметричной трехдиагональной форме 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