Текст подпрограммы и версий ( Фортран ) amb1r.zip , amb1d.zip , amb1c.zip , amb1p.zip |
Тексты тестовых примеров ( Фортран ) tamb1r.zip , tamb1d.zip , tamb1c.zip , tamb1p.zip |
Текст подпрограммы и версий ( Паскаль ) amb1r_p.zip , amb1e_p.zip , amb1c_p.zip , amb1z_p.zip |
Тексты тестовых примеров ( Паскаль ) tamb1r_p.zip , tamb1e_p.zip , tamb1c_p.zip , tamb1z_p.zip |
Масштабирование квадратной вещественной матрицы общего вида.
На первом этапе своей работы подпрограмма АМВ1R с помощью перестановок строк и столбцов приводит матрицу А порядка N к виду:
| T X Y | PAP = | 0 B Z | | 0 0 R |
где | |
P - | матрица перестановок порядка N; |
T, R - | верхние треугольные матрицы порядка LОW и N - IGН соответственно; |
B - | квадратная матрица, расположенная в строках и столбцах с номерами LОW, LОW + 1, ..., IGН и обладающая тем свойством, что матрица B - diag (В) не имеет нулевых строк и столбцов; |
X,Y,Z - | прямоугольные матрицы соответствующих размерностей. |
Диагональные элементы матриц T и R являются собственными
значениями матрицы А. В том случае, когда матрица B отсутствует,
то значения переменных LОW и IGН полагаются равными единице.
На втором этапе подпрограмма АМВ1R итерационно строит такую
невырожденную диагональную матрицу D порядка
IGН - LОW + 1, что матрица
D -1 B D
становится промасштабированной в том смысле, что суммы
абсолютных значений элементов соответственных строк и столбцов
будут примерно равными.
Диагональные элементы матриц D являются степенями основания
системы счисления, используемой в арифметике с плавающей
запятой на данной машине.
В результате работы подпрограммы АМВ1R будет получена матрица вида
| T X D Y | | 0 D-1 B D D-1 Z | | 0 0 R |
Информация о матрицах Р и D запоминается и может быть впоследствии использована для восстановления собственных векторов исходной матрицы.
Уилкинсон, Pайнш. "Справочник алгоритмов на языке АЛГОЛ. Линейная алгебра". М.: Машиностроение, 1976.
SUBROUTINE AMB1R (NM, N, A, LOW, IGH, SCALE)
Параметры
NM - | число строк двумерного массива A, указанных при описании этого массива в вызывающей подпрограмме (тип: целый); |
N - | порядок исходной матрицы, N ≤ NМ (тип: целый); |
A - | вещественный двумерный массив размерности NМ на N, содержащий в первых N строках на входе в подпрограмму исходную матрицу порядка N, а на выходе из подпрограммы - матрицу, полученную в результате масштабирования; |
LOW - IGH | целые переменные, содержащие на выходе из подпрограммы граничные индексы строк и столбцов масштабированной матрицы (см. математическое описание); |
SCALE - |
вещественный вектор длины N, содержащий
информацию о матрицах Р и D (см. математическое описание); при этом для J = 1, 2,..., LОW - 1 и для J = IGН + 1,..., N элемент массива SСАLЕ (J) содержит индекс строки и столбца, которые были переставлены с J - ой строкой и J - ым столбцом соответственно, причем перестановки выполнялись в следующем порядке: сначала J изменялось от N до IGН + 1, затем от 1 до (LОW - 1); для J = LОW, LОW + 1, ..., IGН элемент массива SСАLЕ (J) содержит (J - LОW + 1) - ый элемент матрицы D. |
Версии
AMB1D - | масштабирование вещественной квадратной матрицы общего вида, заданной с удвоенной точностью; |
AMB1C - | масштабирование комплексной квадратной матрицы общего вида (см. замечания по использованию); |
AMB1P - | масштабирование комплексной квадратной матрицы общего вида, заданной с удвоенной точностью. |
Вызываемые подпрограммы: нет
Замечания по использованию
1. |
В подпрограмме АМВ1D параметры А и SСАLЕ имеют тип DОUВLЕ РRЕСISIОN. | |
2. |
В подпрограмме АMB1C исходная комплексная матрица А порядка N задается в двух вещественных массивах АR и АI размеров NМ на N, содержащих в своих первых N строках ее вещественную и мнимые части соответственно. На выходе из подпрограммы массивы АR и АI содержат
вещественные и мнимые части промасштабированной матрицы. Первый оператор подпрограммы АMB1C имеет вид: SUВRОUТINЕ АМВ1С (NМ, N, АR, АI, LОW, IGН, SСАLЕ). | |
3. |
Подпрограмма АMB1P имеет те же параметры, что и АMB1C, только при этом параметры АR, АI и SСАLЕ имеют тип DОUВLЕ РRЕСISIОN. | |
4. |
Единственной арифметической операцией, которой подвергаются элементы исходной матрицы в подпрограмме АМВ1R, является умножение на целую степень основания системы счисления, используемой в арифметике с плавающей запятой на данной машине, поэтому, если только во время вычислений не происходит выхода за границы диапазона представимых на данной машине чисел, то все вычисления будут произведены точно, т.е. будут получены матрицы B и D, точно удовлетворяющие соотношению В = D-1 А D В общем же случае вычисленные матрицы B и D удовлетворяют соотношению В = D-1 (А + F) D , где || F || 2 ≤ k w , w - минимальное представимое на данной машине положительное число; k - число итераций. |
DIMENSION A(5, 5), SCALE(5) DATA A /1., 2., 3*0., 32., 2*1., 4*0., 1., 2*0., 5*1., 4*0., 1./ CALL AMB1R (5, 5, A, LOW, IGH, SCALE) Результаты: | 1. 0.25 0. 0. 1. | | 0. 1. 8. 0. 4. | A = | 0. 8. 1. 0. 1. | | 0. 0. 0. 1. 1. | | 0. 0. 0. 0. 1. | LOW = 2 IGH = 3 SCALE = (3., 0.25, 1., 4., 4.)