Текст подпрограммы и версий ( Фортран )
agt2c.zip 
Тексты тестовых примеров ( Фортран )
tagt2c.zip 
Текст подпрограммы и версий ( Си )
agt2c_c.zip 
Тексты тестовых примеров ( Си )
tagt2c_c.zip 
Текст подпрограммы и версий ( Паскаль )
agt2c_p.zip 
Тексты тестовых примеров ( Паскаль )
tagt2c_p.zip 

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

Назначение

Вычисление всех собственных значений и собственных вектоpов в обобщенной поблеме AV - 1x = λBV - 1x для комплексных верхней почти треугольной матрицы A, верхней треугольной матрицы B и произвольной невырожденной матрицы V, с помощью LR - алгоритма.

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

Подпрограма AGT2C вычисляет все собственные значения и собственые векторы обобщенной проблемы

     AV - 1 = λBV - 1x 

для комплексных верхней почти треугольной матрицы A, верхней треугольной матрицы B и произвольной невырожденной матрицы V с помощью LR - алгоритма. Матрицы A, B и V имеют размеры N на N.

Информация о вычисленных собственных значениях выдается в вектоpах ALFA и BETA длины N, по которым k - ое собственное значение λk определяется с помощью формулы:

                  λk = ALFA(k) / BETA(k),   при BETA(k) ≠ 0,
 (1)            λk = ∞                            ,   при BETA(k) = 0,          
                  λk = любое число          ,   при ALFA(k) = BETA(k) = 0. 

Вычисленные собственные векторы запоминаются в столбцах матрицы V.

R.S.Mfrtin, J.H.Wilkinson, The Modified LR - Algorithm for Complex Hessenberg Matrices, Numer. Math., 12, 1968.

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

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

    SUBROUTINE  AGT2C (A, B, V, ALFA, BETA, IERR) 

Параметры

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

Версии : нет

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

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

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

  1. 

Подпрограмма AGT2C не сохраняет исходную информацию.

  2. 

B массиве V должна задаваться единичная матрица, если решается обобщенная проблема Ax = λBx для комплексных верхней почти треугольной матрицы A и верхней треугольной матрицы B.

  3.  Вычисленные собственные векторы нормализованы так, что наибольшая компонента по модулю pавна 1.

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

          DIMENSION  A (3, 3), B (3, 3), V (3, 3), ALFA (3), BETA (3)
          COMPLEX  A, B, V, ALFA, BETA
          DATA  A / (1., 0),  (-10., 0.),  (5., 0.),  (0.5, 0.),  (2., 0.), 
         *                 (1., 0.), 2* (0., 0.),  (0.5, 0.) /
          DATA  B / (0.5, 0.),  (3., 0.),  (4., 0.),  (0., 0.),  (3., 0.), 
         *                 (0.5, 0.), 2* (0., 0.),  (1., 0.) /
          N = 3
          M = 0
          CALL  AFG3C (A, B, V, N, M)
          CALL  AGT2C (A, B, V, ALFA, BETA, N, IERR)

Результаты:

      IERR  =  0

                      |  2.79963 - 3.65018i  |
      ALFA  =  |  0.42142 + 0.54945i |
                      | -1.09877 + 0.0i         |
 
                      | -1.05899 - 1.89748i  |
      BETA  =  | -0.15941 + 0.27809i | 
                      | -2.19753 + 0.0i         |

               | -0.25205 + 0.19169i |
               | -0.25205 - 0.19169i  |
               |  0.0 + 0.0i                 |
               | -0.08799 - 0.72598i |
      V  =  | -0.08799 - 0.72598i |
               |  0.0 + 0.0i                 |
               |  1.00000 + 0.0i         |
               |  1.00000 + 0.0i         |
               |  1.0 + 0.0i                 |

Собственные значения   λk = ALFA(k) / BETA(k)

      λ1  =  0.83333 + 1.9930i
      λ2  =  0.83331 - 1.9931i
      λ3  =  0.50000 + 0.0i

Собственные векторы

                 | -0.25205 + 0.19169i |
      X1  =  | -0.08799 - 0.72598i  |
                 |  1.00000 + 0.0i         |
 
                 | -0.25205 - 0.19169i |
      X2  =  | -0.08799 - 0.72598i |
                 |  1.00000 + 0.0i        |

                 |  0.0 + 0.0i |
      X3  =  |  0.0 + 0.0i |
                 |  1.0 + 0.0i |