Метод Гаусса и метод Гаусса-Жордана
Ступенчатый вид, приведённый ступенчатый вид, ведущие элементы и три элементарных преобразования строк на конкретной матрице.
Исключение — самый полезный алгоритм линейной алгебры. Ранг, определитель, обратная матрица и решение системы уравнений выводятся именно из него. В основе — три элементарных преобразования строк, ни одно из которых не меняет множество решений исходной системы:
- Поменять две строки местами:
С(i) ↔ С(j) - Умножить строку на ненулевое число:
С(i) → k·С(i) - Прибавить к строке кратное другой:
С(i) → С(i) + k·С(j)
Ступенчатый вид
Матрица имеет ступенчатый вид, когда:
- полностью нулевые строки стоят внизу;
- каждый первый ненулевой элемент (ведущий) находится строго правее ведущего элемента строки выше;
- всё под ведущим элементом равно нулю.
| 2 | 1 | −1 |
| 0 | 3 | 2 |
| 0 | 0 | 5 |
Приведённый ступенчатый вид
Приведённый вид идёт дальше: каждый ведущий элемент равен 1 и является единственным ненулевым в своём столбце. И главное: у каждой матрицы ровно один приведённый ступенчатый вид — результат не зависит от порядка ваших преобразований.
| 1 | 0 | 0 |
| 0 | 1 | 0 |
| 0 | 0 | 1 |
Алгоритм по шагам
- Начните с левого верхнего угла. Найдите наибольший по модулю элемент текущего столбца — это частичный выбор ведущего элемента, он удерживает ошибки округления малыми.
- Если весь столбец нулевой, перейдите к следующему столбцу.
- Переставьте найденную строку на позицию ведущей.
- Поделите ведущую строку на ведущий элемент, чтобы он стал равен 1.
- Вычтите кратные ведущей строки из остальных, обнулив остаток столбца.
- Спуститесь на строку ниже, сдвиньтесь на столбец правее и повторите.
Если на шаге 5 обнулять только строки ниже ведущей, получится метод Гаусса (ступенчатый вид). Если убрать и то, что выше, — метод Гаусса-Жордана (приведённый вид).
Как прочитать решения
- Единственное решение: в каждом столбце матрицы коэффициентов есть ведущий элемент.
- Бесконечно много: какой-то столбец остался без ведущего элемента — эти переменные свободные.
- Решений нет: появилась строка
0 0 0 | cсc ≠ 0, утверждающая, что 0 = c.