Computing Library › Linear Algebra
Linear Algebra

The Kronecker Product

A block-structured product of two matrices that builds large operators from smaller ones.

Definition

The Kronecker product of an m-by-n matrix A and a p-by-q matrix B, written A tensor B, is an (mp)-by-(nq) matrix formed by replacing each entry a_ij of A with the block a_ij times B. The result is a large matrix built from scaled copies of B arranged in the pattern of A. It captures the structure of operators acting on multidimensional grids.

Properties

Kronos motion — stat triple product

The vec trick

Stacking the columns of a matrix X into a single vector, written vec(X), links the Kronecker product to matrix equations: vec(A X B) = (B^T tensor A) vec(X). This identity converts the matrix equation A X B = C into an ordinary linear system, and it is the key to solving Sylvester and Lyapunov equations that arise in control theory.

Separable operators

On a two-dimensional grid, a differential operator that acts independently along each axis is a sum of Kronecker products, such as (D tensor I) + (I tensor D). This structure lets fast solvers work on each dimension separately, avoiding the cost of treating the full grid at once, and it generalizes to any number of dimensions.

python
import numpy as np
A = np.array([[1, 0], [0, 2]])
B = np.array([[1, 1], [0, 1]])
print(np.kron(A, B).shape)   # (4, 4)

Discretized operators for multidimensional plasma and field simulations are naturally expressed as sums of Kronecker products, exposing separable structure that dramatically reduces solve cost.