Умножение матриц в Microsoft Excel — задача, с которой сталкиваются студенты, инженеры и аналитики данных. Хотя программа не имеет встроенной кнопки "умножить матрицы", эту операцию легко выполнить с помощью специальных функций. Главное — понимать основные правила матричного умножения: количество столбцов первой матрицы должно совпадать с количеством строк второй, а результат будет иметь размерность "строки первой × столбцы второй".
Многие пользователи ошибочно пытаются перемножить матрицы через стандартное умножение ячеек (*), но это приводит к неверным результатам. В этой статье мы разберём три рабочих метода: через функцию МУМНОЖ (для старых версий), динамические массивы в Excel 365 и ручной ввод формул. Особое внимание уделим типичным ошибкам и нюансам работы с большими массивами данных.
Если вы никогда не работали с матрицами, не переживайте — мы начнём с азов. Для опытных пользователей приготовили продвинутые приёмы, включая умножение с условиями и обработку неквадратных матриц. Важно: в Excel 2019 и новее синтаксис функций для матриц изменился — мы покажем оба варианта.
Что такое умножение матриц и почему нельзя использовать знак "*"
Умножение матриц — это не поэлементная операция, а сложный алгоритм, где каждый элемент результирующей матрицы вычисляется как сумма произведений соответствующих элементов строки первой матрицы и столбца второй. Например, для матриц 2×3 и 3×2 результат будет 2×2.
Вот почему простой знак * не работает:
- 🔢 Он умножает только две ячейки, а не целые массивы
- 📊 Не учитывает правила размерности матриц
- ❌ Приводит к ошибке
#ЗНАЧ!при попытке умножить диапазоны
Для корректного умножения в Excel используются специальные функции, которые "понимают" матричную алгебру. В старых версиях это МУМНОЖ, в новых — MMULT с поддержкой динамических массивов.
Метод 1: Функция МУМНОЖ (для Excel 2016 и старше)
Это классический способ, работающий во всех версиях Excel до 2019 года. Функция МУМНОЖ (или MMULT в английской версии) требует строгого соблюдения размерностей матриц.
Алгоритм действий:
- Выделите диапазон для результата (количество строк = первой матрице, столбцов = второй)
- Введите формулу
=МУМНОЖ(диапазон1; диапазон2) - Нажмите
Ctrl+Shift+Enter(это создаст формулу массива)
Пример для матриц 2×3 и 3×2:
=МУМНОЖ(A1:C2; E1:F3)
Проверить размерности матриц (столбцы первой = строкам второй)
Выделить пустой диапазон для результата
Убедиться, что в ячейках нет текста (только числа)
Использовать абсолютные ссылки ($A$1) если матрицы будут перемещаться-->
⚠️ Внимание: Если забыть нажать Ctrl+Shift+Enter, формула вернёт только первый элемент результата! В новых версиях Excel это требование отменили, но в 2016 и старше оно обязательно.
| Первая матрица (A) | Вторая матрица (B) | Результат (A×B) |
|---|---|---|
| 1 2 3 4 5 6 | 7 8 9 10 11 12 | 58 64 139 154 |
| 0 1 1 0 | 5 6 7 8 | 7 8 5 6 |
Метод 2: Динамические массивы в Excel 365 (самый простой способ)
В Excel 365 и Excel 2021 появилась революционная функция — динамические массивы. Теперь не нужно выделять диапазон заранее и нажимать Ctrl+Shift+Enter. Достаточно ввести формулу в одну ячейку, и результат "прольётся" на нужное количество ячеек автоматически.
Пример для тех же матриц:
=MMULT(A1:C2, E1:F3)
Преимущества этого метода:
- 🚀 Автоматическое определение размера результата
- 🔄 Динамическое обновление при изменении исходных данных
- 📱 Работает в мобильной версии Excel
Ограничение: в одной книге не могут одновременно использоваться формулы массива старого типа (Ctrl+Shift+Enter) и новые динамические массивы. При попытке смешать их Excel выдаст предупреждение.
Метод 3: Ручной ввод формул (для понимающих матричную алгебру)
Этот способ подходит для небольших матриц (2×2, 3×3) или когда нужно понять сам процесс умножения. Здесь мы вручную пишем формулу для каждого элемента результирующей матрицы.
Для матриц 2×2 формула первого элемента будет:
=A1*E1 + B1*E2
Второго элемента первой строки:
=A1*F1 + B1*F2
Такой подход помогает:
- 🧠 Лучше понять принцип умножения матриц
- 🔍 Отладить расчёты при ошибках
- ⚙️ Создать кастомные формулы с дополнительными условиями
⚠️ Внимание: При ручном методе легко ошибиться в индексах ячеек. Всегда проверяйте формулы для крайних элементов матрицы (первого и последнего), чтобы убедиться в правильности шаблона.
Как проверить правильность ручного умножения?
Сравните результат с автоматическим методом (МУМНОЖ/MMULT).
Используйте онлайн-калькуляторы матриц для контрольной проверки.
Помните, что результат A×B не равен B×A (матричное умножение не коммутативно).
Типичные ошибки и как их исправить
Даже опытные пользователи сталкиваются с проблемами при умножении матриц. Вот самые распространённые ошибки и их решения:
| Ошибка | Причина | Решение |
|---|---|---|
#ЗНАЧ! | Несовпадение размерностей | Проверить количество столбцов первой матрицы и строк второй |
#ССЫЛКА! | Неверный диапазон результата | Выделить правильный диапазон перед вводом формулы |
| Один результат вместо матрицы | Забыли Ctrl+Shift+Enter (Excel 2016) | Повторить ввод формулы с правильной комбинацией клавиш |
#ЧИСЛО! | Текст в ячейках вместо чисел | Проверить формат ячеек (должен быть "Общий" или "Числовой") |
Особое внимание уделите формату ячеек: если в исходных матрицах есть пустые ячейки или текст, Excel будет воспринимать их как ноль, что может исказить результат. Для надёжности используйте функцию ЕЧИСЛО для проверки данных перед умножением.
Продвинутые приёмы: умножение с условиями и большие матрицы
Для сложных задач стандартного умножения матриц может быть недостаточно. Рассмотрим несколько продвинутых сценариев:
1. Умножение с игнорированием нулевых значений:
=MMULT(IF(A1:C2<>0, A1:C2, 0), IF(E1:F3<>0, E1:F3, 0))
Эта формула заменяет все нули на 0 перед умножением (полезно для разреженных матриц).
2. Нормализация результата:
- 📉 Делите результат на максимальное значение:
=MMULT(A1:C2, E1:F3)/MAX(MMULT(A1:C2, E1:F3)) - 📈 Приводите к диапазону 0-1:
=(MMULT(A1:C2, E1:F3)-MIN(MMULT(...)))/(MAX(MMULT(...))-MIN(MMULT(...)))
3. Работа с большими матрицами (100×100 и более):
- 🐢 Разбивайте на блоки по 50×50 для ускорения расчётов
- 💾 Сохраняйте промежуточные результаты в отдельные листы
- ⚡ Используйте Power Query для предварительной обработки данных
Альтернативные способы: надстройки и VBA
Если вам часто приходится работать с матрицами, стоит рассмотреть дополнительные инструменты:
1. Надстройка "Matrix Functions":
- 📥 Бесплатная надстройка с расширенными матричными функциями
- 🔧 Включает инверсию, транспонирование, вычисление определителя
- 🌐 Скачать можно на официальном сайте Microsoft AppSource
2. Макросы VBA для автоматизации:
Function MatrixMultiply(rng1 As Range, rng2 As Range) As Variant
' Код для умножения матриц через VBA
' Требует знаний программирования
End Function
3. Power Query (Get & Transform):
- 🔄 Подходит для умножения матриц из разных источников (SQL, CSV)
- 📊 Позволяет комбинировать умножение с другими преобразованиями
- 📎 Результат можно выгрузить обратно в Excel или в Power Pivot
Для большинства задач стандартных функций Excel достаточно, но в специфических случаях (например, умножение сотен матриц в цикле) эти инструменты могут сэкономить часы работы.
FAQ: Ответы на частые вопросы
Можно ли умножить матрицу на вектор?
Да, вектор — это частный случай матрицы (одна строка или один столбец). Используйте те же функции МУМНОЖ или MMULT, соблюдая правило размерностей. Например, матрица 3×3 на вектор-столбец 3×1 даст вектор-столбец 3×1.
Почему результат умножения не симметричный?
Матричное умножение не коммутативно — A×B ≠ B×A. Это нормально и соответствует математическим правилам. Симметричный результат получается только при умножении некоторых специальных матриц (например, диагональных).
Как умножить более двух матриц?
Используйте вложенные функции: =MMULT(MMULT(A1:C2, E1:F3), H1:I2). Порядок важен! Для четырёх матриц: =MMULT(MMULT(MMULT(A,B),C),D). В Excel 2016 и старше не забудьте Ctrl+Shift+Enter.
Можно ли умножать матрицы с текстом?
Нет, функция МУМНОЖ работает только с числовыми данными. Текстовые значения (включая пустые ячейки) приводят к ошибке. Предварительно очистите данные функцией ЕЧИСЛО или замените текст на ноли.
Как проверить правильность умножения?
Сравните результат с ручным расчётом хотя бы для первого элемента. Например, для матриц выше: (1×7 + 2×9 + 3×11) = 58 — совпадает с первым элементом результата. Также можно использовать онлайн-калькуляторы (Wolfram Alpha, Symbolab).