constructs the Kronecker product of the arrays mi.



open allclose all

Basic Examples  (2)

Kronecker product of vectors:

Kronecker product of matrices:

Scope  (2)

a and b are matrices with exact entries:

Use exact arithmetic to compute the Kronecker product:

Use machine arithmetic:

Use 20-digit precision arithmetic:

s and t are sparse matrices:

Compute the sparse Kronecker product:

Applications  (4)

Solve the general linear matrix equation for matrix x by using the flattening (vectorizing) relation Flatten[a.x.b]=(ab).Flatten[x]:

s is a differentiation matrix approximating the second derivative in 1 dimension:

The identity matrix as a sparse array:

A two-dimensional array of values:

A matrix that differentiates in the first dimension only:

A matrix that approximates the Laplacian:

Define the n×n "butterfly" matrix for even n:

Define the n×n "bit reversal" permutation matrix for n a power of 2:

A compact notation for the identity matrix of size n:

A compact notation for the Kronecker product:

Form the discrete Fourier transform matrix for length 16 from the CooleyTukey factorization:

This is equivalent to the result of FourierMatrix:

r is a random vector of length 16:

The discrete Fourier transform of r:

Fourier is fast because it effectively composes the factorization for a particular vector:

Define the Kronecker sum :

Try it on general symbolic matrices:

You now have MatrixExp[ab]=MatrixExp[a]MatrixExp[b]:

Properties & Relations  (8)

KroneckerProduct is multi-linear (linear in each argument) :

Associative (flat) :

Non-commutative :

KroneckerProduct satisfies the mixed product property :

Transpose distributes over it TemplateBox[{{(, {a, , b}, )}}, Transpose]=TemplateBox[{a}, Transpose]TemplateBox[{b}, Transpose]:

ConjugateTranspose distributes over it TemplateBox[{{(, {a, , b}, )}}, ConjugateTranspose]=TemplateBox[{a}, ConjugateTranspose]TemplateBox[{b}, ConjugateTranspose]:

Inverse distributes over it TemplateBox[{{(, {a, , b}, )}}, Inverse]=TemplateBox[{a}, Inverse]TemplateBox[{b}, Inverse] (iff and are invertible):

PseudoInverse distributes over it PseudoInverse[ab]=PseudoInverse[a]PseudoInverse[b]:

The trace Tr for a Kronecker product satisfies Tr[ab]=Tr[a]Tr[b]:

The determinant Det satisfies TemplateBox[{{a, , b}}, Det]=TemplateBox[{a}, Det]^n TemplateBox[{b}, Det]^m where aMatrices[{m,m}] and bMatrices[{n,n}]:

Eigenvalues satisfies Eigenvalues[ab]={λiμj|λiEigenvalues[a],μjEigenvalues[b]:

SingularValueList satisfies the same relation:

MatrixRank satisfies MatrixRank[ab=MatrixRank[a]MatrixRank[b]:

KroneckerProduct for matrices is a flattened block matrix with blocks :

KroneckerProduct of vectors is related to Dot of the corresponding column matrices:

The dot product of a column and row matrix is usually also called an outer product:

KroneckerProduct of vectors is equivalent to TensorProduct:

For matrices it is a flattened tensor product:

KroneckerProduct of vectors is a special case of Outer:

For matrices it is a flattened outer product:

Wolfram Research (2007), KroneckerProduct, Wolfram Language function,


Wolfram Research (2007), KroneckerProduct, Wolfram Language function,


Wolfram Language. 2007. "KroneckerProduct." Wolfram Language & System Documentation Center. Wolfram Research.


Wolfram Language. (2007). KroneckerProduct. Wolfram Language & System Documentation Center. Retrieved from


@misc{reference.wolfram_2022_kroneckerproduct, author="Wolfram Research", title="{KroneckerProduct}", year="2007", howpublished="\url{}", note=[Accessed: 02-December-2022 ]}


@online{reference.wolfram_2022_kroneckerproduct, organization={Wolfram Research}, title={KroneckerProduct}, year={2007}, url={}, note=[Accessed: 02-December-2022 ]}