Текст подпрограммы и версий ( Фортран ) 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 |
Вычисление нормированного вектора невязки системы линейных алгебраических уравнений.
Вычисляется вектор 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-ого шага уточнения.