Текст подпрограммы и версий ( Фортран )
ast2r.zip , ast2d.zip , ast2c.zip
Тексты тестовых примеров ( Фортран )
tast2r.zip , tast2d.zip , tast2c.zip
Текст подпрограммы и версий ( Си )
ast2r_c.zip , ast2d_c.zip , ast2c_c.zip
Тексты тестовых примеров ( Си )
tast2r_c.zip , tast2d_c.zip , tast2c_c.zip
Текст подпрограммы и версий ( Паскаль )
ast2r_p.zip , ast2e_p.zip , ast2c_p.zip
Тексты тестовых примеров ( Паскаль )
tast2r_p.zip , tast2e_p.zip , tast2c_p.zip

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

Назначение

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

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

Для заданной в компактной форме вещественной трехдиагональной матрицы А порядка N выполняется треугольная факторизация Гаусса L- 1А = U, где U - верхняя треугольная ленточная матрица, и затем решается система Ux = L- 1b.

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

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

    SUBROUTINE  AST2R (A, M, N, B, IERR) 

Параметры

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

Версии

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

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

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

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

  1. 

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

  2. 

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

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

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

      DIMENSION  A(5, 3), B(5), Z(5)
      M = 5
      N = 5
      DO 4  I = 1, M
      Z(I) = FLOAT(I)
      J0 = MAX0(1, I-1)
      J1 = MIN0(N, I + 1)
      DO 3  J = J0, J1
      K = J - I + 2
      A(I, K) = FLOAT(I*10 + J)
   3 CONTINUE
   4 CONTINUE
      A(1, 1) = 0.
      A(5, 3) = 0.
      DO 6  I = 1, M
      B (I) = 0.0
      DO 5  K = 1, 3
      J = K + I - 2
      B(I) = B(I) + A(I, K)*Z(J)
   5 CONTINUE
   6 CONTINUE
      CALL  AST2R (A, M, N, B, IERR)

Результат:

      B  =   ( 1., 2., 3., 4., 5. )