Текст подпрограммы и версий ( Фортран )
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

Подпрограмма:  AFP0R

Назначение

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) .