Текст подпрограммы и версий ( Фортран ) agg1r.zip |
Тексты тестовых примеров ( Фортран ) tagg1r.zip |
Текст подпрограммы и версий ( Си ) agg1r_c.zip |
Тексты тестовых примеров ( Си ) tagg1r_c.zip |
Текст подпрограммы и версий ( Паскаль ) agg1r_p.zip |
Тексты тестовых примеров ( Паскаль ) tagg1r_p.zip |
Вычисление всех собственных значений 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