Умножение матриц — одна из ключевых операций в линейной алгебре, которая часто применяется в экономике, статистике, инженерных расчётах и машинном обучении. Однако в отличие от простого перемножения чисел, умножение матриц имеет свои правила: количество столбцов первой матрицы должно совпадать с количеством строк второй. В Microsoft Excel эта операция реализована через специальные функции, но многие пользователи сталкиваются с ошибками из-за неверного синтаксиса или неправильной подготовки данных.
Если вам нужно быстро перемножить две матрицы без ручных вычислений, Excel предлагает несколько способов: от классической функции МУМНОЖ до динамических массивов в новых версиях программы. В этой статье мы разберём все методы — от базовых до продвинутых, — а также покажем, как избежать типичных ошибок и автоматизировать процесс для больших наборов данных.
Особое внимание уделим требованиям к размерности матриц: если у вас матрица А размером 3×4, а матрица В — 4×2, их можно перемножить (результат будет 3×2). Но если размеры не совпадают (например, 3×3 и 4×4), Excel выдаст ошибку #ЗНАЧ!. Проверьте это перед началом расчётов!
1. Подготовка данных: как правильно ввести матрицы в Excel
Прежде чем умножать матрицы, их нужно корректно разместить в таблице. Каждая матрица должна занимать отдельный прямоугольный диапазон ячеек, где строки и столбцы соответствуют её размерности. Например, матрица 2×3 займёт 2 строки и 3 столбца.
Вот как это сделать без ошибок:
- 📌 Введите первую матрицу (
А) в диапазон, например,A1:C2(2 строки × 3 столбца). - 📌 Вторую матрицу (
В) разместите ниже или правее, например, вA4:B6(3 строки × 2 столбца). Обратите внимание: количество столбцовА(3) должно совпадать с количеством строкВ(3). - 📌 Оставьте пустые ячейки вокруг матриц, чтобы результат умножения не перекрывался с исходными данными.
Если матрицы имеют одинаковую размерность (например, обе 3×3), их тоже можно перемножить — результат будет той же размерности. Но если размеры не совместимы, Excel не сможет выполнить операцию.
2. Метод 1: функция МУМНОЖ для старых версий Excel
В Excel 2019 и более ранних версиях для умножения матриц используется функция МУМНОЖ (англ. MMULT). Это массивная функция, поэтому её нужно вводить особым способом — с нажатием Ctrl+Shift+Enter.
Пошаговая инструкция:
- Выделите диапазон для результата. Его размер должен соответствовать количеству строк первой матрицы и столбцов второй. Например, если
А—2×3, аВ—3×2, результат будет2×2(выделите 2 строки и 2 столбца). - Введите формулу:
=МУМНОЖ(A1:C2; A4:B6)(замените диапазоны на свои). - Нажмите
Ctrl+Shift+Enter. Формула автоматически обернётся в фигурные скобки:{=МУМНОЖ(...)}.
Если вы забудете нажать Ctrl+Shift+Enter, Excel покажет только первый элемент результата, а остальные ячейки останутся пустыми. Это самая распространённая ошибка при работе с МУМНОЖ.
Выделили правильный диапазон для результата|
Количество столбцов первой матрицы = количеству строк второй|
Использовали ; (точку с запятой) как разделитель аргументов|
Нажали Ctrl+Shift+Enter для массива-->
3. Метод 2: динамические массивы в Excel 365 и 2021
В новых версиях Excel 365 и Excel 2021 функция МУМНОЖ работает иначе — она автоматически "проливается" на соседние ячейки, возвращая полный результат без необходимости нажимать Ctrl+Shift+Enter. Это называется динамическими массивами.
Как это работает:
- 🔹 Введите формулу
=МУМНОЖ(A1:C2; A4:B6)в одну ячейку (например,E1). - 🔹 Excel автоматически заполнит соседние ячейки результатами (в данном случае — диапазон
E1:F2). - 🔹 Если результат не отображается, проверьте настройки: перейдите в
Файл → Параметры → Формулыи убедитесь, что включён параметрДинамические массивы.
В Excel 365 функция МУМНОЖ поддерживает матрицы размером до 32767×32767, тогда как в старых версиях лимит — 8192×8192. Это важно для работы с большими наборами данных, например, в нейронных сетях или финансовых моделях.
4. Метод 3: умножение матриц через Power Query (для больших данных)
Если вам нужно умножить матрицы размером более 1000×1000, стандартные функции Excel могут работать медленно или выдавать ошибки. В этом случае поможет Power Query — инструмент для обработки больших данных.
Алгоритм действий:
- Импортируйте обе матрицы в Power Query через
Данные → Получить данные → Из таблицы/диапазона. - В редакторе Power Query создайте
Индексный столбецдля каждой матрицы (вкладкаДобавить столбец). - Используйте
Слияние запросов(вкладкаГлавная) с типом объединенияЛевое внешнее. - Добавьте пользовательский столбец с формулой умножения соответствующих элементов.
- Сгруппируйте данные по индексам первой матрицы и просуммируйте результаты.
Этот метод требует знания Power Query, но он значительно быстрее для матриц размером свыше 5000×5000. Подробнее о синтаксисе формул в Power Query читайте в FAQ в конце статьи.
let // Загрузка первой матрицы (A) Source_A = Excel.CurrentWorkbook(){[Name="Matrix_A"]}[Content], #"Добавлен индекс" = Table.AddIndexColumn(Source_A, "Index_A", 0, 1, Int64.Type), // Загрузка второй матрицы (B) и транспонирование Source_B = Excel.CurrentWorkbook(){[Name="Matrix_B"]}[Content], #"Транспонировано" = Table.Transpose(Source_B), #"Добавлен индекс" = Table.AddIndexColumn(#"Транспонировано", "Index_B", 0, 1, Int64.Type), // Слияние и умножение Merged = Table.NestedJoin(#"Добавлен индекс", "Index_A", #"Добавлен индекс", "Index_B", "NewColumn", JoinKind.LeftOuter), #"Развёрнуто" = Table.ExpandTableColumn(Merged, "NewColumn", {"Column1", "Column2"}, {"B_Column1", "B_Column2"}), #"Добавлено умножение" = Table.AddColumn(#"Развёрнуто", "Product", each [Column1] [B_Column1] + [Column2] [B_Column2]) in #"Добавлено умножение"Пример кода для Power Query
5. Проверка результата: как убедиться в правильности умножения
Ошибки при умножении матриц в Excel часто остаются незамеченными, особенно если матрицы большие. Вот 3 способа проверки:
1️⃣ Ручной расчёт контрольного элемента:
Выберите один элемент результирующей матрицы (например, C11) и проверьте его вручную по формуле:
C11 = A11*B11 + A12*B21 + A13*B31 + ...
Если значения совпадают, остальные элементы, скорее всего, тоже верны.
2️⃣ Сравнение с онлайн-калькулятором:
Скопируйте матрицы в бесплатный онлайн-калькулятор (например, MatrixCalc) и сравните результаты.
3️⃣ Использование функции МОПРЕД:
Для квадратных матриц проверьте детерминант (функция МОПРЕД). Если детерминант произведения матриц (МОПРЕД(МУМНОЖ(A; B))) равен произведению детерминантов (МОПРЕД(A)*МОПРЕД(B)), умножение выполнено корректно.
| Метод проверки | Применимость | Точность |
|---|---|---|
| Ручной расчёт элемента | Любые матрицы | Высокая |
| Онлайн-калькулятор | Матрицы до 20×20 | Средняя (зависит от сервиса) |
| Функция МОПРЕД | Только квадратные матрицы | Высокая |
| Сравнение с Python (NumPy) | Любые матрицы | Максимальная |
1) Совпадают ли размеры матриц для умножения.
2) Нет ли текстовых значений в ячейках (Excel воспринимает их как 0).
3) Правильно ли указаны диапазоны в формуле.-->
6. Типичные ошибки и как их исправить
Даже опытные пользователи Excel сталкиваются с ошибками при умножении матриц. Вот самые распространённые из них и способы их устранения:
⚠️ Внимание: Если после вводаМУМНОЖрезультат отображается только в одной ячейке, вы забыли нажатьCtrl+Shift+Enter(для Excel 2019 и старше) или не обновляли Excel 365 до последней версии.
- 🚨 Ошибка #ЗНАЧ!:
- Причина: Несовпадение размеров матриц (количество столбцов первой ≠ количеству строк второй).
- Решение: Проверьте размеры с помощью функции
СТРОКА()иСТОЛБЕЦ().
- 🚨 Ошибка #ССЫЛКА!:
- Причина: Диапазоны в формуле перекрываются с областью результата.
- Решение: Переместите матрицы или результат в другой диапазон.
- 🚨 Ошибка #ЧИСЛО!:
- Причина: Слишком большие числа (переполнение).
- Решение: Уменьшите масштаб данных или используйте Power Query.
Ещё одна частая проблема — невидимые символы в ячейках (например, пробелы или неразрывные пробелы). Они могут приводить к тому, что Excel воспринимает числа как текст. Чтобы это исправить, используйте функцию ЗНАЧЕН() или ПЕЧСИМВ() для очистки данных.
7. Альтернативные способы: VBA и Python в Excel
Если вам нужно умножать матрицы регулярно или работать с очень большими данными, стоит рассмотреть автоматизацию через VBA или интеграцию с Python.
Способ 1: Макрос на VBA
Скопируйте этот код в редактор VBA (Alt+F11), чтобы создать функцию для умножения матриц:
Function MatrixMultiply(Rng1 As Range, Rng2 As Range) As Variant
Dim i As Integer, j As Integer, k As Integer
Dim Result() As Double
Dim Rows1 As Integer, Cols1 As Integer, Rows2 As Integer, Cols2 As Integer
Rows1 = Rng1.Rows.Count
Cols1 = Rng1.Columns.Count
Rows2 = Rng2.Rows.Count
Cols2 = Rng2.Columns.Count
If Cols1 <> Rows2 Then
MatrixMultiply = "Ошибка: несовместимые размеры"
Exit Function
End If
ReDim Result(1 To Rows1, 1 To Cols2)
For i = 1 To Rows1
For j = 1 To Cols2
Result(i, j) = 0
For k = 1 To Cols1
Result(i, j) = Result(i, j) + Rng1.Cells(i, k).Value * Rng2.Cells(k, j).Value
Next k
Next j
Next i
MatrixMultiply = Result
End Function
Теперь в Excel можно использовать =MatrixMultiply(A1:C2; E1:F3) как обычную функцию.
Способ 2: Python через Excel
Если у вас установлен надстройка PyXLL или xlwings, вы можете использовать библиотеку numpy для умножения матриц:
import numpy as np
def matrix_multiply(a, b):
return np.matmul(a, b).tolist()
Этот метод в десятки раз быстрее для матриц размером свыше 1000×1000.
FAQ: Ответы на частые вопросы
Можно ли умножить матрицу на вектор в Excel?
Да, вектор — это частный случай матрицы (например, вектор-столбец 3×1 или вектор-строка 1×3). Используйте ту же функцию МУМНОЖ, соблюдая правило размерностей. Например, если матрица A размером 2×3, а вектор B — 3×1, результат будет 2×1.
Почему результат умножения матриц в Excel отличается от ручного расчёта?
Наиболее вероятные причины:
- 🔸 В ячейках есть скрытые символы (пробелы, переносы строк). Используйте
ПЕЧСИМВ()для очистки. - 🔸 Несовпадение размерностей матриц (Excel не выдаёт ошибку, но результат неверный).
- 🔸 Округление чисел. Проверьте формат ячеек (установите
Числовойс 4–5 знаками после запятой).
Как умножить матрицу на число (скаляр) в Excel?
Для этого не нужна специальная функция — просто умножьте каждый элемент матрицы на число. Например, если матрица в A1:C2, а число в E1, используйте формулу массива:
=A1:C2 * $E$1
и нажмите Ctrl+Shift+Enter. В Excel 365 достаточно ввести формулу в одну ячейку — она автоматически "прольётся" на весь диапазон.
Можно ли умножить более двух матриц за одну операцию?
Да, функция МУМНОЖ поддерживает последовательное умножение. Например:
=МУМНОЖ(МУМНОЖ(A1:C2; E1:F3); H1:I2)
Здесь сначала умножаются A1:C2 и E1:F3, а затем результат умножается на H1:I2. Не забывайте про совместимость размерностей на каждом этапе!
Как транслировать матрицу в Excel перед умножением?
Используйте функцию ТРАНСП() (англ. TRANSPOSE). Например, если матрица A в A1:C2, её транспонированная версия будет:
=ТРАНСП(A1:C2)
Введите эту формулу как массив (Ctrl+Shift+Enter в старых версиях). В Excel 365 транслированная матрица отобразится автоматически.