MMULT. Примеры использования

MMULT. Примеры использования
Содержимое страницы

Это очередное определение, которое можно использовать для практического применения формулы МУМНОЖ (MMULT) с целью вычисления произведение двух матриц, представленных в виде массивов (диапазонов).

Вводное слово

Нет уверенности в том, что какое-либо точное описание смысла перемножения матриц, будет усвоено и применимо читателем сразу, “налету”. Основной проблемой, кажется, является сложность восприятия объема передаваемой информации. Необходимо не только представлять, “что перемножается” в данный момент, но и “какой порядок” (очередность) это имеет. И, к слову, само “перемноежение” - это, на самом деле, смесь очередей сумм и попарных умножений.

Далее по тексту возьму на себя смелость выделить сущности, которыми следует оперировать, чтобы представить, в каком случае использовать MMULT, и как получить хоть какой-то рациональный результат.

Как всегда, ссылки на живые примеры в конце статьи.

Области применения

Эта статья будет интересна тем, кто изучает или использует Таблицы Гугл для анализа и поиска данных. Основой примеров является функция MMULT. Если вы не знакомы с этой функцией, то необходимо обратиться к справке МУМНОЖ (MMULT). Также стоит знать об ARRAYFORMULA, ТРАНСП (TRANSPOSE).

Определения

MMULT - формула для вычисления воздействия одного диапазона на другой (да-да, слова “матрицы” и “умножение” не понадобится).

Диапазоны - области Таблицы, состоящие из числовых значений, имеющие рамерность в строках и столбцах. Диапазон A2:C6 имеет размерность в 4 строки и 3 столбца (слово колонки также подходит). Еще одно название - массив.

Диапазон A3:C6. Размером 4 строки и 3 колонки

Воздействие - математическая магия. Обычно, эта магия сводится к тому, что на один диапазон (данные) воздействует другой диапазон (чаще всего это массив нулей и единиц, расположенных заданным образом). В зависимости от внешнего вида диапазона воздействия можно выделить виды воздействия (не является исчерпывающим объяснением). Важно то, что природа и закон воздействия всегда одинаковы, меняется лишь состав диапазона. Представьте это как новое математическое действие. Никого не вводит в ступор умножение, а ведь это закономерно равномерно повторяющаяся сумма!

Объяснение MMULT

В количественном смысле, MMULT можно представить как расчет сумм по строкам или колонкам. Это лишь одно из представлений, но, зато, его уже можно использовать на практике.

Горизонтальное “сведение” или “сумма по строкам”

Чтобы посчитать построчные суммы, достаточно на диапазон воздействовать массивом из единиц размером в одну колонку и количеством строк равным количеству колонок, из которых берутся данные для суммирования.

Например, чтобы посчитать суммы для каждой строки из массива

Колонка 1 Колонка 2 Колонка 3
1 2 3
4 5 6

необходимо сделать MMULT с массивом

- Диапазон воздействия
Строка 1 1
Строка 2 1
Строка 3 1

в итоге получить

Результат
6
15

Очень важно. Число колонок первого диапазона равно числу строк второго.

В Таблицах это

=MMULT(B2:D3;B5:B7)

МУМНОЖ (MMULT) построчная сумма

Стоит обратить внимание, что в B2:D3 три колонки, а в B5:B7 три строки - MMULT будет разрешен корректно.

В более практичном смысле: есть данные учета животных по месяцам A7:F10:

Питомцы Апрель Май Июнь Июль Август
Собаки 2 3 4 6 9
Кошки 10 11 12 9 8
Птицы 25 26 27 3 7

Чтобы вывести итоги по каждому питомцу за все месяцы, можно использовать MMULT

Питомцы Сумма
Собаки 24
Кошки 50
Птицы 88

В Таблицах это

МУМНОЖ (MMULT) построчная сумма реальный пример

Чтобы вывести итоги по каждому питомцу за некоторые месяцы, например, только за “Апрель”, “Май”, “Июнь”, нужно указать диапазон воздействия, где для соответствующих месяцев будет выставлена единица, а для остальных - ноль.

МУМНОЖ (MMULT) построчная сумма избранные колонки реальный пример

Вертикальное “сведение” или “сумма по колонкам”

Сумма по колонкам получается, если воздействовать диапазоном данных на диапазон единиц размером в одну строку и числом колонок равным числу строк расcчитываемого диапазона. Т.е. массив с единицами теперь идет первым аргументом.

Чтобы вывести итоги по каждому месяцу по всем питомцам вместе, можно использовать MMULT

Апрель Май Июнь Июль Август
Суммы 37 40 43 18 24

В Таблицах это

МУМНОЖ (MMULT) поколоночная сумма реальный пример

Чтобы вывести итоги по каждому месяцу для избранных питомцев, например, только для “Собак”, “Кошек”, нужно указать диапазон воздействия, где для соответствующих питомцев будет выставлена единица, а для остальных - ноль.

МУМНОЖ (MMULT) поколоночная сумма избранные строки реальный пример

Воздействие на результат MMULT

Интересно, что MMULT работает подобно формулам массивов, таким как ARRAYFORMULA. Но, чтобы воздействовать на результат MMULT, ее необходимо обернуть в ARRAYFORMULA. Пример, среднее значение по каждому питомцу за все месяцы. Вместо массива единиц диапазон воздействия заполняется коэффициентами равными отношению единицы к количеству подсчитываемых колонок

=ARRAYFORMULA(MMULT(B8:F10;A15:A19/COUNTA(B7:F7)))

МУМНОЖ (MMULT) построчные средние реальный пример

Динамическая генерация диапазонов воздействия

Основная задача сводится к тому, чтобы сгеннеировать строку или колонку единиц или других коэффициентов.

Самым удобным является перебор строк или колонок по номерам и возведение этих значений в нулевую степень с последующим транспонированием.

По строкам

Получим диапазон единиц для “суммы по строкам”:

  • Переберем номера колонок
  • Возведем номера в нулевую степень
  • Транспонируем результат
=ARRAYFORMULA(TRANSPOSE(COLUMN(B8:F10)^0))

TRANSPOSE транспонирование колонок единиц

Попробуйте самостоятельно с учетом выбранных месяцев

=ARRAYFORMULA(TRANSPOSE(N(REGEXMATCH(B7:F7;"(?i)(апрель|май|июнь)"))))

По колонкам

Получим диапазон единиц для “суммы по колонкам”:

  • Переберем номера строк
  • Возведем номера в нулевую степень
  • Транспонируем результат
=ARRAYFORMULA(TRANSPOSE(ROW(B8:F10)^0))

TRANSPOSE транспонирование строк единиц

Комплексный пример с выводом нескольких групп результатов

Диапазон воздействия необязательно должен быть в одну строку или колонку. Например, если для расчета по строкам передать диапазон воздействия из двух колонок, в первом из которых будут единицы, а во втором коэффициент отношения к общему количеству, то итогом будет массив из сумм и средних.

Для сумм

=ARRAYFORMULA(TRANSPOSE(COLUMN(B8:F10)^0))

Для средних

=ARRAYFORMULA(TRANSPOSE(COLUMN(B8:F10)^0/COLUMNS(B8:F10)))

Построение диапазона воздействия

=ARRAYFORMULA({
    TRANSPOSE(COLUMN(B8:F10)^0)\
    TRANSPOSE(COLUMN(B8:F10)^0/COLUMNS(B8:F10))
  })}

Итоговая формула

=ARRAYFORMULA(MMULT(
  B8:F10;
  {
    TRANSPOSE(COLUMN(B8:F10)^0)\
    TRANSPOSE(COLUMN(B8:F10)^0/COLUMNS(B8:F10))
  }
))

мумнож (mmult) вывод нескольких групп результатов

Важные замечания

Крутость формулы MMULT компенсируется ее ограниченностью в размерах обрабатываемых диапазонов. Следует учитывать, что она не подходит для больших Таблиц, и ее желательно использовать в прогнозируемых рамках.

Это лишь малая часть того, что можно сделать с помощью MMULT. Некоторые примеры, которые еще не описаны, уже добавлены в Таблицу.

Ссылки