Метод Гаусса. Примеры решения систем линейных алгебраических уравнений методом Гаусса.
В этой теме мы разберем реализацию метода Гаусса на примерах различных СЛАУ. Напомню преобразования, допустимые в методе Гаусса:
- Смена мест двух строк.
- Умножение всех элементов строки на некоторое число, не равное нулю.
- Прибавление к элементам одной строки соответствующих элементов другой строки, умноженных на любой множитель.
- Вычеркивание строки, все элементы которой равны нулю.
Замечание относительно пункта №4: некоторые авторы не вычёркивают нулевые строки, а опускают их в низ расширенной матрицы системы. Я предпочитаю не копить внизу матрицы нулевые строки, поэтому считаю удобным просто вычёркивать их по мере появления.
Отмечу, что можно менять местами и столбцы матрицы системы, хоть применяется это преобразование нечасто. Например, смена мест первого и третьего столбцов матрицы системы означает, что переменные $x_1$ и $x_3$ поменялись местами во всех уравнениях.
Сам алгоритм состоит из двух этапов: прямой ход метод Гаусса и обратный. Перед тем, как рассмотреть преобразования, которые выполняются на каждом из указанных этапов, введём несколько терминов.
Нулевая строка – строка, все элементы которой равны нулю. Ненулевая строка – строка, хоть один элемент которой отличен от нуля. Ведущим элементом ненулевой строки называется её первый (считая слева направо) отличный от нуля элемент. Например, в строке $(0;0;5;-9;0)$ ведущим будет третий элемент (он равен 5).
Буквами $r$ (от слова "row") я стану обозначать строки: $r_1$ – первая строка, $r_2$ – вторая строка и так далее.
Прямой ход метода Гаусса
На данном этапе мы работаем с расширенной матрицей системы. Цель преобразований: сделать расширенную матрицу системы ступенчатой.
Прямой ход метода Гаусса состоит из нескольких шагов, на каждом из которых используется некая строка расширенной матрицы системы. На первом шаге используется первая строка, на втором шаге – вторая и так далее. Как только расширенная матрица системы будет приведена к ступенчатому виду, прямой ход прекратится.
Теперь обратимся к тем преобразованиям над строками, которые выполняются на каждом шаге алгоритма. Пусть под текущей строкой, которую нам нужно использовать на данном шаге, имеется хоть одна строка, причём $k$ – номер ведущего элемента текущей строки, а $k_$ – наименьший из номеров ведущих элементов тех строк, которые лежат ниже текущей строки.
- Если $k\lt$, то переходим к следующему шагу алгоритма, т.е. к использованию следующей строки.
- Если $k=k_$, то производим обнуление ведущих элементов тех нижележащих строк, у которых номер ведущего элемента равен $k_$.
- Если $k\gt$, то меняем местами текущую строку с одной из тех нижележащих строк, у которых номер ведущего элемента равен $k_$. После этого производим обнуление ведущих элементов тех нижележащих строк, у которых номер ведущего элемента равен $k_$. Если таких строк нет, то переходим к следующему шагу алгоритма.
Нулевые строки могут появиться именно в ходе выполнения прямого хода метода Гаусса. Напомню, что нулевые строки мы вычёркиваем по мере их появления.
На любом шаге можно, хоть это и не обязательно, вычёркивать одинаковые строки (т.е. строки, все соответствующие элементы которых равны меж собой), оставляя при этом одну из этих строк. Например, если строки $r_2$, $r_5$, $r_6$ одинаковы, то можно оставить одну из них, – например, строку $r_2$. При этом строки $r_5$ и $r_6$ будут удалены.
К слову, указанную выше возможность удаления одинаковых строк можно обобщить: допустимо вычёркивать не только одинаковые строки. Если все элементы одной строки равны соответствующим элементам другой строки, умноженным на некое отличное от нуля число, то одну из этих строк можно вычеркнуть. Например, для строк $(-2;\;0;\;4)$ и $(-6;\;0;\;12)$ имеем $(-6;\;0;\;12)=3\cdot(-2;\;0;\;4)$. Следовательно, одну из этих строк можно убрать из матрицы. Впрочем, обязательным условием оставим лишь вычёркивание нулевых строк. Из повторяющихся или пропорциональных строк в любом случае останется лишь одна, а остальные станут нулевыми и будут удалены из матрицы.
Если в ходе выполнения прямого хода метода Гаусса возникла строка вида $\left(\begin 0&0&\ldots&0&x\end\right)$, где $x\neq$, то нет смысла продолжать преобразования, так как система является несовместной, т.е. не имеет решения.
В конце прямого хода метода Гаусса мы должны получить ступенчатую матрицу вида $\left(C|D\right)$, где $C$ – преобразованная матрица системы, а $D$ – преобразованная матрица свободных членов системы.
Обратный ход метода Гаусса
В начале обратного хода метода Гаусса нужно проанализировать результат предыдущего этапа решения, в ходе которого мы получили ступенчатую матрицу вида $\left(C|D\right)$.
Если матрица $C$ является прямоугольной, то нужно оставить слева от черты те столбцы, которые содержат ведущий элемент некоей строки данной матрицы. Остальные столбцы нужно перенести за черту (знаки элементов в переносимых столбцах при этом изменятся на противоположные). Это делается для того, чтобы матрица $C$ стала верхней треугольной матрицей. Если же матрица $C$ является квадратной, то никаких дополнительных действий выполнять не нужно, матрица $C$ уже будет верхней треугольной.
Цель обратного хода метода Гаусса: привести матрицу $\left(C|D\right)$ к виду $\left(E|F\right)$, где $E$ – единичная матрица. Для этого нам потребуется два условия: элементы на главной диагонали матрицы до черты должны равняться единице, а все элементы выше главной диагонали нужно обнулить.
Начинаем преобразования обратного хода метода Гаусса. На обратном ходе метода Гаусса сначала используется последняя строка, затем предпоследняя, и так далее – пока не дойдём до первой строки.
С каждой строкой делаем однотипные действия. Пусть, например, речь идёт о некоей k-й строке $r_k$. Матрица, расположенная до черты, содержит в строке $r_k$ диагональный элемент $a_$. Если $a_=1$, то это нас вполне устраивает, а если $a_\neq$, то просто умножаем строку $r_k$ на коэффициент $\frac$, чтобы диагональный элемент стал равен 1. Затем с помошью строки $r_k$ обнуляем элементы k-го столбца, расположенные над строкой $r_k$.
Как конкретно происходит обнуление элементов, рассмотрим на практике. Буквой $k$ я стану обозначать номер ведущего элемента текущей строки, а запись $k_$ будет использована для обозначения наименьшего из номеров ведущих элементов строк, лежащих под текущей строкой.
Решить СЛАУ $ \left\