какие две матрицы можно перемножить
Умножение матриц.
Умножение матриц – это одна из самых распространенных операций с матрицами. Матрица, которая получается после умножения, называется произведением матриц.
Произведением матрицы Am×n на матрицу Bn×k будет матрица Cm×k такая, что элемент матрицы C, находящийся в i-ой строке и j-ом столбце, то есть элемент cij равен сумме произведений элементов i-ой строки матрицы A на соответствующие элементы j-ого столбца матрицы B.
Процесс умножения матриц возможен только в случае, когда число столбцов первой матрицы равно числу строк второй матрицы.
Пример:
Можно ли умножить матрицу на матрицу
?
m = n, значит, умножать данные матрицы можно.
Если же матрицы поменять местами, то, при таких матрицах, умножение уже не будет возможно.
m ≠ n, таким образом, выполнять умножение нельзя:
Довольно часто можно встретить задания с подвохом, когда ученику предлагается умножить матрицы, умножение которых заведомо невозможно.
Обратите внимание, что иногда можно умножать матрицы и так, и так. К примеру, для матриц, и
возможно как умножение MN, так и умножение NM.
Операция умножения матриц.
Операция умножения матриц – это не очень сложное действие. Умножение матриц лучше понимать на конкретных примерах, т.к. только определение может сильно запутать.
Начнем с самого простого примера:
Необходимо умножить на
. Первым делом приведем формулу для данного случая:
– здесь хорошо прослеживается закономерность.
Далее более сложный пример:
Умножить на
.
Формула для этого случая: .
Умножение матриц и результат:
В результате получена т.н. нулевая матрица.
Очень важно помнить, что здесь не работает «правило перестановки мест слагаемых» так как почти всегда MN ≠ NM. Поэтому, производя операцию умножения матриц их ни в коем случае нельзя менять местами.
Теперь рассмотрим примеры умножения матриц третьего порядка:
Умножить на
.
Формула очень похожа на прошлые:
Решение матрицы: .
Умножение матрицы на число.
Умножение матрицы на число – это тоже самое умножение матриц, только вместо второй матрицы берется простое число. Как можно догадаться, такое умножение выполнять гораздо проще.
Пример умножения матрицы на число:
Тут все понятно – для того, чтобы умножить матрицу на число, необходимо каждый элемент матрицы последовательно умножить на указанное число. В данном случае – на 3.
Еще один полезный пример:
– умножение матрицы на дробное число.
Первым делом покажем то, чего делать не надо:
При умножении матрицы на дробное число не нужно вносить дробь в матрицу, так как это в первую очередь только затрудняет дальнейшие действия с матрицей, во-вторых, затрудняет проверку решения преподавателем.
.
Что стоит сделать в данном случае – это внести минус в матрицу:
.
Если бы у вас был пример, когда все элементы матрицы делились бы на 7 без остатка, то тогда можно (и нужно!) было бы поделить.
В данном примере можно и нужно умножить все элементы матрицы на ½, т.к. каждый элемент матрицы делится на 2 без остатка.
Примечание: в теории высшей математики школьного понятия «деление» нет. Вместо фразы «это поделить на это» всегда можно сказать «это умножить на дробь». То есть, деление – это частный случай умножения.
Правила умножения матриц с примерами
В данной публикации мы рассмотрим условие и правила (алгоритм), с помощью которых можно найти произведение двух матриц. Также приведем примеры для лучшего понимания.
Условие умножения матриц
Умножить две матрицы можно только в том случае, если число столбцов первой ( m ) равняется числу строк второй ( n ).
При этом очень важен порядок множителей. Так например, если рассмотренные выше матрицы поменять местами, найти их произведение уже не получится.
Следствие: квадратные матрицы можно умножать в любом порядке, но при перестановке сомножителей результат будет разным. Т.е. (практически всегда).
Алгоритм нахождения произведения матриц
1. Матрица второго порядка и вектор-столбец
2. Две матрицы второго порядка
3. Матрицы третьего порядка
С помощью такого же алгоритма умножаются две матрицы “три на три” и более старших порядков.
Умножение матриц: примеры, алгоритм действий, свойства произведения
Произведение двух матриц
Произведение матриц (С= АВ) — операция только для согласованных матриц А и В, у которых число столбцов матрицы А равно числу строк матрицы В:
C ⏟ m × n = A ⏟ m × p × B ⏟ p × n
Вычислим произведения АВ=ВА:
Решение, используя правило умножения матриц:
А ⏟ 2 × 3 × В ⏟ 3 × 2 = 1 2 1 0 1 2 × 1 0 0 1 1 1 = 1 × 1 + 2 × 0 + 1 × 1 1 × 0 + 2 × 1 + 1 × 1 0 × 1 + 1 × 0 + 2 × 1 0 × 0 + 1 × 1 + 2 × 1 = = 2 3 2 3 ⏟ 2 × 2
В ⏟ 3 × 2 × А ⏟ 2 × 3 = 1 0 0 1 1 1 × 1 2 1 0 1 2 = 1 × 1 + 0 × 0 1 × 2 + 0 × 1 1 × 1 + 0 × 2 0 × 1 + 1 × 0 0 × 2 + 1 × 1 0 × 1 + 1 × 2 1 × 1 + 1 × 0 1 × 2 + 1 × 1 1 × 1 + 1 × 2 = 1 2 1 0 1 2 1 3 3 ⏟ 3 × 3
Свойства умножения матриц
Свойства умножения матриц:
Проверяем свойство №1: ( А В ) С = А ( В С ) :
Проверяем свойство №2: А ( В + С ) = А В + А С :
Произведение трех матриц
Произведение трех матриц А В С вычисляют 2-мя способами:
Перемножить матрицы 2-мя способами:
Алгоритм действий:
Используем формулу А В С = ( А В ) С :
Умножение матрицы на число
Произведение матрицы А на число k — это матрица В = А k того же размера, которая получена из исходной умножением на заданное число всех ее элементов:
Свойства умножения матрицы на число:
Найдем произведение матрицы А = 4 2 9 0 на 5.
5 А = 5 4 2 9 0 5 × 4 5 × 2 5 × 9 5 × 0 = 20 10 45 0
Умножение матрицы на вектор
Чтобы найти произведение матрицы и вектора, необходимо умножать по правилу «строка на столбец»:
А В = а 11 а 12 ⋯ а 1 n а 21 а 22 ⋯ а 2 n ⋯ ⋯ ⋯ ⋯ а m 1 а m 2 ⋯ а m n b 1 b 2 ⋯ b 1 n = a 11 × b 1 + a 12 × b 2 + ⋯ + a 1 n × b n a 21 × b 1 + a 22 × b 2 + ⋯ + a 2 n × b n ⋯ ⋯ ⋯ ⋯ a m 1 × b 1 + a m 2 × b 2 + ⋯ + a m n × b n = c 1 c 2 ⋯ c 1 m
А В = а а ⋯ а b b ⋯ b = a 1 × b 1 a 1 × b 2 ⋯ a 1 × b n a 2 × b 1 a 2 × b 2 ⋯ a 2 × b n ⋯ ⋯ ⋯ ⋯ a n × b 1 a n × b 2 ⋯ a n × b n = c 11 c 12 ⋯ c 1 n c 21 c 22 ⋯ c 2 n ⋯ ⋯ ⋯ ⋯ c n 1 c n 2 ⋯ c n n
Найдем произведение матрицы А и вектора-столбца В :
Найдем произведение матрицы А и вектора-строку В :
Матричное умножение. Медленное достижение мифической цели
В недавней работе был установлен новый рекорд скорости по умножению двух матриц. Она также знаменует и конец эпохи для метода, который ученые применяли для исследований на протяжении десятилетий.
Математики стремятся к достижению мифической цели — второй степени (exponent two), то есть к умножению пары матриц n х n всего за n 2 шагов. Исследователи подбираются все ближе к своей цели, но получится ли у них когда-нибудь достичь ее?
Для специалистов в области Computer Science и математиков сама идея о «второй степени» связана с представлениями о совершенном мире.
«Трудно разграничить научное мышление и беспочвенные мечтания», — признается Крис Уманс из Калифорнийского технологического института. «Я хочу, чтобы степень была равна двум, потому что это красиво».
С точки зрения необходимого количества шагов «вторая степень» — это идеальная скорость выполнения одной из самых фундаментальных математических операций — матричного умножения. Если вторая степень достижима, то матричное умножение получится выполнять максимально быстро, насколько это физически возможно. Если это не так, то мы застряли в мире, который не соответствует нашим мечтам.
Матрицы представляют собой массивы чисел. Когда две матрицы согласованы (число столбцов в первом сомножителе равно числу строк во втором), их можно перемножить, чтобы получить третью. Например, если вы начнете с пары матриц 2 х 2, их произведение также будет матрицей 2 х 2, содержащей четыре элемента. В более общем смысле, произведение пары матриц размером n х n представляет собой другую матрицу размером n х n с n 2 элементами.
И хотя никто точно не знает, можно ли этого достичь, исследователи продолжают продвигаться в этом направлении.
Статья, опубликованная в октябре, подбирается к цели еще ближе и описывает самый быстрый на данный момент метод умножения двух матриц. Результат, который получили Джош Алман, докторант Гарвардского университета, и Вирджиния Василевска Уильямс из Массачусетского технологического института, уменьшает степень предыдущего лучшего показателя примерно на одну стотысячную. Это действительно большое достижение в данной области, добытое кропотливым трудом.
Чтобы получше разобраться в этом процессе и понять, как его можно усовершенствовать, давайте начнем с пары матриц 2 х 2, A и B. При вычислении каждого элемента их произведения вы используете соответствующую строку из A и соответствующий столбец из B. Чтобы получить верхний правый элемент, умножьте первое число в первой строке A на первое число во втором столбце B, затем умножьте второе число в первой строке A на второе число во втором столбце B и сложите эти два произведения.
Самуэль Веласко / Quanta Magazine
Эта операция известна как получение «скалярного произведения» строки со столбцом (иногда называется «внутренним произведением»). Чтобы вычислить другие элементы в произведении матриц, повторите процедуру с соответствующими строками и столбцами.
В целом, классический метод умножения матриц 2 х 2 состоит из восьми умножений и нескольких сложений. Как правило, этот способ умножения двух матриц размера n х n требует n 3 умножений.
С увеличением размера матриц количество умножений, необходимых для нахождения их произведения, растет намного быстрее, чем количество сложений. Чтобы найти произведение матриц 2 х 2 требуется всего восемь промежуточных умножений, а чтобы найти произведение матриц 4 х 4 их требуется уже 64. Однако количество сложений, необходимых для получения суммы этих матриц, не так значительно отличается. Обычно количество сложений равно количеству элементов в матрице, то есть четыре для матриц 2 х 2 и 16 для матриц 4 х 4. Эта разница между сложением и умножением позволяет понять, почему исследователи измеряют скорость умножения матриц исключительно с точки зрения количества требуемых умножений.
«Умножения — это наше всё, — утверждает Уманс, — Показатель степени в итоге полностью зависит только от количества умножений. Сложения в некотором смысле исчезают».
На протяжении веков люди считали, что n 3 — это самый быстрый способ умножения матриц. По имеющимся сведениям, в 1969 году Фолькер Штрассен намеревался доказать, что невозможно умножить матрицы 2 х 2, используя менее восьми умножений. Видимо, он все-таки не смог найти доказательства, а через некоторое время и понял почему: на самом деле, существует способ сделать это с помощью семи умножений!
Штрассен придумал сложный набор соотношений, которые позволили заменить одно из этих восьми умножений 14 дополнительными сложениями. Может показаться, что разница совершенно незначительна, но она оправдывает себя, так как умножение вносит больший вклад, чем сложение. Найдя способ избавиться от одного умножения для маленьких матриц 2 х 2, Штрассен открыл возможность, которую он мог использовать при умножении бOльших матриц.
«Это крошечное изменение приводит к огромным улучшениям в работе с большими матрицами», — говорит Уильямс.
Вирджиния Василевска Уильямс из Массачусетского технологического института и Джош Алман из Гарвардского университета открыли самый быстрый способ перемножения двух матриц за n 2.3728596 шагов. Джаред Чарни; Ричард Т.К. Хоук
Предположим, вы хотите перемножить пару матриц 8 х 8. Один из способов сделать это — разбить каждую большую матрицу на четыре матрицы размером 4 х 4 так, чтобы каждая имела по четыре элемента. Поскольку элементы матрицы также могут являться матрицами, вы можете считать исходные матрицы парой матриц 2 х 2, каждый из четырех элементов которых сам по себе является матрицей 4 х 4. Посредством некоторых манипуляций каждая из этих матриц размером 4 х 4 может быть разбита на четыре матрицы размером 2 х 2.
Смысл этого многократного разбиения больших матриц на более мелкие заключается в том, что можно снова и снова применять алгоритм Штрассена к меньшим матрицам и с помощью его метода сокращать количество шагов на каждом этапе. В целом алгоритм Штрассена увеличил скорость умножения матриц с n 3 до n 2.81 мультипликативных шагов.
Следующий важный шаг в развитии идеи произошел в конце 1970-х, когда появился принципиально новый подход к решению этой задачи. Он подразумевает перевод матричного умножения в другую вычислительную задачу линейной алгебры с использованием объектов, называемых тензорами. Тензоры, используемые в этой задаче, представляют собой трехмерные массивы чисел, состоящие из множества различных частей, каждая из которых выглядит как небольшая задача на умножение матриц.
Умножение матриц и эта задача, связанная с тензорами, в определенном смысле эквивалентны друг другу, но для решения последней исследователи уже имели более быстрые процедуры. Таким образом, перед ними встала задача определить «обменный курс» между ними: Матрицы какого размера можно перемножить при тех же вычислительных затратах, которые требуются для решения тензорной задачи?
«Это очень распространенная в теоретической информатике концепция: преобразовывать задачи и проводить аналогию между ними, чтобы показать, что они одинаково простые или сложные», — сказал Алман.
В 1981 году Арнольд Шёнхаге использовал этот подход, чтобы доказать, что умножение матриц возможно выполнить за n 2.522 шагов. Позднее Штрассен назвал этот подход «лазерным методом» (laser method).
За последние несколько десятилетий каждое улучшение в процессе умножения матриц происходило за счет усовершенствования лазерного метода, поскольку исследователи находили все более эффективные способы трансформации задачи. В своем новом доказательстве Алман и Уильямс стирают различие между 2 задачами и показывают, что уменьшить число умножений возможно. «В целом Джош и Вирджиния нашли способ применить машинные вычисления в рамках лазерного метода и получили лучшие на настоящий момент результаты», — сказал Генри Кон из Microsoft Research.
Но, несмотря на все эти гонки и победы, становится ясно, что в случае с этим подходом действует закон убывающей доходности, или убывающей отдачи. Скорее всего, усовершенствование Алмана и Уильямс почти полностью исчерпало возможности лазерного метода, но так и не позволило достичь конечной теоретической цели.
«Маловероятно, что получится приблизиться ко второй степени, используя это семейство методов», — отметил Уманс.
Для этого потребуется открытие новых методов и стойкая вера в то, что это вообще возможно.
Уильямс вспоминает один из разговоров со Штрассеном об этом: «Я спросила его, считает ли он, что возможно получить вторую степень для матричного умножения, и он ответил: «Нет, нет, нет, никогда!».
Знакомство с матрицами
Понятие и базовые операции.
Разработчики нейросетей говорят, что все нейросети — это просто бесконечное перемножение матриц. Мы решили разобраться, что это за матрицы и как их перемножать, а для этого пришлось полезть в линейную алгебру. И это оказалось не так сложно, как мы думали:
Вектор — это «кирпичик» линейной алгебры. На его основе мы переходим к понятию матрицы.
Что такое матрица
Если вектор — это строка с числами в определённом порядке, то матрица — это таблица с числами в определённом порядке. Как у любой таблицы, у матрицы есть столбцы и строки. В них сидят какие-то числа. Всё вместе — это математический объект, то есть в каких-то случаях всю эту таблицу можно рассматривать как единое целое и совершать с ним операции.
Матрицы принято обозначать большими буквами латинского алфавита вроде А, В, С, D и так далее.
Числа внутри матрицы называют элементами. Каждый элемент обозначается двумя цифрами: первая цифра указывает на строку, а вторая — на столбец. Это адрес числа внутри матрицы. Например, элемент А₂₃ означает, что нужное число находится во второй строке и третьем столбце. Нумерация элементов нужна для записи формул и устного объяснения того, где находится нужное число в матрице.
В матрице может находиться неограниченное количество строк, столбцов и элементов. Из-за этого матрицы бывают разных видов и могут обладать разными особенностями. Например, если в матрице совпадает число строк и столбцов, то такая матрица называется квадратной.
В этой статье и в следующих материалах мы будем рассматривать разные виды матрицы и постепенно изучим их особенности.
Общая схема матрицы
Пример квадратной матрицы с пятью строками и столбцами. Записывается как матрица размера 5×5. В числовой матрице мы не нумеруем элементы — они закрепляются за числами по умолчанию. Например, элементу А₂₃ соответствует число три
Простые операции с матрицами
Вынесение минуса за пределы матрицы. Если внутри матрицы у большинства элементов знак минус, то часто это мешает расчётам или приводит к ошибкам. Чтобы этого избежать, от минуса избавляются. Для этого нужно вынести минус за пределы матрицы и изменить знак всех элементов внутри самой матрицы.
И наоборот: если внутри матрицы у большинства элементов знак минус и перед матрицей стоит минус, то минус можно внести в матрицу.
Выносим минус за пределы матрицы и получаем вместо двадцати одного отрицательного элемента — четыре
Перед матрицей минус, и внутри у большинства элементов минус. Вносим минус в матрицу и делаем её удобной для дальнейших вычислений
Умножение матрицы на число. Для умножения матрицы на число достаточно каждый элемент матрицы умножить на это число.
Пример умножения матрицы на число
Транспонирование матрицы. Это операция, которая позже нам понадобится для решения матричных уравнений. Для транспонирования мы берём известную матрицу, меняем в ней местами строки со столбцами и получаем новую матрицу. Как бы поставили матрицу набок.
⚠️ При этом в матрице запрещено в произвольном порядке менять элементы. Зато можно полностью менять местами строки или столбцы. Если мы поменяем местами первую и вторую строку, то это останется прежняя матрица.
Схема транспонирования матриц: первая строка переходит в первый столбец, вторая строка — во второй столбец и так далее в зависимости от количества элементов матрицы
Пример транспонирования. Транспонированная матрица обозначается буквой той же матрицы, из которой она получилась + надстрочечный индекс в виде печатной буквы «Т»
Матрицу можно перетасовывать, но это нужно делать по правилам. Транспонирование — одно из таких правил
Сложение и вычитание матриц
Если в нескольких матрицах совпадает число строк и столбцов, то мы можем их складывать и вычитать. Для вычислений нам нужно поэлементно сложить или вычесть каждый элемент матриц: первый элемент первой матрицы складываем с первым элементом второй матрицы или вычитаем из него и так далее. В результате получаем новую матрицу.
Пример сложения двух прямоугольных матриц с тремя строками и двумя столбцами
Пример вычитания двух матриц
Умножение матриц
Матрицы умножаются по принципу строка на столбец. Мы умножаем первую строку первой матрицы, на первый столбец второй матрицы, складываем результаты и получаем первый элемент новой матрицы. По аналогичной схеме вычисляем все остальные элементы. Звучит запутанно, поэтому идём по шагам:
Если нам нужно найти матрицу в квадрате, то мы умножаем эту матрицу на саму себя. Если нужна матрица в кубе — умножаем её на саму себя три раза и так далее в зависимости от количества степеней. Если в одной из матриц все элементы нули, то она считается нулевой и после умножения на другую матрицу даёт нулевую матрицу — это как нуль умноженный на число всегда даёт нуль.
Формула умножения матриц
Пример умножения квадратных матриц размерностью 2×2
Что дальше
В следующий раз продолжим знакомиться с базовыми понятиями, которые нам понадобятся для решения матричных уравнений. А на сегодня Нео свободен 👽