Текст подпрограммы и версий ( Фортран )
am02d.zip , am02c.zip
Тексты тестовых примеров ( Фортран )
tam02d.zip , tam02c.zip
Текст подпрограммы и версий ( Си )
am02d_c.zip , am02c_c.zip
Тексты тестовых примеров ( Си )
tam02d_c.zip , tam02c_c.zip
Текст подпрограммы и версий ( Паскаль )
am02e_p.zip , am02c_p.zip
Тексты тестовых примеров ( Паскаль )
tam02e_p.zip , tam02c_p.zip

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

Назначение

Вычисление нормированного вектора невязки системы линейных алгебраических уравнений.

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

Вычисляется вектор R = r / S, где  r = b - Аx,  b - заданный вектор длины  N,  x - заданный вектор длины  М,  A - заданная матрица размера N * М,  S = || r || ∞.

Нормировка вектора невязки  r  необходима при решении системы линейных алгебраических уравнений Аx = b  с уточнением.

В.В.Воеводин, Вычислительные основы линейной алгебры, "Наука", М., 1977.

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

    SUBROUTINE  AM02D (A, B, X, R, S, N, M) 

Параметры

A - двумерный массив размера N * М, в котором задается матрица системы (тип: вещественный двойной точности);
B - вектор длины  N, в котором запоминается правая часть системы (тип: вещественный двойной точности);
X - вектор длины  М, в котором задается решение системы (тип: вещественный двойной точности);
R - одномерный массив длины  N, в котором запоминается вычисленный нормированный вектор невязки (тип: вещественный двойной точности);
S - переменная, в которой запоминается бесконечная норма вычисленного вектора невязки (тип: вещественный двойной точности);
N, M - число строк и столбцов матрицы системы (тип: целый).

Версии

AM02C - вычисление нормированного вектора невязки комплексной системы линейных алгебраических уравнений.

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

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

  1. 

В подпрограмме AM02C параметры А, B, X, R имеют тип СОМРLЕХ.

  2.  Подпрограммы АМ02D, AM02C целесообразно использовать при решении системы линейных алгебраических уравнений с уточнением (см. пример использования).

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

       DIMENSION  A(7, 7), A1(7, 7), B(7), X(7), D(7), R(7), S1(7)
       DOUBLE PRECISION A, A1, B, X, D, R, S1, S
       N = 7
       DO 1  I = 1, N
       B(I) = 0.D0
       DO 1  J = 1, N
       A(I, J) = 360360.D0/(I + J - 1.D0)
   1  A1(I, J) = A(I, J)
       B(5) = 360360.D0
       CALL  ASH0D (A, B, X, S1, N, 1)
       DO 2  K = 1, 2
       CALL  AM02D (A1, B, X, R, S, N, N)
       CALL  ASH0D (A, R, D, S1, N, 2)
       DO 2  I = 1, N
   2  X(I) = X(I) + D(I)*S 

Подпрограмма АSН0D (А, В, Х, S, N, Р) находит решение системы Аx = b, причем при повторном решении системы с той же матрицей и другой правой частью параметр  Р полагают отличным от единицы. Проводится два шага уточнения решения системы с матрицей Гильберта 7 порядка и правой частью  b = (0, 0, 0, 0, 1, 0, 0).

Результат:

                X1                                X2                                X3
    4.85115043411 + 04     4.85099999532 + 04    4.85100000000 + 04
  - 1.94046009606 + 06  - 1.94039999813 + 06  - 1.94040000000 + 06
    1.87115797099 + 07     1.87109999819 + 07    1.87110000000 + 07
  - 7.27672565200 + 07  - 7.27649999300 + 07  - 7.27650000001 + 07
    1.33406641488 + 08     1.33402499871 + 08    1.33402500000 + 08
  - 1.15263342213 + 08  - 1.15259759888 + 08  - 1.15259760000 + 08
    3.78389772248 + 07     3.78377999634 + 07    3.78378000000 + 07

где   X1 - решение системы без уточнения;
        X2 - решение системы после 1-ого шага уточнения;
        X3 - решение системы после 2-ого шага уточнения.