Математика / Линейная алгебра
Произведение Кронекера: построение блочной матрицы
Произведение Кронекера заменяет каждый элемент матрицы A блоком a_ijB. Если размеры исходных матриц m×n и p×q, результат имеет размер mp×nq.
Формула
A=[[1,2],[0,3]], B=(1,−1)ᵀ. Два цвета отделяют блоки строк; результат имеет 4 строки и 2 столбца.
Обозначения
- $A=(a_ij)$
- матрица масштабирующих коэффициентов размера m×n
- $B$
- повторяемый блок размера p×q
- $A⊗B$
- блочная матрица размера mp×nq
- $m,n,p,q$
- положительные целые размеры матриц
Условия применения
Матрицы имеют конечные размеры; для произведения Кронекера не требуется равенство n=p. Порядок блоков соответствует порядку строк и столбцов A, а внутри каждого блока сохраняется порядок элементов B. В примерах рассматриваются вещественные безразмерные элементы.
Ограничения
Операция в общем случае некоммутативна: A⊗B и B⊗A содержат разные упорядочения элементов и могут иметь разные размеры. Результат быстро растёт по памяти. Если нужен только результат действия на вектор, часто выгоднее использовать структурированное вычисление без явного хранения всех блоков.
Подробное объяснение
Обычное произведение AB суммирует попарные произведения по внутреннему индексу. Произведение Кронекера устроено иначе: каждый элемент A независимо умножает всю матрицу B. Поэтому условие согласования внутренних размеров отсутствует, а размеры результата перемножаются по каждой оси.
Для элемента a_ij его блок занимает строки (i−1)p+1,…,ip и столбцы (j−1)q+1,…,jq. Внутренний элемент b_rs оказывается в позиции ((i−1)p+r,(j−1)q+s) со значением a_ijb_rs. Эта формула индексов помогает избежать перестановки строк и блоков в программе.
Если A диагональна, ненулевые блоки располагаются на блочной диагонали. В частности, I_m⊗B состоит из m одинаковых копий B. Напротив, B⊗I_m заменяет каждый коэффициент B скалярной матрицей и обычно располагает те же связи в другом порядке.
Структура произведения полезна, когда действие оператора разделяется по двум координатам. Например, независимые преобразования по строкам и столбцам двумерной таблицы можно записывать через кронекеровы множители. При этом выбранный порядок превращения таблицы в вектор определяет точную запись.
Для проверки маленького результата полезно сравнить первый и последний блоки, размеры и отдельные координаты. Совпадение набора чисел без совпадения их позиций не доказывает правильности: переставленная матрица представляет другой оператор в том же фиксированном базисе.
Как пользоваться формулой
- Выпишите размеры обеих матриц и заранее определите mp строк и nq столбцов результата; внутренние размеры согласовывать не требуется.
- Разбейте результат на m×n блоков, каждый из которых содержит p строк и q столбцов, сохраняя порядок коэффициентов A.
- Умножьте всю B на соответствующий элемент a_ij и запишите полученный блок в позицию i,j без суммирования с соседями.
- Проверьте несколько элементов по двойному индексу, а также число строк и столбцов; отдельно сравните результат с B⊗A.
Историческая справка
Произведение Кронекера входит в аппарат тензорных и блочных представлений линейных операторов. Его название связано с математической традицией Кронекера, но саму блочную конструкцию удобно вводить непосредственно по определению, без приписывания современного программного формата одному автору.
В заметке Томаса Минка «Old and New Matrix Algebra Useful for Statistics», редакция 2000 года, операция рассматривается вместе с векторизацией матриц. В курсе MIT2023 года по матричному исчислению ей посвящена часть лекции о произведениях Кронекера и якобианах. Эти современные применения показывают, почему порядок элементов важен не меньше арифметики: блочная форма переносит многомерную задачу в обычную линейную алгебру.
Историческая линия формулы
Имя Кронекера обозначает принятую операцию с матрицами. Заметка Минка и курс MIT являются источниками современного изложения и приложений, а не заявкой на её открытие. Блочная формула и порядок индексов должны быть определены явно в каждом используемом соглашении.
Пример
Пусть A=[[1,2],[0,3]], B=[[1],[−1]]. Размеры 2×2 и 2×1 дают результат 4×2. Первый блок-столбец содержит 1·B над 0·B, второй —2·B над 3·B. Получаем A⊗B=[[1,2],[−1,−2],[0,3],[0,−3]]. Например, элемент в четвёртой строке и втором столбце равен a₂₂b₂₁=3·(−1)=−3. Это произведение двух коэффициентов, а не сумма по строке. Ответ — указанная матрица 4×2. Проверка действия: умножение её на вектор(1,1)ᵀ даёт(3,−3,3,−3)ᵀ. По блокам это тот же результат: верхний блок(1+2)B, нижний(0+3)B. Все числа безразмерны; проверка одновременно подтверждает значения блоков и их вертикальное расположение.
Частая ошибка
Не вычисляйте обычное AB вместо A⊗B: это разные операции даже при согласованных размерах. Не складывайте блоки между собой. Не считайте произведение коммутативным только потому, что отдельные скаляры перемножаются коммутативно. Не выделяйте память под m+n строк: итоговое число строк равно mp, а столбцов nq.
Практика
Задачи с решением
Единичный множитель
Условие. Найдите I₂⊗diag(2,3).
Решение. На блочной диагонали стоят две копии diag(2,3), вне неё нулевые блоки.
Ответ. diag(2,3,2,3).
Размеры результата
Условие. A имеет 3×2 элемента, B имеет 4×5. Найдите размеры A⊗B и число элементов.
Решение. Строки 3·4=12, столбцы 2·5=10; всего 12·10=120 элементов.
Ответ. 12×10, 120 элементов.
Дополнительные источники
- https://tminka.github.io/papers/matrix/minka-matrix.pdf
- https://ocw.mit.edu/courses/18-s096-matrix-calculus-for-machine-learning-and-beyond-january-iap-2023/resources/ocw_18s096_lecture03-part1_2023jan23_mp4/
Связанные формулы
Математика
Матричное произведение
Матричное произведение строит элемент новой матрицы как скалярное произведение строки первой матрицы и столбца второй. Порядок множителей важен.
Математика
Матричная форма системы линейных уравнений
Матричная форма Ax = b записывает систему линейных уравнений как произведение матрицы коэффициентов на столбец неизвестных. Такая запись позволяет решать систему не как набор отдельных строк, а как единый линейный объект.
Математика
Векторизация AXB: тождество с произведением Кронекера
При укладке столбцов матрицы X в один вектор двустороннее умножение AXB превращается в обычное линейное преобразование. Его матрица равна Bᵀ⊗A.