Текст подпрограммы и версий ( Фортран )
ast1r.zip , ast1d.zip , ast1c.zip
Тексты тестовых примеров ( Фортран )
tast1r.zip , tast1d.zip , tast1c.zip
Текст подпрограммы и версий ( Си )
ast1r_c.zip , ast1d_c.zip , ast1c_c.zip
Тексты тестовых примеров ( Си )
tast1r_c.zip , tast1d_c.zip , tast1c_c.zip
Текст подпрограммы и версий ( Паскаль )
ast1r_p.zip , ast1e_p.zip , ast1c_p.zip
Тексты тестовых примеров ( Паскаль )
tast1r_p.zip , tast1e_p.zip , tast1c_p.zip

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

Назначение

Решение вещественной системы линейных алгебраических уравнений Аx = b или АTx = b с треугольной матрицей А.

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

Для заданной вещественной треугольной матрицы А порядка N решается система Аx = b (АTx = b), причем для нахождения компонент решения xi,  i = 1, ..., N система рассматривается как одно векторное уравнение

     x1a1 + ... + xNaN = b , 

где векторы ai,  i = 1, ..., N суть столбцы (строки) матрицы А.

Дж.Форсайт, М.Малькольм, К.Моулер. Машинные методы математических вычислений. М., Мир, 1980.

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

    SUBROUTINE  AST1R (A, M, N, B, LTR, LOW, IERR) 

Параметры

A - двумерный массив размера М на N, в котором задается матрица системы (тип: вещественный);
M - первая размерность массива А в вызывающей подпрограмме (тип: целый);
N - порядок матрицы системы (тип: целый);
B - вещественный вектор длины N в котором задается правая часть системы; на выходе содержит вычисленное решение системы (см. замечания по использованию);
LTR - признак решаемой системы (тип: целый), причем
LТR = 0 - если решается система Аx = b,
LТR ≤ 0 - если решается система АTx = b;
LOW - признак решаемой системы (тип: целый), причем
LОW = 0 - если матрица А верхняя треугольная,
LОW ≠ 0 - если матрица А нижняя треугольная;
IERR - целая переменная, содержащая на выходе информацию о прохождении счета; при этом
IЕRR=65 - если М ≤ 0 или N ≤ 0;
IЕRR=66 - если в процессе работы произошло переполнение (это говорит о том, что некоторые компоненты решения системы превосходят по абсолютной величине максимальное представимое на данной машине число);
IЕRR=-К - если в К - й строке матрицы А диагональный элемент равен нулю (это свидетельствует о вырожденности матрицы). Если таких строк несколько, то значение К полагается равным номеру последней из них (см. замечания по использованию);
IЕRR=67 - если система несовместна.

Версии

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

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

UTAFSI - подпрограмма выдачи диагностических сообщений.

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

  1. 

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

  2. 

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

  3.  Если вырабатывается значение переменной IЕRR, отличное от нуля, то выдается соответствующее диагностическое сообщение, и если IЕRR > 0, то происходит выход из подпрограммы. Если система совместна, но матрица А вырождена, т.е. для некоторых номеров К  А (К, К) = 0., то полагается  x (К) = 1.

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

      DIMENSION  A(5, 5), B(5), Z(5)
      M = 5
      N = 5
      LTR = 0
      LOW = 0
      DO 4 J = 1, N
      DO 3 I = 1, J
      A(I, J) = FLOAT(I*10 + J)
   3 CONTINUE
      Z(J) = FLOAT(J)
   4 CONTINUE
      DO 6 I = 1, M
      B(I) = 0.0
      DO 5 J = 1, M
      B(I) = B(I) + A(I, J)*Z(J)
   5 CONTINUE
   6 CONTINUE
      CALL  AST1R (A, M, N, B, LTR, LOW, IERR)

Результат:

      B  =   ( 1.000,  2.000,  3.000,  4.000,  5.000 ) .