Как перемножить матрицы в excel
Функция МУМНОТ возвращает матричное произведение двух массивов. Результатом является массив с таким же числом строк, что и массив1, и с таким же числом столбцов, что и массив2.
Примечание: Если у вас установлена текущая версия Microsoft 365, можно просто ввести формулу в верхней левой ячейке диапазона вывода и нажать клавишу ВВОД, чтобы подтвердить использование формулы динамического массива. Иначе формулу необходимо вводить с использованием прежней версии массива, выбрав диапазон вывода, введя формулу в левой верхней ячейке диапазона и нажав клавиши CTRL+SHIFT+ВВОД для подтверждения. Excel автоматически вставляет фигурные скобки в начале и конце формулы. Дополнительные сведения о формулах массива см. в статье Использование формул массива: рекомендации и примеры.
Синтаксис
МУМНОЖ(массив1; массив2)
Аргументы функции МУМНОЖ описаны ниже.
массив1, массив2 Обязательный. Перемножаемые массивы.
Замечания
Число столбцов в массиве1 должно быть таким же, как число строк в массиве «массив2», и оба массива должны содержать только числа.
Массив1 и массив2 могут быть заданы как диапазоны ячеев, константы массива или ссылки.
Функция МУМНОЖ возвращает значение ошибки #ЗНАЧ! в следующих случаях, указанных ниже.
Если какая-либо ячейка пуста или содержит текст.
Число столбцов в массиве1 отличается от числа строк в массиве «массив2».
Массив a, который является произведением двух массивов b и c, определяется следующим образом:
где i — номер строки, а j — номер столбца.
Примеры


Чтобы указанные выше формулы вычислялись правильно, нужно вводить их в виде формул массивов. После ввода формулы нажмите ввод, если у вас есть текущая Microsoft 365 подписка. в противном случае нажмите CTRL+SHIFT+ВВОД. Если формула не будет введена как формула массива, возвращается единственный результат.
Дополнительные сведения
Вы всегда можете задать вопрос эксперту в Excel Tech Community или получить поддержку в сообществах.
Умножение матриц в EXCEL
В этой статье рассмотрены операции умножения матриц с помощью функции МУМНОЖ() или англ.MMULT и с помощью других формул, а также свойства ассоциативности и дистрибутивности операции умножения матриц. Примеры решены в MS EXCEL.
Операция умножения двух матриц А и В определена только для случаев, когда число столбцов матрицы А равно числу строк матрицы В.
Произведение матрицы А порядка P x N и матрицы В порядка N x Q — это такая матрица С порядка P x Q, у которой каждый элемент равен сумме произведений элементов i-ой строки матрицы А на соответствующие элементы j-ого столбца матрицы В , то есть:

Для умножения матриц в MS EXCEL существует специальная функция МУМНОЖ() , которую нужно вводить как формулу массива .
Рассмотрим сначала умножение квадратных матриц 2 х 2.
Разместим матрицы в диапазонах А8:В9 и D8:E9 (см. файл примера ).

Результат, также матрицу 2 х 2, будем вводить в диапазон H8:I9 .
- выделите указанный диапазон H8:I9
- поставьте курсор в Строку формул (или нажмите клавишу F2 )
- введите формулу =МУМНОЖ(A8:B9;D8:E9)
- нажмите CTRL+SHIFT+ENTER
Выделенный диапазон заполнится элементами матрицы. В принципе можно выделить заведомо б о льший диапазон, в этом случае лишние ячейки будут заполнены ошибкой #Н/Д.
Удалить отдельный элемент матрицы А*В не удастся — только все элементы сразу (выделите весь диапазон и нажмите клавишу DEL ).
Чтобы изменить значения аргументов функции (например, поменять матрицы местами), выделите любую ячейку матрицы, нажмите F2 , исправьте формулу и нажмите CTRL+SHIFT+ENTER .
Альтернативной формулой для перемножения матриц является формула массива =СУММПРОИЗВ($A8:$B8;ТРАНСП(D$8:D$9)) . Введите формулу в верхнюю левую ячейку диапазона и нажмите CTRL+SHIFT+ENTER . Затем скопируйте ее вниз и вправо на нужное количество ячеек.
Если попытаться перемножить матрицы неподходящей размерности (когда число столбцов матрицы А НЕ равно числу строк матрицы В), то функция МУМНОЖ() вернет ошибку #ЗНАЧ!
В файле примера также продемонстрированы свойства ассоциативности и дистрибутивности операции умножения матриц.
Как перемножить матрицы в excel
По сути, как видно из изображения, мы берем транспонирование второй матрицы, умножаем и складываем элементы вместе, чтобы получить результат. Как пример, самый первый пункт 15 в результирующей матрице происходит от 1*2 + 6*2 + 1*1 = 2 + 12 + 1 = 15 ,
Хотя это объяснение визуально приятно, по моему скромному мнению, его трудно преобразовать в код. Так что давайте использовать Excel и понимать матричное умножение по-другому!
Умножение матриц в EXCEL
Рассмотрим две матрицы а такжеВразмера 4×3 а также 3×4 ,
Примечание: я буду использовать жирный шрифт а такжеВсослаться на матрицы в этой статье. Обычная практика — ссылаться на векторы и матрицы, используя жирный шрифт.
Матрицы А и В
Из изображения, которое мы видели раньше, если вы помните, мы взяли транспонированиеВи умноженные строки с колоннамиВчтобы получить результирующую матрицу. Скорее, давайте пропустим этот шаг, сделав транспонирование на этот раз, и сразу умножим строки и столбцы.
Поэтому строка 0 из умножается на столбец 0Впоэлементные и результирующие поэлементные продукты добавляются для получения первого элемента в результирующей матрицеСв положении [0][0] ,
Вот как это выглядит в Excel:
C [0] [0] = 1 * 1 + 10 * 5 + 100 * 9 = 1 + 50 + 900 = 951
Точно так же мы получаем C[0][3] поэлементно умножая строку 0 из и кол 3 изB.В Excel это выглядит так:
C [0] [3] = 1 * 4 + 10 * 8 + 100 * 12 = 4 + 80 + 1200 = 1284
И, наконец, мы следуем тому же процессу, чтобы пройти каждый пустой ящик вСчтобы получить окончательный результат.
C [3] [3] = 4 * 4 + 40 * 8 + 400 * 12 = 16 + 320 + 4800 = 5136
Вот и мы! Вот так мы делаем матричное умножение! Это было легко, не так ли? Мы теперь не только поняли умножение матриц, но и внедрили его в Excel! Как это круто?
Я лично считаю, что теперь вы готовы работать с некоторыми правилами, связанными с умножением матрицMatMul):
- Позволять ar,ac быть количеством строк и столбцов вA.Точно так же, пусть br, bc быть количеством строк и столбцов вB.Тогда для выполнения умножения матриц необходимо, чтобы ac == br , Зачем? Итак, как вы видели в Excel, мы умножили строки и столбцы поэлементно, а затем добавили промежуточные продукты, чтобы получить конечный результат. Если есть несоответствие в размерах, и один вектор длиннее другого, мы больше не можем выполнять поэлементное умножение!
- Размеры результирующей матрицы всегда будут ar,bc , То есть количество строк исходит от и количество столбцов исходит отB.
Способ 1: использование 3-х циклов FOR
Вот еще один отказ от ответственности, при реализации умножения матриц в Excel, мы не только поняли это, но и повторили первый метод Джереми, который использовал 3 цикла FOR. Вот как это выглядит в коде:
Надеюсь, теперь вы сможете лучше понять это. Если нет, то сейчас самое время сделать паузу, поэкспериментировать с кодом и посмотреть, что на самом деле происходит. Я обещаю вам, это так же, как наша версия Excel!
Хорошо, я предполагаю, что вы потратили некоторое время на размышления о коде, поэтому давайте обсудим это!
- Почему первые две петли в range(ar) а также range(bc) ? Ну, как вы помните изПравило-2наша результирующая матрица будет иметь размеры ar,bc , И из Excel мы увидели, что мы пересекаем каждый элементСследовательно, один за другим, чтобы пройти ar строки и bc столбцы нам нужно 2 цикла в range(ar) а также range(bc) ,
- Итак, почему третий цикл FOR в range(ac) #or br ? Ну изПравило-1, мы знаем это ac==br так что на самом деле не имеет значения, ставим ли мы range(ac) или range(br) в третьем цикле. По сути, именно здесь отдельные элементы умножаются вместе и добавляются. Из нашего предыдущего примера Excel, для C[0][0] это где шаг C[0][0] = 1*1 + 10*5 + 100*9 = 1 + 50 + 900 = 951 произойдет, и, наконец, мы перейдем к следующей коробке. Количество предметов, которые умножаются и складываются вместе, равно ac or br ,
Это действительно так! Это метод-1 для вас! Вот песня, чтобы помнить Матричное Умножение. (Я узнал об этом первым из fast.ai, оригинальный автор неизвестен)

Надеюсь, теперь вы понимаете, как две матрицы умножаются друг на друга. Если не, Вот это еще один учебник Хан Академии
Метод 2: Использование поэлементного умножения
Так что до сих пор мы разбираем каждую позицию в результирующей матрицеC,найти отдельные элементы, а затем суммировать их вместе. Если вы помните, что-то вроде C[0][0] = 1*1 + 10*5 + 100*9 = 1 + 50 + 900 = 951 , Конечно, должен быть другой путь? Что если вместо того, чтобы делать отдельные продукты, а затем суммировать их, мы умножаем векторы за один раз, чтобы получить результирующий вектор, и суммируем полученный вектор, чтобы получить конечный элемент?
До сих пор мы находили отдельные продукты 10, 20, 30 и сложить их вместе 10 + 20 + 30 = 60 , Но, действительно, все это можно заменить на:
Если вы помните, самый внутренний цикл в range(ac) #or br находил отдельные продукты и добавлял их. Ну, мы можем заменить этот цикл, чтобы выполнить векторное поэлементное произведение и положить .sum() в конце концов, и PyTorch / NumPy имеют возможность выполнять поэлементные операции для нас!
Вот как это выглядит в Excel:
C [0] [0] = сумма (A [строка 0] * B [столбец 0])
Точно так же мы получаем C[0][3] путем умножения вектора в строке 0 с вектором на цв 3Ви суммируя полученный вектор.
C [0] [3] = сумма (A [строка 0] * B [столбец 3])
И, наконец, мы следуем тому же процессу, чтобы пройти каждый пустой ящик вСчтобы получить окончательный результат.
C [3] [3] = сумма (A [строка 3] * B [столбец 3])
Обратите внимание, как это отличается отМетод-1? На этот раз мы просто говорим Excel или PyTorch: умножьте строку 0 с col 0 изВи суммируем полученный вектор, чтобы дать нам ответ. Вместо того чтобы делать 1*1 + 10*5 + 100*9 , Например, для C[0][0] этот метод умножает Vector на строку 0 tensor([1,10,100]) с вектором в столбце 0 изВ tensor<[1,5,9]) чтобы получить промежуточный продукт Вектор tensor([1,50,900]) и суммирует это, чтобы дать результат в положении C[0][0] как tensor(951) ,
В коде это выглядит так:
Таким образом, мы просто анализируем каждую позициюC,используя две петли FOR и введите соответствующий результат в этой позиции. Если i,j представляют строки и столбцы вСэто выглядит примерно так .
И так далее .. пока мы не получим полную матрицуС,
Метод 3: вещание
Заметили общую тему здесь? Каждый раз мы должны умножить каждый ряд с каждым столбцомВполучитьС, Вы замечаете повторение? Мы умножаем один и тот же вектор строки в bc раз! И мы повторяем этот процесс ar раз!
Есть ли способ умножить вектор строки со всеми столбцамиВполучить соответствующий ряд вC?Да, есть! Войдите в трансляцию .
Примечание: я не буду объяснять вещание, Джереми делает это очень хорошо Вот,
Вместо этого давайте посмотрим, что это за волшебный кусок кода
Как обычно, давайте повторим в Excel! Это сделает вещи действительно легкими. Давайте сделаем это поэтапно.
Шаг 1)Выберите i-й ряд a[i,:] , Мы выбираем строку 0 в качестве примера.
Выберите строку 0 из
Шаг 2)Возьмите егоТранспонирование a[i,:].unsqueeze(-1)
Возьмите транспонирование строки 0 из A
Шаг 3)Развернуть матрицу столбца какВ a[i,:].unsqueeze(-1).expand_as(b)
Развернуть матрицу столбца как B
Шаг-4)Элемент мудрый умножить наВ a[i,:].unsqueeze(-1).expand_as(b)*b
Умножить элемент на B
Шаг-5)Суммируйте по строкам, чтобы получить строку 0 C
Суммируйте по измерению боковой строки, чтобы получить строку 0 C
Полный процесс вещания для каждого ряда выглядит примерно так:
Вещание в целом
Я надеюсь, что теперь вы получитевещания! Итак, давайте посмотрим, как это выглядит в коде ..
Вывод выглядит так:
Это именно то, как мы ожидаем, что это будет так же, как нашиВерсия Excel!
Вот и все! Мы успешно рассмотрели три метода умножения матриц, включая вещание.
Функции для работы с матрицами в Excel
В программе Excel с матрицей можно работать как с диапазоном. То есть совокупностью смежных ячеек, занимающих прямоугольную область.
Адрес матрицы – левая верхняя и правая нижняя ячейка диапазона, указанные черед двоеточие.
Формулы массива
Построение матрицы средствами Excel в большинстве случаев требует использование формулы массива. Основное их отличие – результатом становится не одно значение, а массив данных (диапазон чисел).
Порядок применения формулы массива:
- Выделить диапазон, где должен появиться результат действия формулы.
- Ввести формулу (как и положено, со знака «=»).
- Нажать сочетание кнопок Ctrl + Shift + Ввод.
В строке формул отобразится формула массива в фигурных скобках.
Чтобы изменить или удалить формулу массива, нужно выделить весь диапазон и выполнить соответствующие действия. Для введения изменений применяется та же комбинация (Ctrl + Shift + Enter). Часть массива изменить невозможно.
Решение матриц в Excel
С матрицами в Excel выполняются такие операции, как: транспонирование, сложение, умножение на число / матрицу; нахождение обратной матрицы и ее определителя.
Транспонирование
Транспонировать матрицу – поменять строки и столбцы местами.
Сначала отметим пустой диапазон, куда будем транспонировать матрицу. В исходной матрице 4 строки – в диапазоне для транспонирования должно быть 4 столбца. 5 колонок – это пять строк в пустой области.
- 1 способ. Выделить исходную матрицу. Нажать «копировать». Выделить пустой диапазон. «Развернуть» клавишу «Вставить». Открыть меню «Специальной вставки». Отметить операцию «Транспонировать». Закрыть диалоговое окно нажатием кнопки ОК.

- 2 способ. Выделить ячейку в левом верхнем углу пустого диапазона. Вызвать «Мастер функций». Функция ТРАНСП. Аргумент – диапазон с исходной матрицей.
Нажимаем ОК. Пока функция выдает ошибку. Выделяем весь диапазон, куда нужно транспонировать матрицу. Нажимаем кнопку F2 (переходим в режим редактирования формулы). Нажимаем сочетание клавиш Ctrl + Shift + Enter.
Преимущество второго способа: при внесении изменений в исходную матрицу автоматически меняется транспонированная матрица.
Сложение
Складывать можно матрицы с одинаковым количеством элементов. Число строк и столбцов первого диапазона должно равняться числу строк и столбцов второго диапазона.

В первой ячейке результирующей матрицы нужно ввести формулу вида: = первый элемент первой матрицы + первый элемент второй: (=B2+H2). Нажать Enter и растянуть формулу на весь диапазон.

Умножение матриц в Excel

Чтобы умножить матрицу на число, нужно каждый ее элемент умножить на это число. Формула в Excel: =A1*$E$3 (ссылка на ячейку с числом должна быть абсолютной).

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

В результирующей матрице количество строк равняется числу строк первой матрицы, а количество колонок – числу столбцов второй.
Для удобства выделяем диапазон, куда будут помещены результаты умножения. Делаем активной первую ячейку результирующего поля. Вводим формулу: =МУМНОЖ(A9:C13;E9:H11). Вводим как формулу массива.

Обратная матрица в Excel
Ее имеет смысл находить, если мы имеем дело с квадратной матрицей (количество строк и столбцов одинаковое).
Размерность обратной матрицы соответствует размеру исходной. Функция Excel – МОБР.
Выделяем первую ячейку пока пустого диапазона для обратной матрицы. Вводим формулу «=МОБР(A1:D4)» как функцию массива. Единственный аргумент – диапазон с исходной матрицей. Мы получили обратную матрицу в Excel:

Нахождение определителя матрицы
Это одно единственное число, которое находится для квадратной матрицы. Используемая функция – МОПРЕД.
Ставим курсор в любой ячейке открытого листа. Вводим формулу: =МОПРЕД(A1:D4).

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