Kronecker product

From Wikipedia, the free encyclopedia
(Redirected from Kronecker sum)
Jump to navigation Jump to search

Template:Short description Template:CS1 config Script error: No such module "For". In mathematics, the Kronecker product, sometimes denoted by ⊗, is an operation on two matrices of arbitrary size resulting in a block matrix. It is a specialization of the tensor product (which is denoted by the same symbol) from vectors to matrices and gives the matrix of the tensor product linear map with respect to a standard choice of basis. The Kronecker product is to be distinguished from the usual matrix multiplication, which is an entirely different operation. The Kronecker product is also sometimes called matrix direct product.[1]

The Kronecker product is named after the German mathematician Leopold Kronecker (1823–1891), even though there is little evidence that he was the first to define and use it. The Kronecker product has also been called the Zehfuss matrix, and the Zehfuss product, after Template:Ill, who in 1858 described this matrix operation, but Kronecker product is currently the most widely used term.[2][3] The misattribution to Kronecker rather than Zehfuss was due to Kurt Hensel.[4]

Definition

If A is an m × n matrix and B is a p × q matrix, then the Kronecker product AB is the pm × qn block matrix:

𝐀𝐁=[a11𝐁a1n𝐁am1𝐁amn𝐁],

more explicitly:

𝐀𝐁=[a11b11a11b12a11b1qa1nb11a1nb12a1nb1qa11b21a11b22a11b2qa1nb21a1nb22a1nb2qa11bp1a11bp2a11bpqa1nbp1a1nbp2a1nbpqam1b11am1b12am1b1qamnb11amnb12amnb1qam1b21am1b22am1b2qamnb21amnb22amnb2qam1bp1am1bp2am1bpqamnbp1amnbp2amnbpq].

Using // and % to denote truncating integer division and remainder, respectively, and numbering the matrix elements starting from 0, one obtains

(AB)pr+v,qs+w=arsbvw
(AB)i,j=ai//p,j//qbi%p,j%q.

For the usual numbering starting from 1, one obtains

(AB)p(r1)+v,q(s1)+w=arsbvw
(AB)i,j=ai/p,j/qb(i1)%p+1,(j1)%q+1.

If A and B represent linear transformations V1W1 and V2W2, respectively, then the tensor product of the two maps is a map V1V2W1W2 represented by AB.

Examples

[1234][0567]=[1[0567]2[0567]3[0567]4[0567]]=[1×01×52×02×51×61×72×62×73×03×54×04×53×63×74×64×7]=[0501067121401502018212428].

Similarly:

[147233][8965134728831251]=[89653236242056634235134741216287212849288383232121456562112514820471435716181210242718152427181526814391221391221416166624249624249241023615336153]

Properties

Relations to other matrix operations

Template:Ordered list

Abstract properties

Template:Ordered list

Matrix equations

The Kronecker product can be used to get a convenient representation for some matrix equations. Consider for instance the equation AXB = C, where A, B and C are given matrices and the matrix X is the unknown. We can use the "vec trick" to rewrite this equation as

(𝐁T𝐀)vec(𝐗)=vec(𝐀𝐗𝐁)=vec(𝐂).

Here, vec(X) denotes the vectorization of the matrix X, formed by stacking the columns of X into a single column vector.

It now follows from the properties of the Kronecker product that the equation AXB = C has a unique solution, if and only if A and B are invertible Script error: No such module "Footnotes"..

If X and C are row-ordered into the column vectors u and v, respectively, then Script error: No such module "Footnotes".

𝐯=(𝐀𝐁T)𝐮.

The reason is that

𝐯=vec((𝐀𝐗𝐁)T)=vec(𝐁T𝐗T𝐀T)=(𝐀𝐁T)vec(𝐗T)=(𝐀𝐁T)𝐮.

Applications

For an example of the application of this formula, see the article on the Lyapunov equation. This formula also comes in handy in showing that the matrix normal distribution is a special case of the multivariate normal distribution. This formula is also useful for representing 2D image processing operations in matrix-vector form.

Another example is when a matrix can be factored as a Kronecker product, then matrix multiplication can be performed faster by using the above formula. This can be applied recursively, as done in the radix-2 FFT and the Fast Walsh–Hadamard transform. Splitting a known matrix into the Kronecker product of two smaller matrices is known as the "nearest Kronecker product" problem, and can be solved exactly[5] by using the SVD. To split a matrix into the Kronecker product of more than two matrices, in an optimal fashion, is a difficult problem and the subject of ongoing research; some authors cast it as a tensor decomposition problem.[6][7]

In conjunction with the least squares method, the Kronecker product can be used as an accurate solution to the hand–eye calibration problem.[8]

Related matrix operations Script error: No such module "anchor".

Two related matrix operations are the Tracy–Singh and Khatri–Rao products, which operate on partitioned matrices. Let the m × n matrix A be partitioned into the mi × nj blocks Aij and p × q matrix B into the pk × qTemplate:Ell blocks Bkl, with of course Σi mi = m, Σj nj = n, Σk pk = p and ΣTemplate:Ell qTemplate:Ell = q.

Tracy–Singh product

The Tracy–Singh product is defined as[9][10][11]

𝐀𝐁=(𝐀ij𝐁)ij=((𝐀ij𝐁kl)kl)ij

which means that the (ij)-th subblock of the mp × nq product A B is the mi p × nj q matrix Aij B, of which the (kTemplate:Ell)-th subblock equals the mi pk × nj qTemplate:Ell matrix AijBkTemplate:Ell. Essentially the Tracy–Singh product is the pairwise Kronecker product for each pair of partitions in the two matrices.

For example, if A and B both are 2 × 2 partitioned matrices e.g.:

𝐀=[𝐀11𝐀12𝐀21𝐀22]=[123456789],𝐁=[𝐁11𝐁12𝐁21𝐁22]=[147258369],

we get:

𝐀𝐁=[𝐀11𝐁𝐀12𝐁𝐀21𝐁𝐀22𝐁]=[𝐀11𝐁11𝐀11𝐁12𝐀12𝐁11𝐀12𝐁12𝐀11𝐁21𝐀11𝐁22𝐀12𝐁21𝐀12𝐁22𝐀21𝐁11𝐀21𝐁12𝐀22𝐁11𝐀22𝐁12𝐀21𝐁21𝐀21𝐁22𝐀22𝐁21𝐀22𝐁22]=[1247814312214516282035624422458101661524366912189182781020322540123048121524363045183654782849325693663141635564064184572212442634872275481].

Khatri–Rao product

Script error: No such module "Labelled list hatnote".

  • Block Kronecker product
  • Column-wise Khatri–Rao product

Face-splitting product

Script error: No such module "Labelled list hatnote". Mixed-products properties[12]

𝐀(𝐁𝐂)=(𝐀𝐁)𝐂,

where denotes the Face-splitting product.[13][14]

(𝐀𝐁)(𝐂𝐃)=(𝐀𝐂)(𝐁𝐃),

Similarly:[15]

(𝐀𝐋)(𝐁𝐌)(𝐂𝐒)=(𝐀𝐁𝐂)(𝐋𝐌𝐒),
𝐜T𝐝T=𝐜T𝐝T,

where 𝐜 and 𝐝 are vectors,[16]

(𝐀𝐁)(𝐜𝐝)=(𝐀𝐜)(𝐁𝐝),

where 𝐜 and 𝐝 are vectors, and denotes the Hadamard product.

Similarly:

(𝐀𝐁)(𝐌𝐍𝐜𝐐𝐏𝐝)=(𝐀𝐌𝐍𝐜)(𝐁𝐐𝐏𝐝),
(C(1)xC(2)y)=(C(1)C(2))(xy)=C(1)xC(2)y,

where is vector convolution and is the Fourier transform matrix (this result is an evolving of count sketch properties[17]),[13][14]

(𝐀𝐋)(𝐁𝐌)(𝐂𝐒)(𝐊𝐓)=(𝐀𝐁𝐂𝐊)(𝐋𝐌𝐒𝐓),

where denotes the column-wise Khatri–Rao product.

Similarly:

(𝐀𝐋)(𝐁𝐌)(𝐂𝐒)(cd)=(𝐀𝐁𝐂𝐜)(𝐋𝐌𝐒𝐝),
(𝐀𝐋)(𝐁𝐌)(𝐂𝐒)(𝐏𝐜𝐐𝐝)=(𝐀𝐁𝐂𝐏𝐜)(𝐋𝐌𝐒𝐐𝐝),

where 𝐜 and 𝐝 are vectors.

See also

Notes

<templatestyles src="Reflist/styles.css" />

  1. Script error: No such module "citation/CS1".
  2. Script error: No such module "Citation/CS1".
  3. Script error: No such module "Citation/CS1".
  4. Script error: No such module "citation/CS1".
  5. Script error: No such module "citation/CS1".
  6. Script error: No such module "citation/CS1".
  7. Script error: No such module "citation/CS1".
  8. Script error: No such module "Citation/CS1".
  9. Script error: No such module "Citation/CS1".
  10. Script error: No such module "Citation/CS1".
  11. Script error: No such module "Citation/CS1".
  12. Script error: No such module "Citation/CS1".
  13. a b Script error: No such module "citation/CS1".
  14. a b Script error: No such module "Citation/CS1".
  15. Script error: No such module "citation/CS1".
  16. Script error: No such module "citation/CS1".
  17. Script error: No such module "citation/CS1".

Script error: No such module "Check for unknown parameters".

References

  • Script error: No such module "citation/CS1".
  • Script error: No such module "citation/CS1".
  • Script error: No such module "citation/CS1".
  • Script error: No such module "citation/CS1".
  • Script error: No such module "citation/CS1".

External links

  • Template:Springer
  • Template:Planetmath reference
  • Script error: No such module "citation/CS1".
  • Script error: No such module "citation/CS1".
  • Script error: No such module "citation/CS1". The entry on the Kronecker, Zehfuss, or Direct Product of matrices has historical information.
  • Script error: No such module "citation/CS1".
  • Script error: No such module "citation/CS1". Software source in more than 40 languages.

Script error: No such module "Navbox".