Документ взят из кэша поисковой машины. Адрес оригинального документа : http://num-anal.srcc.msu.ru/lib_na/cat/af/afp2r.htm
Дата изменения: Fri Sep 5 15:45:06 2014
Дата индексирования: Sun Apr 10 01:12:47 2016
Кодировка: Windows-1251
БЧА НИВЦ МГУ. AFP2R. Приведение и разложение матриц общего вида
Текст подпрограммы и версий ( Фортран )
afp2r.zip , afp2d.zip , afp2c.zip
Тексты тестовых примеров ( Фортран )
tafp2r.zip , tafp2d.zip , tafp2c.zip
Текст подпрограммы и версий ( Си )
afp2r_c.zip , afp2d_c.zip , afp2c_c.zip
Тексты тестовых примеров ( Си )
tafp2r_c.zip , tafp2d_c.zip , tafp2c_c.zip
Текст подпрограммы и версий ( Паскаль )
afp2r_p.zip , afp2e_p.zip , afp2c_p.zip
Тексты тестовых примеров ( Паскаль )
tafp2r_p.zip , tafp2e_p.zip , tafp2c_p.zip

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

Назначение

QR - разложение вещественной прямоугольной матрицы размера N*М (N ≥ М) нормализованным процессом метода отражений.

Математическое описание

Выполняется факторизация матрицы А вида АР = QR, где Q - унитарная матрица, R - верхняя треугольная матрица, Р - матрица перестановок. Матрица Р осуществляет перестановку столбцов А и обеспечивает выполнение нормализованного процесса. Матрица Q строится как произведение матриц Q1T, Q2T, ..., QMT, где Q1, Q2, ..., QM - преобразования отражения, приводящие матрицу АР к верхнему треугольному виду:

     QMQM-1 ... Q1AP = R 

В.В.Воеводин, Л.И.Карышева, Г.Д.Ким, Р.В.Петрина, комплекс алгоритмов, основанных на преобразованиях отражения, в пакете линейной алгебры, Сб. "Численный анализ на ФОРТРАНе", вып.3, Изд. МГУ, 1973.

Использование

    SUBROUTINE AFP2R (A, N, M, W, S) 

Параметры

A - двумерный N*М массив, в котором задается исходная матрица (тип: RЕАL); в результате работы подпрограммы в массиве А на соответствующих местах запоминаются наддиагональные элементы матрицы R, в остальной части массива в последовательных столбцах запоминаются векторы, порождающие матрицы отражения Q1, Q2, ..., QM ;
N, M - заданные размеры исходной матрицы, причем N ≥ М (тип: целый);
W - одномерный массив длины N, используемый подпрограммой как рабочий (тип: RЕАL); в результате работы подпрограммы в первых М компонентах W запоминаются диагональные элементы матрицы R;
S - одномерный массив длины М, в котором запоминается вектор, порождающий матрицу перестановок (тип: целый); в S (К) запоминается номер столбца, переставленного с К - ым столбцом текущей матрицы на К - ом шаге преобразования.

Версии

AFP2C - QR - разложение нормализованным процессом метода отражений для прямоугольной N*М (N ≥ М) комплексной матрицы;
AFP2D - QR - разложение нормализованным процессом метода отражений для прямоугольной N*М (N ≥ М) вещественной матрицы, заданной с удвоенной точностью.

Вызываемые подпрограммы: нет

Замечания по использованию

  1. 

В подпрограмме АFР2С массивы А, W имеют тип СОМРLЕХ.

  2.  В подпрограмме АFР2D массивы А, W имеют тип DОUВLЕ РRЕСISIОN.

Пример использования

      DIMENSION  A(7, 4), V(7), L(4)
      DATA  A /1., 0., 2., 1., -1., -1., 0., 3., 2., 1., -3., 2*1., 3*2., 
    *               -1., -4., 3*2., 4., 3., -2., 2*0., 2., 0./
      CALL  AFP2R (A, 7, 4, V, L)

Результат:

                 |  1.153  -3.288   1.315  -4.768 |
                 |  0.285   1.120  -0.493  -0.493 |
                 | -0.143  -0.208   1.357  -2.455 |
      A  =    | -0.570   0.684   0.149    1.334 |
                 |  0.285  -0.342  -0.224  -1.350 |
                 |  0.285   0.037  -0.282  -0.425 |
                 |  0.285  -0.342   0.076  -1.423 |

      (V(I), I = 1, 4)  =  -6.083,  -4.711,  -2.455,  7.797*10- 12 , 

      L  =   (3,  4,  3,  4) .

Это означает, что

                 | -6.083  -3.288    1.315  -4.768           |
                 |  0.         -4.711  -0.493  -0.493           |
                 |  0.          0.         -2.455  -2.455           |
      R  =    |  0.          0.           0.         7.797*10-12 |   , 
                 |  0.          0.           0.         0.                 |
                 |  0.          0.           0.         0.                 |
                 |  0.          0.           0.         0.                 |

      Qi  =  I - Wi * WiT ,   i = 1, 2, 3, 4 ,
 где
      W1T =  (1.153, 0.285, -0.143, -0.570, 0.285, 0.285, 0.285) ,

      W2T =  (0., 1.120, -0.208, 0.684, -0.342, 0.037, -0.342) ,

      W3T =  (0., 0., 1.357, 0.149, -0.224, -0.282, 0.076) ,

      W4T =  (0., 0., 0., -1.084, 0.430, 0.538, 0.592) .