Текст подпрограммы и версий ( Фортран )
agg1r.zip 
Тексты тестовых примеров ( Фортран )
tagg1r.zip 
Текст подпрограммы и версий ( Си )
agg1r_c.zip 
Тексты тестовых примеров ( Си )
tagg1r_c.zip 
Текст подпрограммы и версий ( Паскаль )
agg1r_p.zip 
Тексты тестовых примеров ( Паскаль )
tagg1r_p.zip 

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

Назначение

Вычисление всех собственных значений QZ - алгоритмом в обобщенной проблеме собственных значений Ax = λBx двух вещественных матриц.

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

Алгоритм, реализованый в подпрограмме AGG1R, может быть разбит на три этапа.

Hа первом этапе преобразованиями отражения осуществляется одновременное приведение матрицы A к верхней почти треугольной форме и матрицы B к верхней треугольной форме.

Hа втоpом этапе при помощи обобщенного неявного QR - алгоритма с двойным сдвигом осуществляется приведение матрицы A к верхней почти треугольной форме (когда нет двух последовательных ненулевых поддиагональных элементов) с сохранением вида матрицы B.

Hа третьем этапе матрица A приводится к треугольной форме, после чего вычисляются искомые собственные значения λ1, λ2, ..., λN в виде λI = ALFA (I) / BETA (I), когда BETA (I) ≠ 0. Если BETA (I) = 0, то соответствующее собственное значение λI рассматривается как бесконечное.

C.B.Moler, G.W.Stewart, An Algorithm for Generalized Matrix Eugenvalue Problems, SIAM J. Numer. Anal. 10, 1973.

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

    SUBROUTINE  AGG1R (A, B, ALFA, BETA, WK, N, IERR) 

Параметры

A, B - вещественные двумерные массивы размера N на N, содержащие исходные матрицы A и B соответственно;
  ALFA -
  BETA  
комплексный и вещественный векторы длины N, такие, что искомые собственные значения выражаются через компоненты этих вектоpов следующим образом: λI = ALFA (I) / BETA (I); если BETA (I) = 0, то соответствующее собственное значение рассматривается как бесконечное;
WK - вещественный вектоp длины N, используемый как рабочий;
N - заданный порядок исходных матриц (тип: целый);
IERR - целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы; значение IERR полагается равным J+128, где J - номеp собственного значения, для вычисления которого потребовалось более 30 итераций, при этом собственные значения с индексами J+1, ..., N вычислены правильно, а с индексами 1, ..., J могут быть вычислены не точно.

Версии : нет

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

AFG3R - приведение пары вещественных матриц A и B к верхней почти треугольной и треугольной форме соответственно ортогональными преобразованиями подобия с помощью QZ - алгоритма.
AGT1R - вычисление всех собственных значений QR - алгоритмом в обобщенной проблеме собственных значений Ax = λBx для верхней почти тpеугольной и верхней треугольной вещественных матриц.
UTAG10 - подпрограмма выдачи диагностических сообщений при работе подпрограммы AGG1R.

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

 

Исходные матрицы A и B не сохраняются.

Векторы ALFA и BETA упорядочены таким образом, что комплексно-сопряженные собственные значения λI и λI+1 расположены последовательно, т.е. ALFA (I+1) / BETA (I+1) комплексно - сопряжено с ALFA (I) / BETA (I). При этом ALFA (I+1) не обязательно комплексно - сопряжено с ALFA (I).

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

         REAL  A(3, 3), B(3, 3), BETA(3), WK(3)
         COMPLEX ALFA(3)
         DATA A /1., -10., 5., 0.5., 2., 1., 2*0., 0.5/, 
        *           B /0.5, 3., 4., 0., 3., 0.5, 2*0., 1., /
         N = 3
         CALL  AGG1R (A, B, ALFA, BETA, WK, N, IERR)

Результаты:

      IERR  =  0

                      | 1.27052+3.03864*i |
      ALFA  =  | 0.40869-0.97744*i |
                      | 1.00306+0.00000*i | 

      BETA  =  ( 1.52462,  0.49043,  2.00612 )

Собственные значения:

      λ1  =  0.83333+1.9930*i
      λ2  =  0.83333-1.9930*i
      λ3  =  0.50000+0.0000*i