Найти в Дзене
Георгий Багаев

Пример вычисления обратной матрицы в коде на языке программирования Python.

Доброго времени суток! Сегодня поговорим об обратных матрицах и транспонировании.

Описание матриц, я давал в другой своей статье, умножение матриц: https://dzen.ru/a/Y-yDOz7fkwLABh5Q

Обратной для матрицы A называют матрицу A^{-1}, которая удовлетворяет условию

AA^{-1}=A^{-1}A=E.

По определению обратной матрицы AA^{-1}=A^{-1}A=E, то есть матрица и обратная ей являются перестановочными. Значит, обратные матрицы существуют только для квадратных. Поэтому преобразование вектора из плоскости в пространство необратимо: матрица такого преобразования будет прямоугольной.

Обратные матрицы, как и обратные числа, заменяют собой операцию деления. Вместо деления на 5 можно умножить на обратное число 0.2. А вместо деления на матрицу — умножить на обратную матрицу.

У любого ненулевого числа есть всего одно, обратное ему. Точно так же дела обстоят и с матрицами.

У матрицы может быть не более одной обратной.

Вычисление обратной матрицы в коде.

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

Поэтому сейчас мы будем вычислять обратные матрицы в Python.

Вычислим обратную для матрицы (-7 8

2 31)

Нам понадобится функция np.linalg.inv(a), где a — исходная матрица. Чтобы проверить, действительно ли получилась обратная матрица, а не хаотичный набор чисел, применим матричное произведение.

Пример получения обратной матрицы с проверкой
Пример получения обратной матрицы с проверкой

Получившийся результат
Получившийся результат

Теперь возьмём матрицу побольше: ( 9 -7 15

6 3 29

0 3 7 )

Пример кода для более большой матрица
Пример кода для более большой матрица

Результат вычислений
Результат вычислений

Вместо единичной матрицы получилось что-то странное, но мы всё объясним.

Дело в том, что все десятичные дроби код выводит в экспоненциальном виде. Это представление числа в виде произведения мантиссы, то есть числа не меньше 1 и не больше 10, и экспоненты — степени десятки, которая отделяется от мантиссы буквой e.

Чтобы проверка давала на выходе единичную матрицу в привычном формате, будем округлять результат до ближайшего целого. Для этого нужна функция .round().

Вот что получится для матрицы ( 9 -7 15

6 3 29

0 3 7 )

Пример вычисления обратной матрицы в коде
Пример вычисления обратной матрицы в коде

Результат вычислений
Результат вычислений

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

Свойства обратных матриц

Несколько свойств обратных матриц мы уже определили:

  1. AA^{-1}=A^{-1}A=E— коммутативность произведения матрицы и обратной ей;
  2. Обратная матрица определяется единственным образом;
  3. (AB)^{-1}=B^{-1}A^{-1}— расчёт матрицы, обратной произведению.

А вот и все остальные.

  1. Матрица, обратная обратной

Если A обратима, то A^{-1} также обратима, причём (A^{-1})^{-1}=A.

Для примера возьмём матрицу растяжения ( 2 0

0 2).

Обратная ей матрица сжимает вектор в 2 раза: (0.5 0

0 0.5).

Преобразование, обратное сжатию, — это растяжение. Матрица, обратная сжатию вектора в 2 раза, будет в 2 раза его растягивать. Это снова матрица:

( 2 0

0 2).

Пример кода получения матрицы обратной обратной
Пример кода получения матрицы обратной обратной

Результат вычислений
Результат вычислений

Транспонирование обратной матрицы

(A^−1)^T=(A^T)^−1

Вычислим в коде левую и правую части для матрицы сдвига: (1 4

0 1)

Пример кода транспонированной  обратной матрицы
Пример кода транспонированной обратной матрицы

Результат транспонирования
Результат транспонирования

Здесь используется библиотека numpy. Она подключается оператором import -"import numpy as np".

Для того чтобы , библиотека numpy заработала необходимо установить ее сначала , командой pip install numpy и убедитесь , что используете последнюю версию Python. Команду необходимо вводить в cmd.exe.

В других ОС, существуют подобные командные строки, я работаю в операционной системе Windows.

Чтобы запустить этот код в среде разработки Python нужно в меню выбрать пункт File->New File, в появившемся окне набрать код или скопировать его туда, проверить ошибки, в меню появившегося окна выбрать Run->Run Module, программа выполнится.

Вот-так, относительно просто можно получить обратные матрицы и транспонировать матрицы в языке программирования Python.

Даю ссылку на другую мою статью, про умножение матриц:

https://dzen.ru/media/id/5f572502b7204709f04ab67c/primer-umnojeniia-matric-v-python-63ec833b3edf9302c0061e50

Маленькая просьба, поставить лайк в Дзене, если Вам понравилась публикация и подписаться, это поможет развитию канала: https://dzen.ru/id/5f572502b7204709f04ab67c