При попытке перемножить матрицы в Excel через стандартные функции многие сталкиваются с ошибкой #ЗНАЧ! — это означает, что количество столбцов первой матрицы не совпадает с количеством строк второй. Чтобы избежать ошибок, используйте функцию МУМНОЖ (или MMULT в английской версии) с обязательным соблюдением правила размерностей: если матрица A имеет размер m×n, а матрица B — n×k, то результат будет размером m×k. Для трёх матриц сначала умножьте первые две, затем результат — на третью.
В этой статье разберём не только базовый синтаксис, но и нюансы работы с формулами массива, динамическими диапазонами в новых версиях Excel 365, а также типичные ошибки при умножении трёх матриц. Все примеры сопровождаются скриншотами и проверочными таблицами для самоконтроля.
Правила умножения матриц: почему размерность важнее формул
Умножение матриц — это не поэлементная операция, как сложение или вычитание. Здесь каждый элемент результирующей матрицы вычисляется как скалярное произведение соответствующей строки первой матрицы и столбца второй. Например, для матриц A (2×3) и B (3×2) элемент C11 результата будет равен:
=A11*B11 + A12*B21 + A13*B31
Если количество столбцов первой матрицы (n) не равно количеству строк второй (m), Excel вернёт ошибку. Проверьте размерности заранее:
- 🔢 Для двух матриц: кол-во столбцов A = кол-ву строк B.
- 🔄 Для трёх матриц: сначала проверьте совместимость A×B, затем — результат с C.
- ⚠️ Если матрицы квадратные (n×n), порядок не важен, но результат A×B и B×A будет разным.
| Матрица | Размерность | Пример | Совместимость с |
|---|---|---|---|
| A | 2×3 | {{1,2,3},{4,5,6}} | 3×k |
| B | 3×2 | {{7,8},{9,10},{11,12}} | 2×k или m×3 |
| C | 2×4 | {{13,14,15,16},{17,18,19,20}} | 4×k или m×2 |
Умножение двух матриц: функция МУМНОЖ и формулы массива
В Excel для умножения матриц используется функция МУМНОЖ(массив1; массив2). Особенность: это формула массива, поэтому в старых версиях (до 2019 года) её нужно вводить через Ctrl+Shift+Enter. В Excel 365 и Excel 2021 достаточно нажать Enter — формула автоматически "прольётся" на нужный диапазон.
Пошаговая инструкция:
- Выделите пустой диапазон размером m×k (где m — строки первой матрицы, k — столбцы второй).
- Введите
=МУМНОЖ(A1:C2; E1:F3), гдеA1:C2— первая матрица (2×3),E1:F3— вторая (3×2). - Завершите ввод:
- В Excel 2016/2019:
Ctrl+Shift+Enter(появятся фигурные скобки{...}). - В Excel 365: просто
Enter.
- В Excel 2016/2019:
1. Проверьте размерности матриц (кол-во столбцов A = кол-ву строк B).
2. Выделите диапазон для результата (строки A × столбцы B).
3. Используйте абсолютные ссылки (с $), если матрицы могут сдвинуться.
4. В старых версиях Excel не забывайте про Ctrl+Shift+Enter.
-->
Пример для матриц:
А = |1 2 3| B = |7 8|
|4 5 6| |9 10|
|11 12|
Результат C = A×B:
C = |58 64|
|139 154|
Почему результат не совпадает с ручным расчётом?
Если вы вручную перемножили матрицы и получили другие числа, проверьте:
1. Порядок матриц (A×B ≠ B×A).
2. Наличие скрытых символов или текста в ячейках (Excel игнорирует текст при вычислениях).
3. Формат ячеек (должен быть "Общий" или "Числовой").
Умножение трёх матриц: последовательный подход
Для умножения трёх матриц A×B×C сначала перемножьте первые две (A×B), затем результат умножьте на третью ((A×B)×C). Важно: порядок операций влияет на результат из-за неассоциативности матричного умножения. Используйте промежуточные диапазоны или вложенные функции.
Способ 1: С промежуточным результатом (рекомендуется для наглядности):
- Умножьте A×B в диапазоне
D1:E2(например,=МУМНОЖ(A1:C2; F1:G3)). - Умножьте результат на C в новом диапазоне:
=МУМНОЖ(D1:E2; I1:L2).
Способ 2: Вложенная функция (компактно, но сложно отлаживать):
=МУМНОЖ(МУМНОЖ(A1:C2; F1:G3); I1:L2)
С промежуточными результатами|Вложенной функцией|Не знаю, что выбрать|Использую VBA-->
⚠️ Внимание: При вложенном умножении Excel может выдавать ошибку #ЗНАЧ!, если размерности промежуточных результатов не совпадают. Всегда проверяйте размерность (A×B) перед умножением на C.
Типичные ошибки и как их исправить
Ошибка #ЗНАЧ! — самая частая проблема. Причины и решения:
- 🔴 Несовпадение размерностей: Убедитесь, что количество столбцов первой матрицы равно количеству строк второй. Используйте функцию
СТРОКА()иСТОЛБЕЦ()для проверки:=СТРОКА(A1:C2) → вернёт 2 (строки)=СТОЛБЕЦ(F1:G3) → вернёт 2 (столбца), но нужно 3!
- 🔴 Текст в ячейках: Преобразуйте текстовые числа в числовой формат с помощью
ЗНАЧЕН():=МУМНОЖ(ЗНАЧЕН(A1:C2); ЗНАЧЕН(F1:G3)) - 🔴 Неправильный ввод формулы массива: В старых версиях Excel забыли нажать
Ctrl+Shift+Enter. В новых версиях проверьте, не блокирует ли "проливку" соседняя таблица.
Ошибка #ССЫЛКА! возникает, если диапазоны матриц пересекаются с диапазоном результата. Решение: размещайте матрицы и результат на разных листах или с запасом по строкам/столбцам.
Динамические массивы в Excel 365: упрощённое умножение
В Excel 365 и Excel 2021 функции МУМНОЖ и MMULT возвращают динамические массивы — результат автоматически "проливается" на нужный диапазон. Это упрощает работу с большими матрицами, но требует аккуратности:
- 📌 Если справа или снизу от формулы есть данные, Excel выдаст ошибку
#ЗАПРЕЩ!(перекрытие диапазонов). - 📌 Для приостановки "проливки" используйте
@перед функцией (например,=@МУМНОЖ(...)), но это вернёт только первый элемент результата. - 📌 Чтобы ограничить вывод, оберните функцию в
ИНДЕКС:
— вернёт только элемент [1,1].=ИНДЕКС(МУМНОЖ(A1:C2; E1:F3); 1; 1)
Пример динамического умножения трёх матриц:
=МУМНОЖ(МУМНОЖ(A1:C2; E1:F3); H1:I2)
Результат автоматически займёт диапазон 2×2 (если A — 2×3, B — 3×2, C — 2×2).
Проверка результата: как убедиться в правильности умножения
Чтобы проверить корректность умножения, используйте один из методов:
- Ручной расчёт: Вычислите 2–3 элемента результата вручную (например, C11 и C22) и сравните с Excel.
- Обратная операция: Если матрицы квадратные и невырожденные, умножьте результат на обратную матрицу (
=МОБР()) — должна получиться исходная матрица. - Сравнение с онлайн-калькулятором: Используйте сервисы вроде MatrixCalc для проверки.
Пример проверки для матриц 2×2:
А = |1 2| B = |3 4|
|5 6| |7 8|
A×B = |19 22|
|43 50|
Проверка: (A×B)×B⁻¹ = A (если B⁻¹ существует).
⚠️ Внимание: Для неквадратных матриц обратной матрицы не существует. В этом случае используйте псевдообратную матрицу (=МОБР.ПСЕВДО() в Excel 365), но результат будет приближённым.
Умножение матриц с помощью Power Query (для больших данных)
Если матрицы содержат тысячи строк/столбцов, стандартные функции Excel могут тормозить. В этом случае используйте Power Query:
- Импортируйте матрицы как таблицы (
Данные → Из таблицы/диапазона). - В Power Query добавьте пользовательский столбец с формулой умножения (например, для строки A и столбца B):
= List.Sum(List.Transform({[A1], [A2], [A3]}, (x, i) => x * B[i])) - Разверните результат и загрузите обратно в Excel.
Преимущества метода:
- 🚀 Работает с матрицами размером >10 000×10 000 (ограничение стандартных функций).
- 🔄 Позволяет автоматизировать умножение при обновлении данных.
- 📊 Можно интегрировать с другими источниками (SQL, CSV).
FAQ: Частые вопросы по умножению матриц в Excel
Можно ли умножить матрицу на вектор-столбец?
Да, если количество столбцов матрицы равно количеству строк вектора (то есть вектор-столбец размером n×1 можно умножить на матрицу m×n). Результат будет вектор-столбцом m×1. Пример:
=МУМНОЖ(A1:C2; F1:F3)
где A1:C2 — матрица 2×3, а F1:F3 — вектор 3×1.
Почему результат умножения не симметричен (A×B ≠ B×A)?
Матричное умножение не коммутативно. Даже если обе матрицы квадратные, A×B и B×A будут разными (за исключением специальных случаев, например, если A и B диагональные).
Как умножить матрицу на число?
Используйте стандартное умножение диапазона на число. Например, чтобы умножить матрицу A1:C2 на 5:
- В пустой ячейке введите
5. - Скопируйте её (
Ctrl+C). - Выделите матрицу
A1:C2, затемПКМ → Специальная вставка → Умножить.
Можно ли умножать матрицы с текстом?
Нет, МУМНОЖ работает только с числовыми данными. Преобразуйте текст в числа с помощью ЗНАЧЕН() или удалите нечисловые ячейки.
Как умножить матрицы в Google Sheets?
В Google Таблицах используется функция MMULT (аналог МУМНОЖ). Синтаксис идентичен, но формулу массива нужно вводить с ArrayFormula:
=ArrayFormula(MMULT(A1:C2; E1:F3))