| Текст подпрограммы и версий ( Фортран ) asg6r.zip , asg6c.zip , asg6d.zip | Тексты тестовых примеров  ( Фортран ) tasg6r.zip , tasg6c.zip , tasg6d.zip | 
| Текст подпрограммы и версий ( Си ) asg6r_c.zip , asg6c_c.zip , asg6d_c.zip | Тексты тестовых примеров  ( Си ) tasg6r_c.zip , tasg6c_c.zip , tasg6d_c.zip | 
| Текст подпрограммы и версий ( Паскаль ) asg6r_p.zip , asg6c_p.zip , asg6e_p.zip | Тексты тестовых примеров  ( Паскаль ) tasg6r_p.zip , tasg6c_p.zip , tasg6e_p.zip | 
Решение системы линейных алгебраических уравнений методом отражений.
Находится решение системы А*X = B, где А - невырожденая квадратная матрица порядка N, В - заданный вектор длины N. Для решения используется нормализованное приведение матрицы системы А к верхней треугольной форме R с помощью последовательности преобразований отражения
(1) QN-1 ... Q2*Q1*A*S = R ,
где Qi - соответствующие матрицы отражения, S - результирующая матрица перестановок, R - верхняя треугольная матрица.
Из полученной треугольной системы
R*Y = QN-1 ... Q2*Q1*B
находится решение Y, по которому затем определяется искомое решение Х = S*Y.
Дж.Х.Уилкинсон. Алгебраическая проблема собственных значений. Изд."Наука", М., 1970.
SUBROUTINE ASG6R ( A, B, X, T, IS, N, L)
Параметры
| A - | вещественный двумерный массив размера N на N, в котором задается исходная матрица; в результате работы подпрограммы в массиве А на соответствующих местах запоминаются наддиагональные элементы вычисленной верхней треугольной матрицы R, в остальной части массива А в последовательных столбцах запоминаются векторы, порождающие соответствующие матрицы отражения; | 
| B - | вещественный вектор длины N, в котором задается правая часть системы; | 
| X - | вещественный вектор длины N, в котором запоминается полученное решение системы; | 
| T - | вещественный вектор длины N, в котором запоминаются диагональные элементы верхней треугольной матрицы R; | 
| IS - | целый вектор длины N, в котором запоминаются перестановки столбцов при проведении нормализованного процесса (1); в IS (k) запоминается номер столбца, переставленного с k - ым столбцом на k - ом шаге преобразования; | 
| N - | порядок исходной матрицы (тип: целый); | 
| L - | задает режим работы подпрограммы (тип: целый); при этом: | 
| L = 1 - | если система с данной матрицей А решается впервые; | 
| L ≠ 1 - | если повторно решается система с матрицей А, но другой правой частью; в этом случае факторизация (1) матрицы А не выполняется. | 
Версии
| ASG6C - | решение комплексной системы линейных алгебраических уравнений методом отражений. | 
| ASG6D - | решение системы линейных алгебраических уравнений, заданной с удвоенной точностью, методом отражений. | 
Вызываемые подпрограммы: нет
Замечания по использованию
| 1. | В подпрограмме АSG6С параметры А, В, Х, Т имеют тип СОМРLЕХ. | |
| 2. | В подпрограмме АSG6D параметры А, В, Т, Х имеют тип DОUВLЕ РRЕСISIОN. | |
| 3. | При повторном решении системы с той же матрицей А, но с другой правой частью, информация, полученная ранее в массивах А, Т, IS не должна портиться. | 
      DIMENSION  A(6, 6), B(6), X(6), T(6), IS(6)
      DATA  B /1., 2., 3., 4., 5., 1./
      N = 6
      L = 1
      DO 2 J = 1, N
      DO 1 I = J, N
      K = N + 1 - I
      A(I, J) = K
   1 A(J, I) = K
   2 CONTINUE
      CALL  ASG6R (A, B, X, T, IS, N, L)
Результат:
      X  =  (-1., 0., 0., 0., 5., -3.)