Ме́тод Га́усса — Зе́йделя (метод Зейделя, процесс Либмана, метод последовательных замещений) — классический итерационный метод решения системы линейных уравнений.
Назван в честь Зейделя и Гаусса.
Постановка задачи Решение с использованием метода Гаусса-Зейделя Система:, где
Или
Метод Чтобы пояснить суть метода, понадобится переписать задачу в виде
Здесь в -м уравнении все члены, содержащие , для перенесены в правую часть. Эта запись может быть представлена как
где в принятых обозначениях означает матрицу, у которой на главной диагонали стоят соответствующие элементы матрицы , а все остальные нули; тогда как матрицы и содержат верхнюю и нижнюю треугольные части , на главной диагонали которых нули.
Итерационный процесс в методе Гаусса — Зейделя строится по формуле
после выбора соответствующего начального приближения .
Метод Гаусса — Зейделя можно рассматривать как модификацию метода Якоби. Основная идея модификации состоит в том, что новые значения используются здесь сразу же по мере получения, в то время как в методе Якоби они не используются до следующей итерации:
где
Таким образом, i-я компонента -го приближения вычисляется по формуле
Например, при : , то есть , то есть , то есть
Условие сходимости Теорема , где – матрица, обратная к . Тогда при любом выборе начального приближения : метод Гаусса-Зейделя сходится; скорость сходимости метода равна скорости сходимости геометрической прогрессии со знаменателем ; верна оценка погрешности: .
Условие окончания Условие окончания итерационного процесса Зейделя при достижении точности в упрощённой форме имеет вид:
Более точное условие окончания итерационного процесса имеет вид
и требует больше вычислений. Хорошо подходит для разреженных матриц.
Пример реализации на Python import numpy as np
def seidel(A, b, eps): n = len(A) x = np.zeros(n) # zero vector
converge = False while not converge: x_new = np.copy(x) for i in range(n): s1 = sum(A[i][j] * x_new[j] for j in range(i)) s2 = sum(A[i][j] * x[j] for j in range(i + 1, n)) x_new[i] = (b[i] - s1 - s2) / A[i][i]
converge = np.linalg.norm(x_new - x) <= eps x = x_new
См. также Геометрическая прогрессия Метод простой итерации Метод Якоби Теорема Банаха Метод итерации
Ссылки David M. Strong. Iterative methods for solving Ax = b — Gauss-Seidel Method. MAA Publications. The Jacobi and Gauss-Seidel Iterative Methods The Gauss-Seidel method. Wolfram MathWorld.
Категория:Методы решения СЛАУ Категория:Объекты, названные в честь Карла Фридриха Гаусса