Умножение матриц — одна из ключевых операций в линейной алгебре, которая часто применяется в экономике, статистике и инженерных расчётах. Однако в Microsoft Excel эта задача не так очевидна, как сложение или вычитание: здесь нет кнопки "умножить матрицы" на ленте инструментов. Если вы пытались перемножить две таблицы с данными через знак `*` и получили ошибку `#ЗНАЧ!`, эта статья поможет разобраться почему так произошло и как правильно выполнить операцию.
Многие пользователи ошибочно считают, что умножение матриц в Excel сводится к поэлементному перемножению ячеек (так называемое адамарово произведение), но на самом деле это скалярное умножение — совершенно другая операция. Классическое матричное умножение подразумевает суммирование произведений элементов строк первой матрицы на элементы столбцов второй. Именно этот алгоритм реализован в специализированных функциях программы. Далее мы рассмотрим три основных способа: с помощью функции МУМНОЖ, через формулы массива и методом ручного расчёта для небольших матриц.
Перед тем как приступить, убедитесь, что ваши матрицы совместимы для умножения: число столбцов первой матрицы должно равняться числу строк второй. Например, матрицу размером 3×2 можно умножить на матрицу 2×4, но не на 3×3. Это правило вытекает из определения операции и часто становится причиной ошибок у новичков.
1. Метод 1: Функция МУМНОЖ — самый простой способ
Функция МУМНОЖ (или MMULT в английской версии) специально создана для умножения матриц. Она возвращает матрицу произведений двух массивов, если они совместимы по размеру. Синтаксис функции прост:
=МУМНОЖ(массив1; массив2)
где массив1 и массив2 — это диапазоны ячеек с данными.
Рассмотрим пример. Пусть у нас есть две матрицы:
- 📌 Матрица A (2×3): в ячейках
B2:D3 - 📌 Матрица B (3×2): в ячейках
F2:G4
Результирующая матрица будет размером 2×2. Чтобы её получить:
- Выделите диапазон для результата (например,
B6:C7). - Введите формулу
=МУМНОЖ(B2:D3; F2:G4). - Нажмите
Ctrl+Shift+Enter(это формула массива).
Важно! Если забыть нажать Ctrl+Shift+Enter, Excel вернёт только первый элемент результата. В новых версиях (начиная с Excel 365) формулы массива можно вводить без этого сочетания — программа распознаёт их автоматически.
2. Метод 2: Ручное умножение для небольших матриц
Если вам нужно умножить матрицы размером 2×2 или 3×3, можно обойтись без МУМНОЖ, используя стандартные формулы. Этот метод полезен для понимания алгоритма или когда требуется визуализировать промежуточные вычисления.
Допустим, у нас есть две квадратные матрицы 2×2:
| Матрица X | Матрица Y | ||
|---|---|---|---|
| 1 | 2 | 5 | 6 |
| 3 | 4 | 7 | 8 |
Элемент результирующей матрицы на позиции (1,1) рассчитывается как:
=B2*E2 + C2*E3
где B2:C3 — матрица X, а E2:F3 — матрица Y. Аналогично заполняются остальные ячейки:
- 🔢 (1,2):
=B2*F2 + C2*F3 - 🔢 (2,1):
=B3*E2 + C3*E3 - 🔢 (2,2):
=B3*F2 + C3*F3
Такой подход наглядно демонстрирует, как работает матричное умножение, но становится громоздким для матриц крупнее 3×3. Кроме того, он требует аккуратности: ошибка в одной формуле приведёт к неверному результату.
Знак в Excel предназначен для поэлементного умножения (например, умножения каждой ячейки массива на число). Матричное умножение подразумевает суммирование произведений строк на столбцы, что невозможно выразить через простую операцию .Почему нельзя использовать знак * для умножения матриц?
3. Метод 3: Использование функции СУММПРОИЗВ
Функция СУММПРОИЗВ (SUMPRODUCT) часто используется для расчёта скалярного произведения векторов, но с её помощью можно эмулировать и матричное умножение. Этот метод универсален и работает даже в старых версиях Excel.
Алгоритм следующий:
- Создайте пустую матрицу для результата (размером m×n, где m — число строк первой матрицы, n — число столбцов второй).
- Для каждой ячейки результата введите формулу:
=СУММПРОИЗВ(строка_матрицы1; СТОЛБЕЦ(массив2))где
строка_матрицы1— фиксированная строка первой матрицы, аСТОЛБЕЦ(массив2)— соответствующий столбец второй матрицы (можно получить функциейИНДЕКС).
Пример для матриц 2×3 и 3×2:
- 📍 Для элемента (1,1):
=СУММПРОИЗВ(B2:D2; ИНДЕКС(F2:G4;0;1)) - 📍 Для элемента (1,2):
=СУММПРОИЗВ(B2:D2; ИНДЕКС(F2:G4;0;2))
Этот способ гибкий, но требует ручного ввода формул для каждой ячейки результата. Его удобно использовать, если нужно умножить матрицу на вектор или получить только часть результирующей матрицы.
Число столбцов первой матрицы равно числу строк второй|Нет пустых ячеек в исходных данных|Выделен правильный диапазон для результата|Формулы введены как массивы (Ctrl+Shift+Enter для старых версий)-->
4. Типичные ошибки и как их избежать
Даже опытные пользователи Excel иногда сталкиваются с проблемами при умножении матриц. Вот наиболее распространённые ошибки и способы их решения:
⚠️ Внимание: Если после ввода
ввода формулы. Исправьте это, выделив нужное количество ячеек, и повторите ввод.
МУМНОЖ вы видите только одно число вместо матрицы, скорее всего, вы забыли выделить диапазон для результата до
| Ошибка | Причина | Решение |
|---|---|---|
| #ЗНАЧ! | Неверные размеры матриц | Проверьте совместимость: число столбцов первой матрицы ≠ числу строк второй |
| #ССЫЛКА! | Ошибочный диапазон в формуле | Убедитесь, что адреса ячеек указаны корректно (например, B2:D3, а не B2:D4) |
| #ЧИСЛО! | Слишком большие значения | Используйте формат ячеек "Общий" или увеличьте разрядность |
| Только одно значение в результате | Формула не введена как массив | Нажмите Ctrl+Shift+Enter или обновите Excel до 365 |
Ещё одна частая проблема — округление результатов. Excel по умолчанию отображает числа с ограниченной точностью. Если вам нужны точные значения (например, для дальнейших вычислений), установите формат ячеек "Числовой" с большим количеством десятичных знаков или используйте функцию =ОКРУГЛ() для контроля округления.
В матричном умножении порядок операндов имеет значение: A×B ≠ B×A. Если поменять матрицы местами, результат будет другим (или операция станет невозможной).
5. Умножение матриц в Excel Online и Google Sheets
Если вы работаете в веб-версии Excel Online или Google Sheets, алгоритм умножения матриц остаётся тем же, но есть нюансы:
- 🌐 В Excel Online функция
МУМНОЖдоступна, но формулы массива вводятся безCtrl+Shift+Enter— достаточно подтвердить ввод клавишейEnter. - 📊 В Google Sheets используется та же функция
=MMULT, но для корректной работы необходимо выделить диапазон результата до ввода формулы. - ⚡ Обе платформы поддерживают динамические массивы, поэтому результат автоматически "прольётся" на нужное количество ячеек.
Пример для Google Sheets:
=ARRAYFORMULA(MMULT(B2:D3; F2:G4))
Здесь ARRAYFORMULA играет роль аналога Ctrl+Shift+Enter в десктопном Excel.
⚠️ Внимание: В Google Sheets при умножении больших матриц (более 10×10) может возникать задержка в расчётах. Если результат долго не появляется, попробуйте разбить операцию на части или использовать скрипты Google Apps Script.
6. Продвинутые приёмы: умножение с условиями и автоматизация
Для сложных задач стандартных функций может быть недостаточно. Рассмотрим два продвинутых сценария:
1. Умножение с учётом условий
Допустим, вам нужно умножить матрицы, но учитывать только положительные элементы. Для этого комбинируем МУМНОЖ с ЕСЛИ:
=МУМНОЖ(
ЕСЛИ(B2:D3>0; B2:D3; 0);
ЕСЛИ(F2:G4>0; F2:G4; 0)
)
Внимание: это формула массива — не забудьте подтвердить её правильно!
2. Автоматизация через VBA
Если вам часто приходится умножать матрицы, можно создать пользовательскую функцию на VBA:
Function MatrixMultiply(rng1 As Range, rng2 As Range) As Variant
MatrixMultiply = Application.WorksheetFunction.MMult(rng1, rng2)
End Function
После добавления этого кода в редактор VBA (Alt+F11) вы сможете использовать функцию =MatrixMultiply(B2:D3; F2:G4) как обычную.
Для работы с очень большими матрицами (сотни строк/столбцов) рассмотрите возможность использования Power Query или подключения Python через Excel (функция =PY() в бета-версиях).
FAQ: Частые вопросы по умножению матриц в Excel
Можно ли умножить матрицу на число в Excel?
Да, для этого используйте стандартное умножение. Например, чтобы умножить матрицу в диапазоне A1:B2 на число 5, введите в соседней ячейке формулу =A1*5 и растяните её на весь диапазон. Или используйте формулу массива: =A1:B2*5 (в Excel 365 она сработает автоматически).
Почему результат умножения матриц получается с ошибкой #ЧИСЛО!?
Эта ошибка возникает, если:
- 🔹 Результат вычислений превышает максимальное число в Excel (~1.8×10308).
- 🔹 В исходных данных есть текст или пустые ячейки (их Excel интерпретирует как 0).
- 🔹 Используется несовместимая версия функции (например,
МУМНОЖв Excel 2003, где её нет).
Проверьте формат ячеек (должен быть "Общий" или "Числовой") и очистите данные от нечисловых значений.
Как умножить три матрицы подряд: A × B × C?
Используйте вложенные функции МУМНОЖ:
=МУМНОЖ(МУМНОЖ(A1:B2; D1:F2); G1:H3)
Важно соблюдать порядок операций (умножение ассоциативно, но размеры матриц должны совпадать на каждом этапе). Например, если A размером 2×3, B — 3×2, а C — 2×4, то сначала умножаем A×B (результат 2×2), затем результат на C (итог 2×4).
Есть ли альтернатива МУМНОЖ для старых версий Excel?
Да, в Excel 2003 и более ранних версиях функции МУМНОЖ нет. Альтернативы:
- 📋 Используйте
СУММПРОИЗВдля ручного расчёта каждого элемента (как описано в Методе 3). - 📋 Напишите пользовательскую функцию на VBA (пример кода есть в разделе 6).
- 📋 Установите надстройку Analysis ToolPak (если доступна) — она добавляет поддержку матричных операций.
Можно ли транспонировать матрицу перед умножением?
Да, для этого используйте функцию =ТРАНСП(). Например, чтобы умножить матрицу A на транспонированную матрицу B, введите:
=МУМНОЖ(A1:B2; ТРАНСП(D1:F2))
Обратите внимание: транспонирование меняет размеры матрицы (строки становятся столбцами и наоборот), поэтому проверьте совместимость перед умножением.