|
Текст подпрограммы и версий ( Фортран ) afg3r.zip |
Тексты тестовых примеров ( Фортран ) tafg3r.zip |
|
Текст подпрограммы и версий ( Си ) afg3r_c.zip |
Тексты тестовых примеров ( Си ) tafg3r_c.zip |
|
Текст подпрограммы и версий ( Паскаль ) afg3r_p.zip |
Тексты тестовых примеров ( Паскаль ) tafg3r_p.zip |
Приведение пары вещественных матриц к верхней почти треугольной форме ортогональными преобразованиями с помощью QZ - алгоритма.
Для заданных вещественных матриц А и В размера N*N вычисляются такие ортогональные матрицы Q и Z размера N*N, что матрица QАZ является верхней почти треугольной, а матрица QВZ - верхней треугольной.
В результате работы подпрограммы АFG3R матрица QАZ помещается на место матрицы А, матрица QВZ - на место матрицы В. Левостороннее преобразование Q не сохраняется, правостороннее преобразование Z по желанию пользователя может сохраняться.
С.В.Мoler and G.W.Stewart, Аn Аlgorithm for Generalized Mатrix Еigenvalue Рroblems, SIАМ J. Numer.Аnal., 10, 1973.
SUBROUTINE AFG3R (A, B, Z, N, M)
Параметры
| A, B - | вещественные двумерные массивы размера N*N, в которых задаются исходные матрицы А и В; в результате работы подпрограммы в массивы А и В записываются соответственно верхняя почти треугольная матрица QАZ и верхняя треугольная матрица QВZ ; |
| Z - | вещественный двумерный массив размера N*N, который в результате работы подпрограммы по желанию пользователя может содержать матрицу Z правостороннего преобразования; если матрица Z не нужна, параметр Z в подпрограмме не используется; |
| N - | заданный порядок исходных матриц А и В (тип: целый); |
| M - | задает режим работы подпрограммы (тип:целый); при этом |
| М = 0 - | если преобразование Z сохраняется, |
| М = 1 - | если преобразование Z не сохраняется. |
Версии: нет
Вызываемые подпрограммы: нет
Замечания по использованию
| 1. |
Матрица преобразования Z необходима для вычисления соответственных векторов обобщенной проблемы Аx = λВx по правилу x = Zy, где y - собственные векторы обобщенной проблемы QАZy = λQВZy . | |
| 2. | Если матрица преобразования Z не нужна, т.е. когда М = 1, то в качестве фактического параметра Z можно использовать параметр А. |
DIMENSION A(3, 3), B(3, 3), Z(3, 3)
DATA A /1., -10., 5., 0.5, 2., 1., 0., 0., 0.5/,
* B /0.5, 3., 4., 0., 3., 0.5, 2*0., 1./
N = 3
M = 0
CALL AFG3R (A, B, Z, N, M)
Результаты:
| 1.89057 -2.06068 0.27000 |
A = |-11.06462 0.94174 0.35338 |
| 0.00000 -0.39941 -0.09705 |
| -5.02494 -2.23447 0.65793 |
B = | 0.00000 2.07058 0.71846 |
| 0.00000 0.00000 -0.14417 |
| 1.00000 0.00000 0.00000 |
Z = | 0.00000 0.99805 0.06238 |
| 0.00000 0.06238 -0.99805 |