|
Текст подпрограммы и версий afp5r_p.zip , afp5c_p.zip , afp5e_p.zip |
Тексты тестовых примеров tafp5r_p.zip , tafp5c_p.zip , tafp5e_p.zip |
Приведение прямоугольной вещественной матрицы размера 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) .