The Kronecker product of two matrices and (also called the tensor product) is the matrix^{1}

In other words, is the block matrix with block . For example,

Notice that the entries of comprise every possible product , which is not the case for the usual matrix product when it is defined. Indeed if and are then

- is and contains sums of of the products ,
- is and contains all products .

Two key properties of the Kronecker product are

The second equality implies that when is an eigenvector of with eigenvalue and is an eigenvector of with eigenvalue then

so that is an eigenvalue of with eigenvector . In fact, the eigenvalues of are precisely for and .

Kronecker product structure arises in image deblurring models in which the blur is separable, that is, the blur in the horizontal direction can be separated from the blur in the vertical direction. Kronecker products also arise in the construction of Hadamard matrices. Recall that a Hadamard matrix is a matrix of s whose rows and columns are mutually orthogonal. If is an Hadamard matrix then

is a Hadamard matrix.

The practical significance of Kronecker product structure is that it allows computations on a large matrix to be reduced to computations on smaller matrices. For example, suppose and are Hermitian positive definite matrices and , which can be shown to be Hermitian positive definite from the properties mentioned above. If and are Cholesky factorizations then

so , which is easily seen to be triangular with positive diagonal elements, is the Cholesky factor of . If and are then forming and computing its Cholesky factorization costs flops, whereas and can be computed in flops. If we want to solve a linear system this can be done using and without explicitly form .

## Vec Operator

The vec operator stacks the columns of a matrix into one long vector: if then . The vec operator and the Kronecker product interact nicely: for any , , and for which the product is defined,

This relation allows us to express a linear system in the usual form “”.

## Kronecker Sum

The Kronecker sum of and is defined by . The eigenvalues of are , , , where the are the eigenvalues of and the are those of .

The Kronecker sum arises when we apply the vec operator to the matrix :

Kronecker sum structure also arises in finite difference discretizations of partial differential equations, such as when Poisson’s equation is discretized on a square by the usual five-point operator.

## Vec-Permutation Matrix

Since for the vectors and contain the same elements in different orders, we must have

for some permutation matrix . This matrix is called the the vec-permutation matrix, and is also known as the commutation matrix.

Kronecker multiplication is not commutative, that is, in general, but and do contain the same elements in different orders. In fact, the two matrices are related by row and column permutations: if and then

This relation can be obtained as follows: for ,

Since these equalities hold for all , we have , from which the relation follows on using , which can be obtained by replacing by in the definition of vec.

An explicit expression for the the vec-permutation matrix is

where is the th unit vector.

The following plot shows the sparsity patterns of all the vec permutation matrices with , where the title of each subplot is .

## MATLAB

In MATLAB the Kronecker product can be computed as `kron(A,B)`

and is obtained by indexing with a colon: `A(:)`

. Be careful using `kron`

as it can generate very large matrices!

## Historical Note

The Kronecker product is named after Leopold Kronecker (1823–1891). Henderson et al. (1983) suggest that it should be called the Zehfuss product, after Johann Georg Zehfuss (1832–1891), who obtained the result for and in 1858.

## References

This is a minimal set of references, which contain further useful references within.

- Per Christian Hansen, James G. Nagy, and Dianne P. O’Leary, Deblurring Images: Matrices, Spectra, and Filtering, Society for Industrial and Applied Mathematics, Philadelphia, PA, USA, 2006.
- Harold V. Henderson, Friedrich Pukelsheim, and Shayle R. Searle, On the History of the Kronecker Product, Linear and Multilinear Algebra 14(2), 113–120, 1983.
- Harold V. Henderson and Shayle R. Searle, The Vec-Permutation Matrix, the Vec Operator and Kronecker Products: A Review, Linear and Multilinear Algebra 9, 271–288, 1981.
*Note*: the definition of gives the transpose of as we have defined it. - Jan R. Magnus and Heinz Neudecker, The Commutation Matrix: Some Properties and Applications, Ann. Statist. 7, 381–394, 1979
- Roger Horn and Charles Johnson, Topics in Matrix Analysis, Cambridge University Press, 1991. Chapter 4.
- Charles F. Van Loan, The Ubiquitous Kronecker Product, J. Comput. Appl. Math. 123(1–2), 85–100, 2000.

## Related Blog Posts

This article is part of the “What Is” series, available from https://nhigham.com/category/what-is and in PDF form from the GitHub repository https://github.com/higham/what-is.

## Footnotes:

^{1}

The symbol is typed in as `\otimes`

.

Dear Professor Higham,

I would like to add a classical source of the Kronecker product of two matrices, briefly commented in the paper by Van Loan: bivariate polynomial interpolation. In fact, in a natural way a “generalized Kronecker product” arises.

See, for instance, a recent recall of these facts in our paper “Accurate polynomial interpolation by using the Bernstein basis” (Numerical Algorithms, 2017):

https://link.springer.com/article/10.1007/s11075-016-0215-7

Thank you very much for your work.