Текст подпрограммы и версий ( Фортран ) afp0r.zip , afp0c.zip , afp0d.zip |
Тексты тестовых примеров ( Фортран ) tafp0r.zip , tafp0c.zip , tafp0d.zip |
Текст подпрограммы и версий ( Си ) afp0r_c.zip , afp0c_c.zip , afp0d_c.zip |
Тексты тестовых примеров ( Си ) tafp0r_c.zip , tafp0c_c.zip , tafp0d_c.zip |
Текст подпрограммы и версий ( Паскаль ) afp0r_p.zip , afp0c_p.zip , afp0e_p.zip |
Тексты тестовых примеров ( Паскаль ) tafp0r_p.zip , tafp0c_p.zip , tafp0e_p.zip |
QR - разложение вещественной прямоугольной матрицы размера N*М (N ≥ М) методом отражений.
Выполняется факторизация матрицы А вида А = QR, где Q - унитарная, R - верхняя треугольная матрица. Матрица R получается в результате умножения матрицы А на последовательность преобразований отражения Q1, Q2, ..., QМ таких, что QМQМ - 1...Q1А = R , при этом
Q = Q1TQ2T ... QMT .
В.В.Воеводин, Л.И.Карышева, Г.Д.Ким, Р.В.Петрина, Комплекс алгоритмов основанных на преобразованиях отражения, в пакете линейной алгебры, Сб. "Численный анализ на ФОРТРАНе", вып.3, Изд. МГУ, 1973.
SUBROUTINE AFP0R (A, N, M, W)
Параметры
A - | двумерный N*М массив, в котором задается исходная матрица (тип: RЕАL); в результате работы подпрограммы в массиве А на соответствующих местах запоминаются наддиагональные элементы матрицы R, в остальной части массива в последовательных столбцах запоминаются векторы, порождающие матрицы отражения Q1, Q2, ..., QМ ; |
N, M - | заданные размеры исходной матрицы, причем N ≥ М (тип: целый); |
W - | одномерный массив длины N, используемый подпрограммой как рабочий (тип: RЕАL); в результате работы подпрограммы в первых М компонентах W запоминаются диагональные элементы матрицы R. |
Версии
AFP0C - | QR - разложение методом отражений для прямоугольной N*М (N ≥ М) комплексной матрицы; |
AFP0D - | QR - разложение методом отражений для прямоугольной N*М (N ≥ М) вещественной матрицы, заданной с удвоенной точностью. |
Вызываемые подпрограммы: нет
Замечания по использованию
1. |
В подпрограмме АFР0С массивы А, W имеют тип СОМРLЕХ. | |
2. | В подпрограмме АFР0D массивы А, W имеют тип DОUВLЕ РRЕСISIОN. |
DIMENSION A(5, 3), V(5) DATA A /1., 2., 0., 1., -1., 0., 2*1., 2., 1., 1., 3., 1., 2*0./ CALL AFP0R (A, 5, 3, V) Результат: | 1.174 -1.134 -2.646 | | 0.644 1.076 -0.418 | A = | 0.000 0.389 1.118 | | 0.322 0.657 -0.853 | | -0.322 0.510 0.150 | (V(I), I = 1, 3) = -2.646, -2.390, -1.956. Это означает, что | -2.646 -1.134 -2.646 | | 0. -2.390 -0.418 | R = | 0. 0. -1.956 | | 0. 0. 0. | | 0. 0. 0. | , Qi = I - Wi * WiT, i = 1, 2, 3 , где W1T = (1.174, 0.644, 0., 0.322, -0.322) , W2T = (0., 1.076, 0.389, 0.657, 0.510) , W3T = (0., 0., 1.118, -0.853, 0.150) .