Обратная Матрица Методом Гаусса–Жордана: От Идеи к Чёткому Алгоритму

Обратная матрица — это инструмент, который позволяет восстановить исходную матрицу после умножения. В задачах линейной алгебры часто возникает необходимость вернуть исходный вектор или решение системы после умножения на матрицу. Мы уже знакомились с подходом через решение соответствующих систем линейных алгебраических уравнений. Но появляется вопрос: есть ли способ работать с матрицей как с единым объектом, задавая чёткую процедуру без необходимости решать отдельные системы уравнений? Именно так работает метод Гаусса–Жордана.

В этой статье мы разберём, почему этот подход корректен, как он связан с элементарными преобразованиями строк и как выглядит алгоритм в матричной записи. Без лишних усложнений, но с понятными последовательными шагами — так, как нужно для уверенного применения на практике.

Обратная Матрица: Что Именно Мы Ищем и Зачем?

Начнём с основ. Для квадратной матрицы \( A \) (размера \( n\times n \)) обратная матрица \( A^{-1} \) — это такая матрица, которая при умножении даёт единичную матрицу. То есть выполняется:

\[
A \cdot A^{-1} = I, \qquad A^{-1} \cdot A = I,
\]

где \( I \) — единичная матрица:

\[
I=
\begin{pmatrix}
1&0&\cdots&0\\
0&1&\cdots&0\\
\vdots&\vdots&\ddots&\vdots\\
0&0&\cdots&1
\end{pmatrix}.
\]

Зачем это нужно? Например, если у вас есть матричное уравнение \(A \cdot x = b \), то при существовании \( A^{-1} \) решение записывается компактно:

\[
x=A^{-1} \cdot b.
\]

Запись короткая и удобная. Но на практике важно иметь метод, который позволяет напрямую находить \( A^{-1} \), работая с матрицей как с единым объектом. Именно на это и направлен метод Гаусса–Жордана.

Метод Гаусса–Жордана: Обратная Матрица Через Элементарные Преобразования

Метод Гаусса–Жордана основан на элементарных преобразованиях строк — это те же операции, которые используют, когда приводят матрицу к более удобному виду. Идея метода простая: мы преобразуем матрицу \( A \) так, чтобы получить единичную матрицу. Параллельно под теми же самыми преобразованиями формируется матрица, которая и будет обратной.

Как это организовать? Сначала составляем расширенную матрицу, присоединяя к \( A \) единичную матрицу \( I \):

\[
\left(
\begin{array}{cccc|cccc}
a_{11} & a_{12} & \cdots & a_{1n} & 1 & 0 & \cdots & 0 \\
a_{21} & a_{22} & \cdots & a_{2n} & 0 & 1 & \cdots & 0 \\
\vdots & \vdots & \ddots & \vdots & \vdots & \vdots & \ddots & \vdots \\
a_{n1} & a_{n2} & \cdots & a_{nn} & 0 & 0 & \cdots & 1
\end{array}
\right).
\]

После этого выполняем элементарные преобразования строк так, чтобы левая часть стала единичной. Важно, что эти преобразования применяются и к левому, и к правому блоку, потому что меняются все строки расширенной матрицы.

Если матрица \( A \) невырождена (то есть её определитель не равен нулю), на выходе получаем:

\[
\left(\begin{array}{c|c}
A & I
\end{array}\right)
\Longrightarrow
\left(\begin{array}{c|c}
I & A^{-1}
\end{array}\right),
\qquad \det(A) \ne 0.
\]

Таким образом, правый блок и есть искомая обратная матрица \( A^{-1} \).

Обратная Матрица: Алгоритм Гаусса–Жордана Шаг за Шагом

Переходим к формальному описанию. Пусть дана квадратная матрица размера \( n\times n \):

\[
A=\begin{pmatrix}
a_{11} & a_{12} & \cdots & a_{1n}\\
a_{21} & a_{22} & \cdots & a_{2n}\\
\vdots & \vdots & \ddots & \vdots\\
a_{n1} & a_{n2} & \cdots & a_{nn}
\end{pmatrix}.
\]

Наша цель — с помощью последовательных элементарных преобразований строк получить обратную матрицу \( A^{-1} \). Для этого, как уже отмечалось выше, составляем расширенную матрицу \( \left(A\mid I\right) \), то есть приписываем к \( A \) единичную матрицу \( I \) того же размера:

\[
\left( A \mid I \right)=
\left(
\begin{array}{cccc|cccc}
a_{11} & a_{12} & \cdots & a_{1n} & 1 & 0 & \cdots & 0 \\
a_{21} & a_{22} & \cdots & a_{2n} & 0 & 1 & \cdots & 0 \\
\vdots & \vdots & \ddots & \vdots & \vdots & \vdots & \ddots & \vdots \\
a_{n1} & a_{n2} & \cdots & a_{nn} & 0 & 0 & \cdots & 1
\end{array}
\right).
\]

Дальше действуем по столбцам слева направо. На каждом шаге берём опорный элемент в текущем столбце, делаем его равным \( 1 \), а затем зануляем все остальные элементы этого столбца — и ниже, и выше опорной строки. В итоге левая часть должна превратиться в \( I \), а правая часть тогда даст \( A^{-1} \).

Итак, начинаем с опорного элемента \( a_{11} \). Сначала делаем его равным \( 1 \) (делим первую строку на \( a_{11} \)), а затем зануляем все элементы первого столбца в строках \( 2,3,\dots,n \). После выполнения этого шага получим матрицу вида:

\[
\left(A^{(1)} \mid B^{(1)}\right)=
\left(
\begin{array}{cccc|cccc}
1 & a^{(1)}_{12} & \cdots & a^{(1)}_{1n} & b^{(1)}_{11} & b^{(1)}_{12} & \cdots & b^{(1)}_{1n}\\
0 & a^{(1)}_{22} & \cdots & a^{(1)}_{2n} & b^{(1)}_{21} & b^{(1)}_{22} & \cdots & b^{(1)}_{2n}\\
\vdots & \vdots & \ddots & \vdots & \vdots & \vdots & \ddots & \vdots\\
0 & a^{(1)}_{n2} & \cdots & a^{(1)}_{nn} & b^{(1)}_{n1} & b^{(1)}_{n2} & \cdots & b^{(1)}_{nn}
\end{array}
\right).
\]

Элементы левой части после первого шага вычисляются по формуле:

\[
a_{ij}^{(1)} = a_{ij} — \frac{a_{i1}}{a_{11}}\,a_{1j},\qquad i=2,\dots,n,\; j=1,\dots,n.
\]

А для правой части действует та же схема:

\[
b_{ij}^{(1)} = b_{ij} — \frac{a_{i1}}{a_{11}}\, b_{1j}, \qquad i=2,\dots,n,\; j=1,\dots,n,
\]

где на старте \( B^{(0)}=I \).

Далее исключаем из рассмотрения первую строку и первый столбец и применяем аналогичную процедуру к подматрице, которая начинается с элемента \( a^{(1)}_{22} \). Теперь нужно сделать опорный элемент в позиции \( (2,2) \) равным \( 1 \) и занулить все элементы второго столбца в строках \( i\neq2 \). После этого во втором столбце левой части остаётся единица на диагонали и нули во всех остальных строках.

Продолжая этот процесс для каждого следующего столбца, на \( k \)-м шаге (для \( k=1,\dots,n \)) работаем с опорным элементом \( a^{(k-1)}_{kk} \) и зануляем элементы в столбце \( k \) во всех строках \( i\neq k \). Для левой части обобщённые формулы имеют вид:

\[
\begin{aligned}
a^{(k)}_{kj} &= \frac{a^{(k-1)}_{kj}}{a^{(k-1)}_{kk}}, \qquad j=1,\dots,n,\\
a^{(k)}_{ij} &= a^{(k-1)}_{ij}-a^{(k-1)}_{ik}\,a^{(k)}_{kj}, \qquad i=1,\dots,n,\ i\neq k,\ j=1,\dots,n.
\end{aligned}
\]

Для правой части формулы аналогичны:

\[
\begin{aligned}
b^{(k)}_{kj} &= \frac{b^{(k-1)}_{kj}}{a^{(k-1)}_{kk}}, \qquad j=1,\dots,n,\\
b^{(k)}_{ij} &= b^{(k-1)}_{ij}-a^{(k-1)}_{ik}\,b^{(k)}_{kj}, \qquad i=1,\dots,n,\ i\neq k,\ j=1,\dots,n.
\end{aligned}
\]

После выполнения шагов \( k=1,2,\dots,n \) левая часть расширенной матрицы превращается в единичную матрицу:

\[
\left( A^{(n)} \mid B^{(n)} \right)=\left( I \mid A^{-1} \right).
\]

Значит, правая часть после завершения всех преобразований и есть искомая обратная матрица \( A^{-1} \).

Опорный элемент равен нулю — как действовать дальше?

На практике может случиться так, что опорный элемент, с которого вы хотите начать зануление (например, \( a_{11} \) или позже \( a^{(1)}_{22} \), \( a^{(2)}_{33} \) и так далее), равен нулю. В такой ситуации достаточно выполнить перестановку строк, чтобы в позиции опорного элемента оказалось ненулевое число. Поскольку перестановка строк — это элементарное преобразование, алгоритм можно продолжать стандартным образом.

Если же в соответствующем столбце все возможные кандидаты на опорный элемент равны нулю, тогда привести левую часть к \( I \) невозможно. А значит, обратной матрицы не существует (матрица \( A \) является вырожденной).

Обратная Матрица на Практике: От Преобразований к Ответу

Теперь перейдём к практике, потому что именно на примерах метод Гаусса–Жордана становится по-настоящему понятным. Мы будем работать с расширенной матрицей \( \left(A\mid I\right) \) и шаг за шагом превращать левый блок в \( I \).

Пример 1. Найти обратную матрицу

\[
A=
\begin{pmatrix}
2 & -1 & 4 \\
4 & -2 & 8 \\
6 & -3 & 12
\end{pmatrix}.
\]

Составляем расширенную матрицу:

\[
\left(A^{(0)}\mid B^{(0)}\right)=
\left(
\begin{array}{ccc|ccc}
2 & -1 & 4 & 1 & 0 & 0 \\
4 & -2 & 8 & 0 & 1 & 0 \\
6 & -3 & 12 & 0 & 0 & 1
\end{array}
\right).
\]

Начинаем с опорного элемента \( a_{11}=2 \). Делим первую строку на \( 2 \), после чего зануляем первый столбец в строках \( 2 \) и \( 3 \):

  • Из второй строки вычитаем первую, умноженную на \( 4 \).
  • Из третьей строки вычитаем первую, умноженную на \( 6 \).

Получаем:

\[
\left(A^{(1)} \mid B^{(1)}\right)=
\left(
\begin{array}{ccc|ccc}
1 & -0.5 & 2 & 0.5 & 0 & 0 \\
0 & 0 & 0 & -2 & 1 & 0 \\
0 & 0 & 0 & -3 & 0 & 1
\end{array}
\right).
\]

Здесь сразу виден ключевой момент: в левой части появились нулевые строки, а в правой части соответствующие строки не являются нулевыми. Это означает, что превратить левый блок в \( I \) невозможно, то есть обратной матрицы для \( A \) не существует. Причина понятна: строки матрицы линейно зависимы (вторая — это \( 2 \) раза первая, третья — это \( 3 \) раза первая).

Пример 2. Найти обратную матрицу

\[
A=
\begin{pmatrix}
5 & -6 & 7 & 1\\
7 & 10 & -9 & 8\\
3 & 3 & 5 & 1\\
-10 & 2 & 3 & 4
\end{pmatrix}.
\]

Записываем расширенную матрицу:

\[
\left(A^{(0)} \mid B^{(0)}\right)=
\left(
\begin{array}{cccc|cccc}
5 & -6 & 7 & 1 & 1 & 0 & 0 & 0 \\
7 & 10 & -9 & 8 & 0 & 1 & 0 & 0 \\
3 & 3 & 5 & 1 & 0 & 0 & 1 & 0 \\
-10 & 2 & 3 & 4 & 0 & 0 & 0 & 1
\end{array}
\right).
\]

На первом шаге делаем опорный элемент в позиции \( (1,1) \) равным \( 1 \) и зануляем первый столбец в остальных строках:

  • Из второй строки вычитаем первую, умноженную на \( 7 \).
  • Из третьей строки вычитаем первую, умноженную на \( 3 \).
  • К четвёртой строке прибавляем вторую, умноженную на \( 10 \).

Получаем:

\[
\left(A^{(1)}\mid B^{(1)}\right)=
\left(
\begin{array}{cccc|cccc}
1.&-1.2&1.4&0.2&0.2&0&0&0\\
0&18.4&-18.8&6.6&-1.4&1&0&0\\
0&6.6&0.8&0.4&-0.6&0&1&0\\
0&-10&17&6&2&0&0&1
\end{array}
\right).
\]

Дальше переходим ко второму столбцу: нормализуем опорный элемент в позиции \( (2,2) \) и зануляем все остальные элементы этого столбца:

  • К первой строке прибавляем вторую, умноженную на \( 1.2 \).
  • Из третьей строки вычитаем вторую, умноженную на \( 6.6 \).
  • К четвёртой строке прибавляем вторую, умноженную на \( 10 \).

Получаем:

\[
\left(A^{(2)}\mid B^{(2)}\right)=
\left(
\begin{array}{cccc|cccc}
1&0&0.174&0.63&0.109&0.065&0&0\\
0&1&-1.022&0.359&-0.076&0.054&0&0\\
0&0&7.543&-1.967&-0.098&-0.359&1&0\\
0&0&6.783&9.587&1.239&0.543&0&1
\end{array}
\right).
\]

После аналогичных преобразований для третьего и четвёртого столбцов левая часть становится единичной матрицей, а правая — искомой обратной. В итоге:

\[
\left(A^{(4)}\mid B^{(4)}\right)=
\left(
\begin{array}{cccc|cccc}
1&0&0&0&0.032&0.022&0.030&-0.060\\
0&1&0&0&-0.1&-0.001&0.143&-0.008\\
0&0&1&0&0.018&-0.028&0.112&0.023\\
0&0&0&1&0.117&0.076&-0.079&0.088
\end{array}
\right),
\]

то есть

\[
A^{-1}\approx
\begin{pmatrix}
0.032 & 0.022 & 0.030 & -0.060 \\
-0.100 & -0.001 & 0.143 & -0.008 \\
0.018 & -0.028 & 0.112 & 0.023 \\
0.117 & 0.076 & -0.079 & 0.088
\end{pmatrix}.
\]

Пример 3. Найти обратную матрицу

\[
A=
\begin{pmatrix}
0 & -1 & 3 & 0 & 2 \\
2 & -4 & 1 & 5 & 3 \\
-4 & 5 & 7 & -10 & 0 \\
-2 & 1 & 8 & -5 & 3
\end{pmatrix}.
\]

Здесь важно сразу остановиться и проверить размерность. У матрицы \( 4 \) строки и \( 5 \) столбцов, то есть она не является квадратной. А обратная матрица определяется только для квадратных матриц вида \( n\times n \). Поэтому для этой \( A \) обратной матрицы \( A^{-1} \) не существует, и метод Гаусса–Жордана в стандартном виде здесь не применяется.

Куда Двигаться Дальше: Темы, Которые Усилят Ваши Навыки

Если вам понравилось работать с обратными матрицами, логично перейти к родственным темам и расширить набор инструментов для решения задач. С чего начать, чтобы это действительно принесло пользу? Ниже — три направления, которые естественно продолжают тему и помогают увидеть другие подходы.

  1. Обратная матрица через алгебраические дополнения: Логика миноров и определителей — Рассмотрим классический метод через миноры и алгебраические дополнения, чтобы чётко понимать, как именно формируется ответ.
  2. Обратная матрица и характеристический многочлен: Нетипичный, но сильный подход — Объясним связь с характеристическим многочленом и покажем, как использовать её на практике.
  3. Обратная матрица методом окаймления: Как добавление строк и столбцов ведёт к результату — Разберём идею метода окаймления и объясним, как через последовательное расширение получают обратную матрицу.

От Теории к Коду: Обратная Матрица в Вашей Программе

Если вы интересуетесь программированием, попробуйте превратить эту блок-схему в небольшую программу, которая находит обратную матрицу методом Гаусса–Жордана. Это действительно полезное упражнение, потому что вы сразу увидите, как математический алгоритм ведёт себя на конкретных числах во время вычислений. Выберите любимый язык — Python, PHP, JavaScript или C++ — и сделайте свой мини-калькулятор: вводите матрицу, запускаете расчёт, а на выходе получаете \( A^{-1} \). А если добавите вывод промежуточных матриц, станет ещё интереснее сравнивать результат с ручными вычислениями.

Блок-схема алгоритма, которая шаг за шагом показывает, как вычисляется обратная матрица с помощью метода Гаусса–Жордана

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *