Перемножение матриц в Microsoft Excel — задача, с которой сталкиваются студенты, инженеры и аналитики данных. Хотя программа не имеет встроенной кнопки "Умножить матрицы", она предоставляет несколько мощных инструментов для выполнения этой операции: от стандартной функции МУМНОЖ до использования массивов формул и даже VBA-скриптов. В этой статье мы разберём все актуальные методы с пошаговыми инструкциями, нюансами и типичными ошибками.
Важно понимать, что умножение матриц отличается от поэлементного умножения: здесь каждое значение результирующей матрицы вычисляется как сумма произведений элементов строки первой матрицы и столбца второй. Например, для матриц 2×3 и 3×2 результат будет 2×2. Если вы никогда не работали с матричными операциями, рекомендуем сначала ознакомиться с основами в конце статьи.
1. Способ: функция МУМНОЖ (для Excel 2019 и старше)
Самый простой метод — использовать встроенную функцию МУМНОЖ (англ. MMULT). Она доступна во всех версиях Excel начиная с 2007 года, но в новых редакциях (2019+) работает стабильнее и поддерживает динамические массивы.
Инструкция:
- 📌 Выделите область для результата (количество строк = строкам 1-й матрицы, столбцов = столбцам 2-й).
- 📝 Введите формулу:
=МУМНОЖ(массив1; массив2), гдемассив1имассив2— диапазоны ячеек с матрицами. - ⌨️ Нажмите
Ctrl+Shift+Enter(для старых версий) или простоEnter(для Excel 365).
Пример: если первая матрица в A1:C2, а вторая в E1:F3, формула будет =МУМНОЖ(A1:C2; E1:F3). Результат автоматически заполнит диапазон 2×2.
⚠️ Внимание: Если количество столбцов первой матрицы не равно количеству строк второй, Excel вернёт ошибку #ЗНАЧ!. Проверьте размерности заранее.
2. Способ: массивы формул (для старых версий Excel)
В Excel 2016 и более ранних версиях функция МУМНОЖ требует ввода как формула массива. Это означает, что после ввода нужно нажать Ctrl+Shift+Enter, а не просто Enter.
Пошаговый алгоритм:
- Выделите диапазон для результата (например,
G1:H2для матриц 2×3 и 3×2). - Введите формулу:
=МУМНОЖ(A1:C2; E1:F3). - Завершите ввод комбинацией
Ctrl+Shift+Enter.
Формула отобразится в фигурных скобках {...}, что подтверждает корректный ввод массива. Изменять отдельные ячейки результата нельзя — только всю формулу целиком.
Почему не работает Ctrl+Shift+Enter?
Если комбинация не срабатывает, проверьте:
1. Выделен ли правильный диапазон результата (размер должен совпадать с ожидаемой матрицей).
2. Нет ли в ячейках результата других данных (они должны быть пустыми).
3. Не используется ли Excel Online — там массивы не поддерживаются.
3. Способ: ручное умножение с функцией СУММПРОИЗВ
Если вам нужно понять как именно вычисляется произведение матриц, используйте функцию СУММПРОИЗВ (англ. SUMPRODUCT). Она позволяет вручную умножить строку на столбец и просуммировать результаты.
Пример для ячейки G1 (первый элемент результирующей матрицы):
=СУММПРОИЗВ(A1:C1; E1:E3)
Здесь A1:C1 — первая строка первой матрицы, а E1:E3 — первый столбец второй матрицы. Скопируйте формулу на остальные ячейки, корректируя диапазоны.
| Матрица 1 (A) | × | Матрица 2 (B) | = | Результат (C) |
|---|---|---|---|---|
| [1 2 3] | × | [4 7] | = | [32 50] |
| [4 5 6] | [5 8] | [77 122] | ||
| [6 9] |
В этом примере элемент C11 (32) вычисляется как 1×4 + 2×5 + 3×6.
4. Способ: умножение матриц через Power Query
Для обработки больших матриц (100×100 и более) удобно использовать Power Query — инструмент ETL (извлечение, преобразование, загрузка) в Excel. Он позволяет умножать матрицы без формул, что ускоряет вычисления.
Алгоритм:
- 📊 Преобразуйте обе матрицы в таблицы (
Ctrl+T). - 🔄 Перейдите на вкладку
Данные → Получить данные → Из таблицы/диапазона. - 🛠️ В редакторе Power Query используйте
Мердж таблиц(Merge Queries) с операцией умножения. - 📥 Загрузите результат обратно в Excel.
Этот метод требует навыков работы с Power Query, но подходит для обработки данных объёмом более 10 000 ячеек, где стандартные формулы тормозят.
Убедитесь, что матрицы имеют одинаковое количество столбцов/строк
Преобразуйте диапазоны в таблицы (Ctrl+T)
Проверьте отсутствие пустых ячеек
Сохраните файл перед началом работы-->
5. Способ: VBA-скрипт для автоматизации
Если вам нужно умножать матрицы регулярно, напишите макрос на VBA. Это ускорит процесс и позволит обрабатывать динамические данные.
Пример кода для умножения матриц:
Sub MultiplyMatrices()
Dim Matrix1 As Variant, Matrix2 As Variant, Result() As Double
Dim i As Long, j As Long, k As Long
Dim Rows1 As Long, Cols1 As Long, Rows2 As Long, Cols2 As Long
' Задаём диапазоны матриц
Matrix1 = Range("A1:C2").Value
Matrix2 = Range("E1:F3").Value
Rows1 = UBound(Matrix1, 1)
Cols1 = UBound(Matrix1, 2)
Rows2 = UBound(Matrix2, 1)
Cols2 = UBound(Matrix2, 2)
' Проверяем совместимость размеров
If Cols1 <> Rows2 Then
MsgBox "Количество столбцов первой матрицы не равно количеству строк второй!", vbCritical
Exit Sub
End If
' Инициализируем результирующую матрицу
ReDim Result(1 To Rows1, 1 To Cols2)
' Умножение матриц
For i = 1 To Rows1
For j = 1 To Cols2
For k = 1 To Cols1
Result(i, j) = Result(i, j) + Matrix1(i, k) * Matrix2(k, j)
Next k
Next j
Next i
' Выводим результат
Range("G1").Resize(Rows1, Cols2).Value = Result
End Sub
Чтобы использовать этот скрипт:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Запустите макрос через
F5или кнопкуRun.
⚠️ Внимание: Макрос перезапишет данные в диапазоне G1 и далее. Убедитесь, что там нет важной информации, или измените диапазон вывода в коде.
Типичные ошибки и как их избежать
Даже опытные пользователи Excel допускают ошибки при умножении матриц. Вот самые распространённые:
- 🔢 Несовпадение размеров: количество столбцов первой матрицы должно равняться количеству строк второй. Проверяйте это правило перед вычислениями.
- 📉 Округление результатов: Excel может округлять большие числа. Используйте формат ячеек
Числовойс максимальной точностью. - 🔄 Копирование формул: при ручном умножении через
СУММПРОИЗВлегко ошибиться в диапазонах. Фиксируйте их с помощью$(например,$A1:$C1). - 🚫 Пустые ячейки: если в матрице есть пустые ячейки, Excel воспримет их как
0, что исказит результат. Заполняйте все ячейки или используйтеЕСЛИОШИБКА.
Excel не поддерживает умножение матриц размером более 2^20 элементов (около 1 млн ячеек). Для больших вычислений используйте специализированное ПО вроде MATLAB или Python с библиотекой NumPy.
Основы умножения матриц: что нужно знать
Если вы впервые сталкиваетесь с матричными операциями, запомните ключевые правила:
- 📏 Размерность результата: если матрица
Aимеет размерm×n, а матрицаB—n×p, то результатC = A × Bбудет размеромm×p. - 🔄 Некоммутативность:
A × B ≠ B × A(порядок важен!). - 📊 Единичная матрица: умножение любой матрицы на единичную (с единицами на диагонали) даёт исходную матрицу.
Для визуализации процесса представьте, что вы "накладываете" строки первой матрицы на столбцы второй, поэлементно перемножая и суммируя значения. Например:
[a b] [e g] [ae+bf ag+bh]
× [c d] × [f h] = [ce+df cg+dh]
FAQ: Частые вопросы по умножению матриц в Excel
Можно ли умножить матрицы разного размера?
Да, но только если количество столбцов первой матрицы равно количеству строк второй. Например, матрицу 2×3 можно умножить на 3×4, но не на 2×2.
Почему Excel выдаёт ошибку #ЗНАЧ! при умножении?
Эта ошибка появляется в трёх случаях:
- Несовпадение размеров матриц (см. предыдущий вопрос).
- В ячейках содержатся текстовые значения вместо чисел.
- В старых версиях Excel не нажали
Ctrl+Shift+Enterдля массива.
Как умножить матрицу на число (скаляр)?
Используйте простую формулу умножения: =A1*5, где 5 — ваше число. Скопируйте её на весь диапазон матрицы. Или примените функцию ПРОИЗВЕД для диапазона: =ПРОИЗВЕД(A1:C3; 5).
Есть ли альтернативы Excel для работы с матрицами?
Для сложных вычислений лучше использовать:
- Python с библиотекой
NumPy(функцияnp.dot()). - MATLAB или Octave (оператор
*). - Google Sheets (функция
MMULTработает аналогично).
Можно ли транспонировать матрицу перед умножением?
Да, используйте функцию ТРАНСП (англ. TRANSPOSE). Например: =МУМНОЖ(A1:C2; ТРАНСП(E1:G2)). Не забудьте ввести её как формулу массива (Ctrl+Shift+Enter в старых версиях).