
Итерационные методы
Уточнение решения. Решения, получаемые с помощью прямых методов, обычно содержат погрешности, вызванные округлениями при выполнении операций над числами с плавающей точкой на ЭВМ с ограниченным числом разрядов. В ряде случаев эти погрешности могут быть значительными, и необходимо найти способ их уменьшения. Рассмотрим здесь один из методов, позволяющий уточнить решение, полученное с помощью прямого метода.
Найдем решение системы линейных уравнений
(1)
Пусть с помощью некоторого прямого
метода вычислены приближенные значения
неизвестных
.
Подставляя это решение в левые части
системы (1), получаем некоторые значения
,
отличные от
:
(2)
Введем
обозначения:
- погрешности значений неизвестных,
- невязки, т. е.
,
,
(3).
Вычитая каждое уравнение системы (2) из соответствующего уравнения системы (1), с учетом обозначений (3) получаем
(4)
Решая
эту систему, находим значения погрешностей
,которые
используем в качестве поправок к
решению. Следующие
приближения неизвестных имеют вид :
Таким
же способом можно найти новые поправки
к решениюи следующие приближения переменных
и т. д. Процесс продолжается до тех пор,
пока все очередные значения погрешностей
(поправок)
не станут достаточно малыми.
Рассмотренный процесс уточнения решения прёдставляет фактически итерационный метод решения системы линейных уравнений. При этом заметим, что для нахождения очередного приближения, т. е. на каждой итерации, решаются системы уравнений вида ,(4) с одной и той же матрицей, являющейся матрицей исходной системы (1); при разных правых частях. Это позволяет строить экономические алгоритмы. Например, при использовании метода Гаусса сокращается объем вычислений на этапе прямого хода.
Решение
систем уравнений с помощью рассмотренного
метода, а также при использовании других
итерационных
методов сводится к следующему. Вводятся
исходные
данные, например коэффициенты уравнений
и допустимое
значение погрешности. Необходимо также
задать
начальные приближения значений
неизвестных. Они либо
вводятся в ЭВМ, либо вычисляются
каким-либо способом
(в частности, путем решения системы
уравнений с
помощью прямого метода). Затем организуется
циклический вычислительный процесс,
каждый цикл которого представляет
собой одну итерацию. В результате каждой
итерации
получается новые значения неизвестных.
При малом
(с заданной допустимой погрешностью)
изменении
этих значений на двух последовательных
итерациях процесс
прекращается, и происходит вывод значений
неизвестных,
полученных на последней итерации.
Заметим, что в этой схеме не предусмотрен случай отсутствия сходимости. Для предотвращения непроизводительных затрат машинного времени в алгоритм вводят счетчик числа итераций и при достижении им некоторого заданного значения счет прекращают.
Метод Гаусса — Зейделя.
Одним из самых распространенных итерационных методов, отличающийся простотой и легкостью программирования, является метод Гаусса — Зейделя.
Проиллюстрируем сначала этот метод на примере решения системы
(5)
Предположим,
что диагональные элементы
отличны
от нуля (в противном случае можно
переставить уравнения).
Выразим неизвестные
соответственно
из первого, второго и третьего уравнений
системы
(5):
(6)
(7)
(8)
Зададим
некоторые начальные (нулевые) приближения
значений неизвестных:,
,
.Подставляя
эти значения в правую часть выражения
(6),
получаем новое (первое) приближение для
:
.
Используя это значение для
и приближение
для
,
находим из (7) первое приближение для
:
.
И наконец, используя вычисленные значения
,
,
находим с помощью выражения (8) первое
приближение для
:
.
На этом заканчивается первая итерация
решения системы (6-8). Используя теперь
значения
можно таким же способом провести вторую
итерацию, в результате которой будут
найдены вторые приближения к решению:
,
,
и т. д. Приближение с номером
можно представить в виде
,
,
.
Итерационный процесс продолжается до
тех пор, пока значения
не станут близкими с заданной погрешностью
к значениям
.
Итерационный процесс можно продолжать до получения малой разности между значениями неизвестных в двух последовательных итерациях.
Рассмотрим систему
линейных уравнений с
неизвестными. Запишем её в виде
,
Здесь также будем предполагать, что все
диагональные элементы отличны от нуля.
Тогда в соответствии с методом Гаусса
— Зейделя
-е
приближение к решению можно представить
в виде
,
(9)
Итерационный процесс продолжается до
тех пор, пока все значения
не
станут близкими
.
Близость этих значений можно характеризовать
максимальной абсолютной величиной их
разности
.
Тогда при заданной допустимой погрешности
критерий окончания итерационного
процесса можно записать в виде
(10).
Это критерий по абсолютным отклонениям.
При выполнении условия (10) итерационный
процесс Гаусса — Зейделя называется
сходящимся. В этом случае максимальные
разности
между значениями переменных в двух
последовательных итерациях убывают,
а сами эти значения стремятся к решению
системы уравнений.
Для сходимости итерационного процесса достаточно, чтобы модули диагональных коэффициентов для каждого уравнения системы были не меньше сумм модулей всех остальных коэффициентов:
,
(11)
При этом хотя бы для одного уравнения неравенство должно выполняться строго. Эти условия являются достаточными для сходимости метода, но они не являются необходимыми, т. е. для некоторых систем итерации сходятся и при нарушении условий (11).
Блок-схема алгоритма решения системы
линейных уравнений методом Гаусса —
Зейделя. В качестве исходных данных
вводятся коэффициенты и правые части
уравнений системы, погрешность
,
допустимое число итераций
,
а также начальные приближения
переменных
(
).
Начальные приближения можно не вводить
в ЭВМ, а полагать их равными некоторым
значениям (например, нулю).
Обозначения:
-
порядковый номер итерации;
-
номер уравнения, а также переменного,
которое вычисляется в данном цикле;
-
номер члена вида
в правой части соотношения (9). Итерации
прекращаются либо после выполнения
условия (10), либо при
.
В последнем случае итерации не
сходятся, и после
итераций счет прекращается без выдачи
результатов. Можно предусмотреть в этом
случае также и вывод на печать некоторой
поясняющей информации.