KroneckerProduct

KroneckerProduct[m1,m2,]

constructs the Kronecker product of the arrays mi.

Details

Examples

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 a1.x.b1++am.x.bm=c 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 a 2l×2l "butterfly" matrix:

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 direct matrix product:

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

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:

We 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:

Introduced in 2007
 (6.0)