Обратная матрица: что это такое и как её найти
Практическое руководство для матриц разной размерности.
Матрицы используют, чтобы компактно записывать данные и выполнять преобразования сразу над несколькими значениями. С их помощью решают системы уравнений, изменяют координаты объектов в компьютерной графике, обрабатывают массивы данных и создают алгоритмы машинного обучения. Иногда результат такого преобразования нужно обратить — вернуть исходные значения. Для этого используют обратную матрицу.
В статье разберём, что такое обратная матрица, при каких условиях она существует и как найти её разными способами — вручную и с помощью Python.
Содержание
- Что такое матрица, обратная и единичная матрица
- Условие существования обратной матрицы
- Как найти обратную матрицу 2×2
- Как найти обратную матрицу 3×3, 4×4 и больше
Что такое матрица, обратная и единичная матрица
Чтобы понять, как устроена обратная матрица, сначала разберём три понятия: обычную, квадратную и единичную матрицу.
Матрица — это прямоугольная таблица чисел, расположенных по строкам и столбцам. В линейной алгебре матрицы используют, чтобы записывать системы уравнений, описывать преобразования координат и выполнять вычисления в компьютерной графике, анализе данных и машинном обучении.
Матрицы в алгебре обычно записывают в круглых скобках. Например, так выглядит матрица размером 2×2.

Числа внутри таблицы называют элементами матрицы. У матрицы выше две строки и два столбца.
Размер матрицы обозначают m×n, где:
- m — количество строк;
- n — количество столбцов.
Например, матрица размером 2×3 состоит из двух строк и трёх столбцов, а матрица 3×3 — из трёх строк и трёх столбцов.
Другое важное понятие, которое нам пригодится, — единичная матрица. Она выполняет в матричных вычислениях ту же роль, что число 1 в обычном умножении: если умножить на неё другую матрицу, та не изменится.
На главной диагонали единичной матрицы стоят единицы, а на остальных позициях — нули. Единичная матрица размером 3×3 выглядит так.

Обратной к матрице (A) называют такую матрицу A⁻¹, при умножении на которую получается единичная матрица:
A × A−1 = E
Единичная матрица (E) должна иметь тот же размер, что и исходная матрица (A). Если обратная матрица существует, матрицу (A) называют обратимой или невырожденной.
Похожий принцип работает с обычными числами. Обратным для числа 5 будет число 1/5, потому что их произведение равно единице.

Смысл обратной матрицы можно представить как отмену преобразования. Например, матрица (A) может повернуть, растянуть или сжать объект в пространстве. Матрица A⁻¹ выполняет противоположное действие и возвращает объект в исходное положение. Это часто используется в компьютерной графике.
Когда обратная матрица существует
Обратная матрица существует не всегда. Чтобы определить, можно ли её найти, вычисляют определитель исходной матрицы.
Определитель, или детерминант, — это число, которое вычисляют для квадратной матрицы и обозначают как det (A) или |A|. Он характеризует свойства матрицы и связанного с ней линейного преобразования.
Перед поиском обратной матрицы достаточно проверить значение определителя:
- если det (A) ≠ 0, обратная матрица существует;
- если det (A) = 0, обратной матрицы нет.
Матрицу с нулевым определителем называют вырожденной.

Читайте также:
Чтобы не перегружать объяснение теорией, рассмотрим формулу для матрицы размером 2×2.
Представим матрицу.

Определитель для неё вычисляется по формуле:
det = ad − bc, где det — это детерминант.
Например, для матрицы ниже детерминант равен:
det (A) = 5 × 6 − 2 × 3 = 30 − 6 = 24.
Определитель матрицы A не равен нулю, поэтому матрица обратима — для неё можно найти обратную матрицу.

Как найти обратную матрицу 2×2
Для матриц размером 2×2 существует готовая формула, поэтому находить обратную матрицу для них сравнительно просто. В общем виде матрица 2×2 выглядит так.

Найдём для неё определитель по формуле: det = ad − bc. Если он не равен нулю, то матрица обратима. В этом случае обратная матрица вычисляется по такой формуле.

Чтобы разобраться в работе формулы, решим реальную задачу. Представим матрицу.

Найдём для неё определитель:
det (A) = 3 × 6 − 2 × 4 = 10
Так как определитель не равен нулю — значит, матрица обратимая.
Используем формулу.

Умножим каждый элемент матрицы на 1/10. В результате получим обратную матрицу.

Как найти обратную матрицу 3×3, 4×4 и более
Для матриц с размерностью 3×3, 4×4 и больше одной формулы не существует. Для них придётся использовать один из двух методов:
- вычисление с помощью алгебраических дополнений;
- метод Гаусса — Жордана, который основан на элементарных преобразованиях строк.
Разберём каждый из них подробно.
Метод алгебраических дополнений
Представим матрицу 3×3.

Шаг 1: проверим обратимость. Для этого убедимся, что определитель матрицы не равен нулю. Определитель будем считать по следующей формуле.

Шаг 2: найдём матрицу миноров. На первый взгляд этот этап может показаться сложным, но принцип вычисления довольно прост.
Минор элемента — это определитель матрицы 2×2, которая остаётся после вычёркивания строки и столбца, где находится этот элемент. Чтобы не запутаться, удобно последовательно зачёркивать нужные строки и столбцы на бумаге.
Например, найдём минор элемента a в левом верхнем углу. Для этого вычеркнем из исходной матрицы первую строку и первый столбец. Останется матрица 2×2.

Вычислим для неё определитель:
M11 = det (M) = e × i − f × h
Минор для (b): вычёркиваем первую строку и второй столбец и находим определитель.

M12 = det (M) = d × i − f × g
Аналогично считаем миноры для остальных элементов матрицы:
M13 = d × h − e × g
M21 = b × i − c × h
M22 = a × i − c × g
M23 = a × h − b × g
M31 = b × f−c × e
M32 = a × f − c × d
M33 = a × e − b × d
Шаг 3: считаем матрицу алгебраических дополнений С. Для каждого элемента aij, где a — элемент матрицы, i — номер строки и j — номер столбца, нужно взять минор Mij и умножить на (−1)i+j.
Получается следующее распределение:
- для элемента в первой строке и первом столбце: (−1)(1+1) = (−1)2 = 1, знак остаётся положительным;
- для элемента в первой строке и втором столбце: (−1)(1+2) = (−1)3 = −1, знак меняется;
- для элемента во второй строке и втором столбце: (−1)(2+2) = (−1)4 = 1, знак остаётся положительным.
В результате знаки для матрицы 3×3 располагаются в шахматном порядке.

Теперь необходимо расставить эти знаки перед соответствующими минорами. Полученные значения записываем в матрицу алгебраических дополнений C:
C11 = (+1) × (e × i − f × h) = e × i − f × h
C12 = (−1) × (d × i − f × g) = f × g − d × i
C13 = (+1) × (d × h − e × g) = d × h − e × g
И так далее для всех девяти элементов.
Шаг 3: транспонируем матрицу, то есть поменяем местами строки и столбцы.

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

Попрактикуемся на практике. Представим, что у нас есть матрица 3×3, для которой необходимо найти обратную.

Рассчитаем определитель по формуле:
det (A) = a × (e x i − f x h) − b × (d × i − f × g) + c × (d × h − e × g)
Значения каждой переменной возьмём из матрицы.

Подставим числа:
det (A) = 1 × (1 × 6 − 3×5) − 3 × (1 × 6 − 3 × 2) + 4 × (1 × 5 − 1 × 2) = 1 × (−9) − 3 × 0 + 4 × 3 = −9 + 0 + 12 = 3
Детерминант не равен 0 — значит, матрица обратимая.
Теперь найдём миноры.

Учтём знаки и получим матрицу дополнений.

Транспонируем матрицу.

Разделим каждый элемент на определитель и получим обратную матрицу.

Задача успешно решена.
Метод Гаусса — Жордана
Метод алгебраических дополнений нагляден, но с ростом размера матрицы становится громоздким — например, для матрицы 4×4 придётся считать 16 определителей 3×3.
На практике для матриц 3×3 и больше чаще используют метод Гаусса — Жордана. Он основан на элементарных преобразованиях строк и одинаково хорошо работает для матриц любой размерности.
Идея метода такая. Рядом с исходной матрицей A записывают единичную матрицу E того же размера — получается расширенная матрица [A | E]. Затем над строками выполняют элементарные преобразования, приводя левую часть к единичной матрице. Те же преобразования автоматически применяются и к правой части — и когда слева получается E, справа оказывается обратная матрица A⁻¹.
В методе разрешены три вида элементарных преобразований строк: перестановка двух строк местами, умножение строки на ненулевое число и прибавление к одной строке другой строки, умноженной на число.
Разберём на примере. Возьмём матрицу.

Запишем для неё расширенную матрицу [A | E].

Шаг 1: получаем единицу в левом верхнем углу. Удобнее всего поменять местами первую и третью строки — тогда в левом верхнем углу окажется 1, и не придётся работать с дробями.

Шаг 2: обнуляем первый столбец под ведущей единицей. В первой строке единица уже стоит, во второй строке первый элемент — ноль, трогать её не нужно. Из третьей строки вычитаем первую, умноженную на 2.

Шаг 3: получаем единицу во втором столбце. Поменяем местами вторую и третью строки, чтобы ведущим элементом стала 1, а не 3.

Теперь обнулим второй столбец в третьей строке — вычтем из неё вторую строку, умноженную на 3.

Шаг 4: получаем единицу в третьем столбце. Делим третью строку на 25.

Шаг 5: обнуляем третий столбец выше ведущей единицы. Из первой строки вычитаем третью, умноженную на 4; ко второй прибавляем третью, умноженную на 8.

Слева получилась единичная матрица — значит, справа стоит обратная. Переведём дроби в десятичный вид.

Всё получилось. Мы получили обратную матрицу, а значит задача решена.
Метод Гаусса — Жордана масштабируется на матрицы любого размера: для 4×4, 5×5 и больше алгоритм тот же, меняется лишь число шагов. Если в процессе преобразований какой-то столбец не удаётся сделать ведущим — то есть на нужной позиции и ниже стоят одни нули, — значит, определитель матрицы равен нулю и обратной матрицы не существует.
Как проверить вычисления
Есть достаточно простой способ проверить, что рассчитанная матрица — действительно обратная к исходной: детерминант обратной матрицы должен удовлетворять такому уравнению.

Найдём детерминант рассчитанной выше матрицы — просто подставим значения в формулу.

Когда определители двух матриц известны, можно проверить точность вычислений.


Обратная матрица посчитана правильно.
Как рассчитать обратную матрицу на Python
Находить обратную матрицу вручную удобно для небольших учебных примеров. При работе с реальными данными проще использовать библиотеку NumPy, в которой есть функции для автоматизации вычислений.
Найдём обратную матрицу для матрицы 3×3:
import numpy as np
# Задаём исходную матрицу A
A = np.array([
[2, 1, 0],
[0, 5, 1],
[2, 1, 1]
], dtype=float)
# Вычисляем обратную матрицу
A_inv = np.linalg.inv(A)
# Выводим результат
print("Обратная матрица для A:")
print(A_inv)В результате получим:
Обратная матрица для A:
[[ 0.4 -0.1 0.1]
[ 0.2 0.2 -0.2]
[-1. 0. 1. ]]Важно учитывать, что функция np.linalg.inv () работает только для квадратных матриц с ненулевым определителем. Если обратной матрицы не существует, NumPy выдаст ошибку LinAlgError. Чтобы программа не завершилась с ошибкой, вычисление можно поместить в блок try:
try:
A_inv = np.linalg.inv(A)
print(A_inv)
except np.linalg.LinAlgError:
print("Обратной матрицы не существует")
Читайте также:
Если вы хотите понять, как работает код на Python без использования NumPy, можно написать функции определения детерминанта и расчёта по методу алгебраических преобразований без использования специализированных библиотек.
Посмотреть код
# Функция для вычисления детерминанта 3x3 матрицы
def det3x3(M):
return (
M[0][0] * (M[1][1] * M[2][2] - M[1][2] * M[2][1])
- M[0][1] * (M[1][0] * M[2][2] - M[1][2] * M[2][0])
+ M[0][2] * (M[1][0] * M[2][1] - M[1][1] * M[2][0])
)
# Функция для вычисления обратной матрицы
def inverse_matrix(M):
det = det3x3(M)
print(f"Детерминант исходной матрицы: {det}")
if det == 0:
raise ValueError("Матрица вырожденная, обратной не существует")
cofactors = [
[
(M[1][1] * M[2][2] - M[1][2] * M[2][1]),
-(M[1][0] * M[2][2] - M[1][2] * M[2][0]),
(M[1][0] * M[2][1] - M[1][1] * M[2][0])
],
[
-(M[0][1] * M[2][2] - M[0][2] * M[2][1]),
(M[0][0] * M[2][2] - M[0][2] * M[2][0]),
-(M[0][0] * M[2][1] - M[0][1] * M[2][0])
],
[
(M[0][1] * M[1][2] - M[0][2] * M[1][1]),
-(M[0][0] * M[1][2] - M[0][2] * M[1][0]),
(M[0][0] * M[1][1] - M[0][1] * M[1][0])
]
]
# Транспонирование матрицы дополнений
adjugate = [[cofactors[j][i] for j in range(3)] for i in range(3)]
# Деление на детерминант
inverse = [[adjugate[i][j] / det for j in range(3)] for i in range(3)]
return inverse, det
# Пример матрицы (det ≠ 1)
A = [
[2, 1, 0],
[0, 3, 1],
[1, 0, 4]
]
# Вычисляем обратную матрицу
A_inv, det_A = inverse_matrix(A)
print("\nОбратная матрица A^-1:")
for row in A_inv:
print(row)
# Детерминант обратной матрицы
det_inverse = det3x3(A_inv)
print(f"\nДетерминант обратной матрицы: {det_inverse}")
# Проверка свойства
print(f"1 / det(A) = {1 / det_A}")
if abs(det_inverse - 1 / det_A) < 1e-9:
print("\nПроверка пройдена: det(A^-1) = 1 / det(A)")
else:
print("\nОшибка: свойство не выполняется")В результате получим:
Детерминант исходной матрицы: 25
Обратная матрица A^-1:
[0.48, -0.16, 0.04]
[0.04, 0.32, -0.08]
[-0.12, 0.04, 0.24]
Детерминант обратной матрицы: 0.03999999999999999
1 / det(A) = 0.04
Проверка пройдена: det(A^-1) = 1 / det(A)Что нужно запомнить
Обратная матрица помогает «отменить» действие исходной матрицы. С её помощью можно решать системы линейных уравнений, восстанавливать исходные данные после преобразования и выполнять обратные вычисления. Однако обратная матрица существует только у квадратных матриц с ненулевым определителем.
Как выбрать метод для нахождения обратной матрицы:
- Матрица 2×2: используйте готовую формулу. Это самый быстрый способ для небольшой матрицы.
- Матрица 3×3: применяйте метод алгебраических дополнений. Для этого потребуется найти миноры, составить матрицу алгебраических дополнений, транспонировать её и разделить на определитель.
- Матрица 3×3 и больше: используйте метод Гаусса — Жордана. Допишите справа единичную матрицу и с помощью элементарных преобразований превратите левую часть в единичную. Справа получится обратная матрица.
- Матрица любого размера — используйте специализированные библиотеки, например NumPy. Это ускорит вычисления и снизит риск арифметических ошибок.
Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!