Зарегистрируйтесь, чтобы продолжить обучение

Нелинейные операции Основы линейной алгебры

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

Условие умножения матриц

Мы можем умножить две матрицы друг на друга только в том случае, если количество столбцов в первой матрице равно количеству строк во второй матрице:

  • Умножение матрицы 7 * 1 на матрицу 1 * 2 дает матрицу 7 * 2
  • Умножение матрицы 4 * 3 на матрицу 3 * 4 дает матрицу 4 * 4
  • Умножение матрицы 4 * 3 и матрицы 2 * 3 невозможно, потому что они несовместимы

Другими словами, после умножения мы получим матрицу, в которой:

  • Столько же строк, что и в первой матрице
  • Столько же столбцов, что и во второй матрице

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

Как умножать матрицы

Общий принцип умножения матриц можно коротко сформулировать так:

Сначала строки поэлементно умножаются на столбцы, а затем строки заполняются

Разберем эту формулировку на отдельные шаги:

  1. Проверяем, что количество столбцов в первой матрице равно количеству строк во второй матрице (это называется совместимость матриц)
  2. Умножаем элементы первой строки первой матрицы на элементы из первого столбца второй матрицы
  3. Складываем полученные произведения. Это будет элемент, который находится в первой строке и первом столбце нашей итоговой матрицы
  4. Записываем сложенные произведения на соответствующие места
  5. Повторяем эти шаги для всех остальных строк и столбцов

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

  • Матрица A размером в i столбцов и j строк
  • Матрица B размером в j столбцов и k строк

Умножим их друг на друга. В итоге мы получим матрицу C, у которой будет i строк и k столбцов.

Каждый элемент в матрице C можно вычислить по формуле:

C_(ik) = sum_j * A_(ij) * B_(jk)

Разберем формулу подробнее:

  • C_(ik) = элемент в строке i и столбце k из матрицы C
  • A_(ij) = элемент в строке i и столбце j из матрицы A
  • B_(jk) = элемент в строке j и столбце k из матрицы B
  • sum_j = знак суммирования, который указывает, что члены a,i,j,b,j и k должны быть просуммированы по j

Что это значит? Давайте на примере покажем, как работает приведенная выше формула. Предположим, мы хотим умножить матрицу A на матрицу B:

Матрица A:

A * B = [[0,1,2],[3,4,5]] * [[6,7],[8,9],[10,11]]

Результат умножения матрицы A на матрицу B обозначим как матрицу C. Сначала определим размер будущей матрицы C:

  • У матрицы C будет две строки, как у матрицы A
  • У матрицы C будет два столбца, как у матрицы B

Чтобы вычислить значение каждого элемента в матрице C, мы используем такую формулу:

C_(ik) = sum_j * A_(ij) * B_(jk)

Применим ее:

C_11 = sum * A_(1j) * B_(j1) = 0*6 + 1*8 +2*10 = 0 + 8 + 20 = 28 C_12 = sum * A_(1j) * B_(j2) = 0*7 + 1*9 +2*11 = 0 + 9 + 22 = 31 C_21 = sum * A_(2j) * B_(j1) = 3*6 + 4*8 +5*10 = = 18 + 32 + 50 = 100 C_22 = sum * A_(2j) * B_(j2) = 3*7 + 4*9 +5*11 = 21 + 36 +55 = 112

Исходя из вышеприведенных расчетов, получаем:

[[0,1,2],[3,4,5]]*[[6,7],[8,9],[10,11]]=[[28,31],[100,112]]

В итоге мы вычислили матрицу C — умножили элементы строк матрицы A на соответствующие элементы столбцов матрицы B и сложили результаты в нужных местах.

Чтобы лучше запомнить, соберем все вычисления вместе и посмотрим на них еще раз:

[[0,1,2],[3,4,5]]*[[6,7],[8,9],[10,11]]=[[0*6+1*8+2*10,0*7+1*9+2*11],[3*6+4*8+5*10,3*7+4*9+5*11]]=[[28,31],[100,112]]

Еще один пример

Рассмотрим еще один пример. Умножим друг на друга две матрицы — A и B:

C=A*B=[[1,1],[3,4],[9,8]]*[[6],[8]]

У этих матриц разный порядок:

  • У матрицы A3 строки и 2 столбца
  • У матрицы B2 строки и 1 столбец

Таким образом, данные матрицы совместимы — мы можем умножить их. Матрица произведения будет состоять из 3 строк и 1 столбца:

[[C_11],[C_21],[C_31]]

Посчитаем компоненты матрицы C:

C_11 = a_11 * b_11 + a_12 * b_21 = 1 * 6 + 1 * 8 = 6 + 8 = 14 C_21 = a_21 * b_11 + a_22 * b_21 = 3 * 6 + 4 * 8 = 18 + 32 = 50 C_31 = a_31 * b_11 + a_32 * b_21 = 9 * 6 + 8 * 8 = 54 + 64 = 118

В итоге мы получим такую матрицу C:

C=A*B=[[1,1],[3,4],[9,8]]*[[6],[8]]=[[14],[50],[118]]

Формулы умножения

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

Например, если умножить две матрицы 2*2, получится матрица 2*2:

[[0,1],[3,4]]*[[6,7],[8,9]]=[[0*6+1*8,0*7+1*9],[3*6+4*8,3*7+4*9]]=[[8,9],[50,57]]

Если умножить две матрицы 3*3, получится матрица 3*3:

[[0,1,2],[3,4,5],[6,7,8]]*[[9,10,11],[12,13,14],[15,16,17]] =

[[0*9+1*12+2*15,0*10+1*13+2*16,0*11+1*14+2*17],[3*9+4*12+5*15,3*10+4*13+5*16,3*11+4*14+5*17],[6*9+7*12+8*15,6*10+7*13+8*16,6*11+7*14+8*17]]
[[0,1,2],[3,4,5],[6,7,8]]*[[9,10,11],[12,13,14],[15,16,17]] =[[42,45,48],[150,162,174],[258,279,300]]

Тот же принцип работает с матрицами 4*4, 5*5 и так далее.

Свойства матричного умножения

В линейной алгебре существуют определенные свойства операции умножения матриц. Эти свойства приведены ниже.

Некоммутативность. Мы знаем, что обычное умножение коммутативно. Мы можем переставить множители местами, и ничего не поменяется:

2*5=10\ 5*2=10

Но с матрицами этот принцип не работает. Умножение матриц некоммутативно, то есть:

A*B\neB*A

Дистрибутивность. При умножении матриц на скобки нужно учитывать, с какой стороны стоит умножение. Нужно раскрывать скобки без потери последовательности:

A*(B+C)=AB+AC\ (A+B)*C=AC+BC

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

c * (AB) = (cA) * B = A * (Bc)

Ассоциативность. Умножение матриц является ассоциативным. Опять же, нельзя терять последовательность. При этом не важно, в каком порядке мы выполняем умножение:

(AB)*C = A*(BC)

Еще одно связанное с этими свойствами понятие определитель матрицы (детерминант матрицы) — это одна из основных численных характеристик квадратной матрицы, применяемая при решении многих задач, мы рассмотрим в следующем уроке.

Выводы

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


Самостоятельная работа

Выполните умножение матриц A и B:

A * B = [[1,4],[1,2]] * [[9,2],[7,2]]
Нажмите, чтобы увидеть ответ

Выполняем умножение и вычисляем матрицу AB:

  • a_(11)*b_(11)+a_(12)*b_(21)=1*9+4*7=9+28=37
  • a_(11)*b_(12)+a_(12)*b_(22)=1*2+4*2=2+8=10
  • a_(21)*b_(11)+a_(22)*b_(21)=1*9+2*7=9+14=23
  • a_(21)*b_(12)+a_(22)*b_(22)=1*2+2*2=2+4=6

Ответ:

AB = [[37,10],[23,6]]

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff