Текст подпрограммы и версий ( Фортран )
asg2r.zip , asg2d.zip , asg2c.zip
Тексты тестовых примеров ( Фортран )
tasg2r.zip , tasg2d.zip , tasg2c.zip
Текст подпрограммы и версий ( Си )
asg2r_c.zip , asg2d_c.zip , asg2c_c.zip
Тексты тестовых примеров ( Си )
tasg2r_c.zip , tasg2d_c.zip , tasg2c_c.zip
Текст подпрограммы и версий ( Паскаль )
asg2r_p.zip , asg2e_p.zip , asg2c_p.zip
Тексты тестовых примеров ( Паскаль )
tasg2r_p.zip , tasg2e_p.zip , tasg2c_p.zip

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

Назначение

Решение вещественной системы линейных алгебраических уравнений А*x = b с матрицей А и вектором правой части b методом Гаусса с выбором ведущего элемента по всей матрице. При повторном решении системы с той же матрицей и другой правой частью эффективно используется выполненная ранее факторизация матрицы.

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

Матрица системы А  N - го порядка приводится к верхнетреугольному виду U последовательностью элементарных преобразований Гаусса  L1, L2, ...LN - 1 и матрицами перестановок Q и Т так, что

     LN-1*LN-2...L1*Q*A*T = U , 

и затем решается система с треугольной матрицей U и правой частью
LN - 1*LN - 2...L1*Q*b . Вычисленное решение  y  преобразуется в решение исходной системы  x  по правилу x = Т*y. Матрицы  Li ,  i = 1, 2, ...N - 1, имеют единичные диагональные элементы, матрицы Q и Т осуществляют соответственно перестановку строк и столбцов матрицы А и обеспечивают стратегию выбора ведущего элемента по всей матрице.

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

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

    SUBROUTINE  ASG2R ( A, B, X, S, N, L) 

Параметры

A - двумерный N на N массив, в котором задается исходная матрица (тип: RЕАL); по окончании работы подпрограммы в массиве А на соответствующих местах запоминаются элементы матрицы U и векторы-столбцы, порождающие матрицы  Li ;
B - вектор длины N, в котором задается вектор правой части системы (тип: вещественный);
X - вектор длины N, в котором запоминается вектор вычисленного решения системы (тип: вещественный);
S - двумерный N на 2 массив , в столбцах которого запоминаются векторы, порождающие матрицы перестановок Q и Т соответственно; при этом в S (К, 1) и S (К, 2) запоминаются соответственно номера строки и столбца переставленных на К - ом шаге с К - ой строкой и К - ым столбцом (тип: целый);
N - заданный порядок матрицы системы (тип: целый);
L - признак решаемой задачи (тип: целый), причем
L = 1 - если система с данной матрицей решается впервые;
L ≠ 1 - если система с данной матрицей решается повторно.

Версии

ASG2D - решение системы линейных алгебраических уравнений А*x = b методом Гаусса с выбором ведущего элемента по всей матрице для вещественных А и b, заданных с удвоенной точностью.
ASG2C - решение системы линейных алгебраических уравнений А*x = b методом Гаусса с выбором ведущего элемента по всей матрице для комплексных А и b.

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

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

  1. 

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

  2. 

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

  3. 

Поскольку факторизация Гаусса требует N - 1 шагов, то S (N, i)=0, i = 1, 2.

  4.  Подпрограммы АSG2R, АSG2D, АSG2С позволяют помещать вычисленное решение Х на место правой части В.

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

      DОUВLЕ РRЕСISIОN  A, B, X
      DIMENSION  A(7, 7), B(7), X(7), S(7, 2)
      DO 1  I = 1, 7
      DO 1  J = 1, 7
   1 A(I, J) = 360360.D0 / FLOAT(I + J-1)
      DO 2  I = 1, 7
   2 B(I) = 0.D0
      B(1) = 1.D0
      CALL  ASG2D (A, B, X, S, 7, 1)

Результат:

               |  0.000136 |
               | -0.003263 |
               |  0.024476 |
    X  =    | -0.081585 |
               |  0.134615 |
               | -0.107692 |
               |  0.033333 |