Текст подпрограммы и версий ( Фортран )
asp1r.zip , asp1d.zip , asp1c.zip
Тексты тестовых примеров ( Фортран )
tasp1r.zip , tasp1d.zip , tasp1c.zip
Текст подпрограммы и версий ( Си )
asp1r_c.zip , asp1d_c.zip , asp1c_c.zip
Тексты тестовых примеров ( Си )
tasp1r_c.zip , tasp1d_c.zip , tasp1c_c.zip
Текст подпрограммы и версий ( Паскаль )
asp1r_p.zip , asp1e_p.zip , asp1c_p.zip
Тексты тестовых примеров ( Паскаль )
tasp1r_p.zip , tasp1e_p.zip , tasp1c_p.zip

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

Назначение

Нахождение нормального решения неопределенной системы линейных алгебраических уравнений полного ранга методом отражений.

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

Находится нормальное решение системы АХ = В, где А - матрица полного ранга размера N на М (N ≤ М), В - заданный вектор длины N. Для решения используется нормализованное приведение матрицы системы к нижней треугольной форме L с помощью последовательности преобразований отражения

 (1)     SAQ1Q2...QN = L , 

где Qi - соответствующие матрицы отражения, 1 ≤ i ≤ N , S - результирующая матрица перестановок, L - нижняя треугольная матрица размера N на М.

Из полученной треугольной системы

        LY = SB 

находится нормальное решение Y, по которому затем определяется искомое решение Х = Q1Q2 ... QNY .

Д.К.Фадеев, В.Н.Кублановская, В.Н.Фадеева, О решении линейных алгебраических систем с прямоугольными матрицами. Тp. Мат. ин-та АН СССР, 1968, 96.

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

    SUBROUTINE  ASP1R (A, B, X, T, IS, N, M, L) 

Параметры

A - вещественный двумерный массив размера N на М (N ≤ М), в котором задается исходная матрица А; в результате работы подпрограммы в массиве А на соответствуюших местах запоминаются поддиагональные элементы вычисленной нижней треугольной матрицы L; в остальной части массива в последовательных строках запоминаются векторы, порождающие соответствующие матрицы отражения;
B - вещественный вектор длины N, в котором задается правая часть системы;
X - вещественный вектор длины М , в котором запоминается найденное решение системы;
T - вещественный вектор длины М, используемый подпрограммой как рабочий; в результате работы подпрограммы в первых N компонентах массива Т запоминаются диагональные элементы нижней треугольной матрицы L;
IS - целый вектор длины N, в котором запоминаются перестановки строк при проведении нормализованного процесса (1); в IS (k) запоминается номер строки, переставленной с k - ой строкой на k - ом шаге преобразования;
N, M - число строк и столбцов исходной матрицы А, N ≤ М (тип: целый);
L - задает режим работы подпрограммы (тип: целый); при этом:
L = 1 - если система с данной матрицей А решается в первый раз;
L ≠ 1 - если система решается повторно с той же матрицей А, но с другой правой частью; в этом случае разложение (1) матрицы А не выполняется.

Версии

ASP1D - нахождение нормального решения недоопределенной системы линейных алгебраических уравнений полного ранга, заданной с удвоенной точностью, методом отражений.
ASP1C - нахождение нормального решения комплексной недоопределенной системы линейных алгебраических уравнений полного ранга методом отражений.

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

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

  1. 

В подпрограмме АSР1С параметры А, В, Х, Т имеют тип СОМРLЕХ.

  2. 

В подпрограмме АSР1D параметры А, В, Х, Т имеют тип DОUВLЕ РRЕСISIОN.

  3.  При повторном решении системы с той же матрицей информация, полученная ранее в массивах А, Т, IS не должна портиться.

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

      DOUBLE PRECISION  A, B, X, T
      DIMENSION  A(5, 6), B(5), X(6), T(6), IS(5)
      INTEGER  P
      DATA  A /36.D0, -630.D0, 3360.D0, -7560.D0, 7560.D0, -630.D0, 14700.D0, 
     *               -88200.D0, 211680.D0, -220500.D0, 3360.D0, -88200.D0, 564480.D0, 
     *               -1411200.D0, 1512000.D0, -7560.D0, 211680.D0, -1411200.D0, 
     *               3628800.D0, -3969000.D0, 7560.D0, -220500.D0, 1512000.D0, 
     *               -3969000.D0, 4410000.D0, -2772.D0, 83160.D0, -582120.D0, 
     *               1552320.D0, -1746360.D0/
      DATA  B /53872.98D0, -1542941.4D0, 10456462.8D0, -27223610.4D0, 
     *               30065729.4D0/
      N = 5
      M = 6
      P = 1
      CALL  ASP1D (A, B, X, T, IS, N, M, P)

Результат:

      X  =   ( 0.00000000044,  -0.069999999928,  0.799999999989,  -2.7000000002,
                  3.4999999997,  -1.5400000002 )