Текст подпрограммы и версий ( Фортран )
aet1c.zip , aet1p.zip
Тексты тестовых примеров ( Фортран )
taet1c.zip , taet1p.zip
Текст подпрограммы и версий ( Си )
aet1c_c.zip
Тексты тестовых примеров ( Си )
taet1c_c.zip
Текст подпрограммы и версий ( Паскаль )
aet1c_p.zip , aet1z_p.zip
Тексты тестовых примеров ( Паскаль )
taet1c_p.zip , taet1z_p.zip

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

Назначение

Вычисление всех собственных значений и собственных векторов комплексной верхней матрицы Хессенберга QR - алгоpитмом.

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

Подпрограмма АЕТ1С вычисляет собственные значения комплексной верхней матрицы Хессенберга QR - алгоpитмом со сдвигом; информация о выполняемых преобразованиях запоминается и используется потом для вычисления собственных векторов матрицы Хессенберга.

Если рассматриваемая матрица Хессенберга была получена в результате унитарного подобного преобразования некоторой комплексной матрицы общего вида с помощью подпрограммы АFG7С, то подпрограмма АЕТ1С может вычислить непосредственно собственные векторы исходной комплексной матрицы общего вида.

Уилкинсон Дж.Х. Алгебраическая проблема собственных значений. М.: "Наука", 1970.

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

    SUBROUTINE  AET1C (NM, N, LOW, IGH, ORTR, ORTI, HR, HI,
                                             WR, WI, ZR, ZI, IERR) 

Параметры

NM - число строк двумерных массивов НR, НI, ZR, ZI, указанное при описании этих массивов в вызывающей подпрограмме (тип: целый);
N - порядок исходной матрицы (тип: целый);
      LOW -
      IGH  
выходные параметры подпрограммы АМВ1С (тип: целый); если матрица не масштабировалась, то можно взять LОW = 1, IGН = N;
        ORTR -
        ORTI  
вещественные векторы длины IGН; первые LОW - 1 компонент этих векторов подпрограммой АЕТ1С не используются; если требуется вычислить собственные векторы матрицы Хессенберга, то на входе в подпрограмму должно выполняться
ОRТR (I) = ОRТI (I) = 0.0,
I = LОW, LОW + 1, ..., IGН;
если требуется вычислить собственные векторы комплексной матрицы общего вида (к которой была предварительно применена подпрограмма АFG7С), то ОRТR и ОRТI являются выходными параметрами подпрограммы АFG7С и содержат часть информации о выполненном унитарном преобразовании;
HR, HI - вещественные двумерные массивы размерности NМ на N, содержащие на входе в подпрограмму в своих первых N строках соответственно вещественную и мнимые части исходной матрицы Хессенберга; если требуется вычислить собственные векторы матрицы Хессенберга, то остальные элементы массивов НR и НI (лежащие ниже поддиагонали) могут быть произвольными; если же требуется вычислить собственные векторы комплексной матрицы общего вида, то НR и НI - выходные параметры подпрограммы АFG7С, которые кроме матрицы Хессенберга содержат еще оставшуюся информацию о выполненном унитарном преобразовании;
WR, WI - вещественные векторы длины N, содержащие на выходе из подпрограммы соответственно вещественные и мнимые части вычисленных собственных значений;
ZR, ZI - вещественные двумерные массивы размерности NM на N, содержащие на выходе из подпрограммы в своих столбцах соответственно вещественные и мнимые части вычисленных собственных векторов; собственные векторы не нормируются;
IERR - целочисленная переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы; на выходе из подпрограммы IЕRR равно индексу собственного значения для вычисления которого требуется более 30 итераций, при этом собственные значения с индексами IЕRR + 1, IЕRR + 2, ..., N вычислены правильно, а собственные векторы не вычисляются; если вычислены все собственные значения и соответствующие собственные векторы, то IЕRR = 0.

Версии

AET1P - вычисление всех собственных значений и собственных векторов комплексной матрицы Хессенберга, заданной с двойной точностью, с помощью QR - алгоpитма со сдвигом.

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

UTAE12 - подпрограмма выдачи диагностических сообщений при работе подпрограмм АЕТ1С и АЕТ1Р.

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

  1. 

В подпрограмме АЕТ1Р параметры ОRТR, ОRТI, НR, НI, WR, WI, ZR, ZI имеют тип DОUВLЕ РRЕСISIОN.

  2.  Подпрограмма АЕТ1С (АЕТ1Р) не сохраняет исходные массивы НR и НI.

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

       DIMENSION  HR(3, 3), HI(3, 3), ZR(3, 3), ZI(3, 3), ORTR(3), 
      *                       ORTI(3), WR(3), WI(3)
       DATA  HR /6., 3*0., 3., 1., 0., 1., 3./
       DATA  HI /1., 2*0., -2., 1., 0., 2., 0., 1./
       N = 3
       DO 10  I = 1, N
       ORTR(I) = 0.
       ORTI(I) = 0.
  10 CONTINUE
       CALL  AET1C (3, 3, 1, 3, ORTR, ORTI, HR, HI, WR, WI, ZR, ZI,
      *                        IERR)

Результаты:

       IERR  =  0 ,   WR  =  (6., 4., 2.) ,   WI  =  (1., 1., 1.)

                  | 1.  0.  0. |
       ZR  =  | 0.  a  -a  |
                  | 0.  a   a  |

                 | 0.  0. -a  |
       ZI  =  | 0.  0.  0.  |
                 | 0.  0.  0. |

   где   a  =  0.707106781187