Текст подпрограммы и версий
afp5r_p.zip , afp5c_p.zip , afp5e_p.zip
Тексты тестовых примеров
tafp5r_p.zip , tafp5c_p.zip , tafp5e_p.zip

Подпрограмма:  AFP5R (модуль AFP5R_p)

Назначение

Приведение прямоугольной вещественной матрицы размера N*M (N ≤ M) к нижнему двухдиагональному виду методом отражений.

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

Для прямоугольной N*М (N ≤ М) матрицы А строятся две последовательности матриц отражения Q1, Q2, ..., QN - 2, R1, R2, ..., RN такие, что

      QN-2 ... Q2Q1AR1R2 ... RN = D , 

где D - нижняя двухдиагональная матрица.

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

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

procedure AFP5R(var A :Array of Real; N :Integer; M :Integer;
                var D1 :Array of Real; var D2 :Array of Real);

Параметры

A - двумерный N*М массив, в котором задается исходная матрица (тип: Real); в результате работы подпрограммы в А запоминается информация о матрицах отражения: в поддиагональной части массива А в последовательных столбцах запоминаются векторы, порождающие матрицы отражения Q1, Q2, ..., QN - 2; в остальной части массива в последовательных строках запоминаются векторы, порождающие матрицы отражения R1, R2, ..., RN.
N, M - заданные размеры исходной матрицы, причем N ≤ М (тип: целый);
D1 - одномерный массив длины М, используемый подпрограммой как рабочий (тип: Real); в результате работы подпрограммы в первых N компонентах D1 запоминаются элементы главной диагонали матрицы D;
D2 - одномерный массив длины N, используемый подпрограммой как рабочий (тип: Real); в результате работы подпрограммы в первых N - 1 компонентах D2 запоминаются элементы второй диагонали матрицы D.

Версии

AFP5C - приведение методом отражений к нижнему двухдиагональному виду прямоугольной N*М (N ≤ М) комплексной матрицы;
AFP5D - приведение методом отражений к нижнему двухдиагональному виду прямоугольной N*М (N ≤ М) вещественной матрицы, заданной с расширенной (Extended) точностью.

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

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

  1. 

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

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

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




Результат:

                 | 1.068    0.000  -0.393    0.262  -0.131  -0.787 |
                 | 1.064   -1.045  -0.904  -0.118   0.070  -0.266 |
      A  =    | 0.870     1.310   1.279  -0.252   0.501  -0.221 |  , 
                 | 0.332   -0.534   0.000    1.257  -0.518  -0.391 |

     D1  =   (-7.141,  7.608,  -2.625,  -4.142,  -0.518,  -0.391) ,

     D2  =   (-3.175,  -3.851,  0.412,  -0.534) .

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

                 | -7.141   0.000   0.000   0.000  0.000  0.000 |
                 | -3.175   7.608   0.000   0.000  0.000  0.000 |
      D  =    |  0.000  -3.851  -2.625   0.000  0.000  0.000 |  , 
                 |  0.000   0.000   0.412  -4.142  0.000  0.000 |

        Qi  =  I - Wi*WiT ,    i = 1, 2 ,
где
      W1T  =   (0.000,  1.064,  0.870,  0.332) ,

      W2T  =   (0.000,  0.000,  1.310,  -0.534) ;

        Ri =  I - Ui*UiT ,    i = 1, 2, 3, 4 ,
где
      U1T  =   (1.068,  0.000,  -0.393,  0.262, -0.131,  -0.787) ,

      U2T  =   (0.000,  -1.045,  -0.904, -0.118,  0.070, -0.266) ,

      U3T  =   (0.000,  0.000,  1.279,  -0.252,  0.501,  -0.221) ,

      U4T  =   (0.000,  0.000,  0.000,  1.257,  -0.518,  -0.391) .