На 1-м шаге мтода среди элементов aij определяют максимальный по модулю элемент ai1j1. Первое уравнение системы и уравнение с номером i1 меняют местами. Далее стандартным образом производят исключение неизвестного xi1 из всех уравнений, кроме первого.
На k-м шаге метода среди коэффициентов aij(k–1) при неизвестных в уравнениях системы с номерами i = k, …, n выбирают максимальный по модулю коэффициент aikjk(k-1). Затем k-е уравнение и уравнение, содержащее найденный коэффициент, меняют местами и исключают неизвестное xjk из уравнений с номерами i = k + 1, …, n.
На этапе обратного хода неизвестные вычисляют в следующем порядке: xjn, xjn–1, …, xj1.
1.2.1. Приведение системы к виду, удобному для итераций. Для того чтобы применить метод Зейделя к решению системы линейных алгебраических уравнений
Ax = b
с квадратной невырожденной матрицей A, необходимо предварительно преобразовать эту систему к виду
x = Bx + c.
Здесь B – квадратная матрица с элементами bij (i, j = 1, 2, …, n), c – вектор-столбец с элементами cij(i = 1, 2, …, n).
В развернутой форме записи система имеет следующий вид:
x1 = b11x1 + b12x2 + b13x3 + … + b1nxn + c1
x2 = b21x1 + b22x2 + b23x3 + … + b2nxn + c2
. . . . . . . . . . . . . . . . .
xn = bn1x1 + bn2x2 + bn3x3 + … + bnnxn + cn
Вообще говоря, операция приведения системы к виду, удобному для итераций, не является простой и требует специальных знаний, а также существенного использования специфики системы.
Самый простой способ приведения системы к виду, удобному для итераций, состоит в следующем. Из первого уравнения системы выразим неизвестное x1:
x1 = a11–1 (b1 – a12x2 – a13x3 – … – a1nxn),
из второго уравнения – неизвестное x2:
x2 = a21–1 (b2 – a22x2 – a23x3 – … – a2nxn),
и т. д. В результате получим систему
x1 = b12x2 + b13x3 + … + b1,n–1xn–1 + b1nxn+ c1 ,
x2 = b21x1 + b23x3 + … + b2,n–1xn–1 + b2nxn+ c2 ,
x3 = b31x1 + b32x2 + … + b3,n–1xn–1 + b3nxn+ c3 ,
. . . . . . . . . . . . . . . . . . . . . . .
xn = bn1x1 + bn2x2 + bn3x3 + … + bn,n–1xn–1 + cn ,
в которой на главной диагонали матрицы B находятся нулевые элементы. Остальные элементы выражаются по формулам
bij = –aij / aii, ci = bi / aii (i, j = 1, 2, …, n, j ≠ i)
Конечно, для возможности выполнения указанного преобразования необходимо, чтобы диагональные элементы матрицы A были ненулевыми.
1.2.1. Описание метода. Введем нижнюю и верхнюю треугольные матрицы
0 0 0 … 0 0 b12 b13 … b1n
b21 0 0 … 0 0 0 b23 … b2n
B1 = b31 b32 0 … 0 , B2 = 0 0 0 … b3n
. . . . . . . . . . . . . .
bn1 bn2 bn3 … 0 0 0 0 … 0
Заметим, что B = B1+ B2 и поэтому решение x исходной системы удовлетворяет равенству
x = B1x + B2 x + c .
Выберем начальное приближение x(0) = [x1(0), x2(0), …, xn(0)]T. Подставляя его в правую часть равенства при верхней треугольной матрице B2и вычисляя полученное выражение, находим первое приближение
x(1) = B1x(0) + B2x(1)
Подставляя приближение x(1), получим
x(2) = B1x(1) + B2x(2)
Продолжая этот процесс далее, получим последовательность x(0), x(1), …, x(n), … приближений к вычисляемых по формуле
x(k+1) = B1(k+1) + B2(k) + c
или в развернутой форме записи
x1(k+1) = b12x2(k) + b13x2(k) + … + b1nxn(k) + c1 ,
x2(k+1) = b21x1(k+1) + b23x3(k) + … + b2nxn(k) + c2 ,
x3(k+1) = b31x1(k+1) + b32x2(k+1) + … + b3nxn(k) + c3 ,
. . . . . . . . . . . . . . . . . . . . . . . . . .
xn(k+1) = bn1x1(k+1) + bn2x2(k+1) + bn3x3(k+1) + … + cn .
Объединив приведение системы к виду, удобному для итераций и метод Зейделя в одну формулу, получим
xi(k+1) = xi(k) – aii–1(∑j=1i–1aijxj(k+1) + ∑j=1naijxi(k) – bi).
Тогда достаточным условием сходимоти метода Зейделя будет
∑j=1, j≠i n | aij | < | aii |
(условие доминированния диагонали).
Метод Зейделя иногда называют также методом Гаусса-Зейделя, процессом Либмана, методом последовательных замещений.
1.3. Сравнение прямых и итерационных методов
Системы линейных алгебраических уравнений можно решать как с помощью прямых, так и и итерационных методов. Для систем уравнений средней размерности чаще использют прямые методы.
Итерационные методы применяют главным образом для решения задач большой размерности, когда использование прямых методов невозможно из-за ограниченииий в доступной оперативной памяти ЭВМ или из-за необходимости выполнения черезмерно большого числа арифметических операций. Большие системы уравнений, возникающие в основном в приложениях, как правило являются разреженными. Методы исключения для систем с разреженным и матрицами неудобны, например, тем, что при их использовании большое число нулевых элементов превращается в ненулевые и матрица теряет свойство разреженности. В противоположность им при использованнии итерационных методов в ходе итерационного процесса матрица не меняется, и она, естественно, остается разреженной. Большая эффективность итерационных методов по сравнению с прямыми методами тесно связанна с возможностью существенного использования разреженности матриц.
Применение итерационных методов для качественного решения большой системы уравнений требует серьезного использования ее структуры, специальных знаний и определенного опыта.
2. Практическая часть
2.1 Программа решения систем линейных уравнений по методу Гаусса
2.1.1. Постановка задачи. Требуется решить систему линейных алгебраических уравнений с вещественными коэффициентами вида
a11x1 + a12x2 + … + a1nxn = b1 ,
a21x2 + a22x2 + … + a2nxn = b2 ,
. . . . . . . . . . . . .
an1x1 + an2x2 + … + annxn = bn
для n ≤ 10 по методу Гаусса.
2.1.2. Тестовый пример.
3,2x1 + 5,4x2 + 4,2x3 + 2,2x4 = 2,6 ,
2,1x1 + 3,2x2 + 3,1x3 + 1,1x4 = 4,8 ,
1,2x1 + 0,4x2 – 0,8x3 – 0,8x4 = 3,6 ,
4,7x1 + 10,4x2 + 9,7x3 + 9,7x4 = –8,4 ,
x1 = 5, x2 = –4, x3 = 3, x4 = –2.
2.1.3. Описание алгоритма. В данной программе реализован метод Гаусса со схемой частичного выбора.
В переменную n вводится порядок матрицы системы. С помощью вспомогательной процедуры ReadSystem в двумерный массив a и одномерный массив b вводится c клавиатуры расширенная матрица системы, после чего оба массива и переменная n передаются функции Gauss. В фукции Gauss для каждого k-го шага вычислений выполняется поиск максимального элемента в k-м столбце матрицы начинаяя с k-й строки. Номер строки, содержащей максимальный элемент сохраняеется в переменной l. В том случае если максимальный элемент находится не в k-й строке, строки с номерами k и l меняются местами. Если же все эти элементы равны нулю, то происходит прекращение выполнения функции Gauss c результатом false. После выбора строки выполняется преобразование матрицы по методу Гаусса. Далее вычисляется решение системы и помещается в массив x. Полученное решение выводится на экран при помощи вспомогательной процедуры WriteX.
2.1.4. Листинг программы и результаты работы