Текст подпрограммы и версий ( Фортран ) 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 |
Вычисление всех собственных значений и собственных векторов комплексной верхней матрицы Хессенберга 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