クロネッカー積

数学における行列のクロネッカー積（クロネッカーせき、英: Kronecker product）⊗ は任意サイズの行列の間に定義される二項演算で、その結果は区分行列として与えられる。行列単位からなる標準基底に関する線型空間のテンソル積の行列として与えられる。クロネッカー積は通常の行列の積とはまったく異なる概念であるので、混同すべきではない。名称はレオポルト・クロネッカーに因む。 A = (aij) を m × n 行列、B = (bkl) を p × q 行列とすると、それらのクロネッカー積 A ⊗ B は A ⊗ B = [ a 11 B ⋯ a 1 n B ⋮ ⋱ ⋮ a m 1 B ⋯ a m n B ] {\displaystyle A\otimes B={\begin{bmatrix}a_{11}B&\cdots &a_{1n}B\\\vdots &\ddots &\vdots \\a_{m1}B&\cdots &a_{mn}B\end{bmatrix}}} で与えられる mp × nq 区分行列である。もっとはっきり成分を示せば、 A ⊗ B は [ a 11 b 11 a 11 b 12 ⋯ a 11 b 1 q ⋯ ⋯ a 1 n b 11 a 1 n b 12 ⋯ a 1 n b 1 q a 11 b 21 a 11 b 22 ⋯ a 11 b 2 q ⋯ ⋯ a 1 n b 21 a 1 n b 22 ⋯ a 1 n b 2 q ⋮ ⋮ ⋱ ⋮ ⋱ ⋱ ⋮ ⋮ ⋱ ⋮ a 11 b p 1 a 11 b p 2 ⋯ a 11 b p q ⋯ ⋯ a 1 n b p 1 a 1 n b p 2 ⋯ a 1 n b p q ⋮ ⋮ ⋱ ⋮ ⋱ ⋱ ⋮ ⋮ ⋱ ⋮ ⋮ ⋮ ⋱ ⋮ ⋱ ⋱ ⋮ ⋮ ⋱ ⋮ a m 1 b 11 a m 1 b 12 ⋯ a m 1 b 1 q ⋯ ⋯ a m n b 11 a m n b 12 ⋯ a m n b 1 q a m 1 b 21 a m 1 b 22 ⋯ a m 1 b 2 q ⋯ ⋯ a m n b 21 a m n b 22 ⋯ a m n b 2 q ⋮ ⋮ ⋱ ⋮ ⋱ ⋱ ⋮ ⋮ ⋱ ⋮ a m 1 b p 1 a m 1 b p 2 ⋯ a m 1 b p q ⋯ ⋯ a m n b p 1 a m n b p 2 ⋯ a m n b p q ] {\displaystyle {\begin{bmatrix}a_{11}b_{11}&a_{11}b_{12}&\cdots &a_{11}b_{1q}&\cdots &\cdots &a_{1n}b_{11}&a_{1n}b_{12}&\cdots &a_{1n}b_{1q}\\a_{11}b_{21}&a_{11}b_{22}&\cdots &a_{11}b_{2q}&\cdots &\cdots &a_{1n}b_{21}&a_{1n}b_{22}&\cdots &a_{1n}b_{2q}\\\vdots &\vdots &\ddots &\vdots &\ddots &\ddots &\vdots &\vdots &\ddots &\vdots \\a_{11}b_{p1}&a_{11}b_{p2}&\cdots &a_{11}b_{pq}&\cdots &\cdots &a_{1n}b_{p1}&a_{1n}b_{p2}&\cdots &a_{1n}b_{pq}\\\vdots &\vdots &\ddots &\vdots &\ddots &\ddots &\vdots &\vdots &\ddots &\vdots \\\vdots &\vdots &\ddots &\vdots &\ddots &\ddots &\vdots &\vdots &\ddots &\vdots \\a_{m1}b_{11}&a_{m1}b_{12}&\cdots &a_{m1}b_{1q}&\cdots &\cdots &a_{mn}b_{11}&a_{mn}b_{12}&\cdots &a_{mn}b_{1q}\\a_{m1}b_{21}&a_{m1}b_{22}&\cdots &a_{m1}b_{2q}&\cdots &\cdots &a_{mn}b_{21}&a_{mn}b_{22}&\cdots &a_{mn}b_{2q}\\\vdots &\vdots &\ddots &\vdots &\ddots &\ddots &\vdots &\vdots &\ddots &\vdots \\a_{m1}b_{p1}&a_{m1}b_{p2}&\cdots &a_{m1}b_{pq}&\cdots &\cdots &a_{mn}b_{p1}&a_{mn}b_{p2}&\cdots &a_{mn}b_{pq}\end{bmatrix}}} と書ける。行列 A および B が線型写像 V1 → W1 および V2 → W2 をそれぞれ表現するならば A ⊗ B はそれらの写像のテンソル積 V1 ⊗ V2 → W1 ⊗ W2 を表現する。 例えば、 [ 1 2 3 4 ] ⊗ [ 0 5 6 7 ] = [ 1 ⋅ 0 1 ⋅ 5 2 ⋅ 0 2 ⋅ 5 1 ⋅ 6 1 ⋅ 7 2 ⋅ 6 2 ⋅ 7 3 ⋅ 0 3 ⋅ 5 4 ⋅ 0 4 ⋅ 5 3 ⋅ 6 3 ⋅ 7 4 ⋅ 6 4 ⋅ 7 ] = [ 0 5 0 10 6 7 12 14 0 15 0 20 18 21 24 28 ] {\displaystyle {\begin{bmatrix}1&2\\3&4\end{bmatrix}}\otimes {\begin{bmatrix}0&5\\6&7\end{bmatrix}}={\begin{bmatrix}1\cdot 0&1\cdot 5&2\cdot 0&2\cdot 5\\1\cdot 6&1\cdot 7&2\cdot 6&2\cdot 7\\3\cdot 0&3\cdot 5&4\cdot 0&4\cdot 5\\3\cdot 6&3\cdot 7&4\cdot 6&4\cdot 7\\\end{bmatrix}}={\begin{bmatrix}0&5&0&10\\6&7&12&14\\0&15&0&20\\18&21&24&28\end{bmatrix}}} のような計算が成り立つ。 クロネッカー積はテンソル積の特別な場合であるから、双線型性と結合性を持つ。すなわち、A, B, C を適当なサイズの行列、k をスカラーとして A ⊗ ( B + C ) = A ⊗ B + A ⊗ C , {\displaystyle A\otimes (B+C)=A\otimes B+A\otimes C,} ( A + B ) ⊗ C = A ⊗ C + B ⊗ C , {\displaystyle (A+B)\otimes C=A\otimes C+B\otimes C,} ( k A ) ⊗ B = A ⊗ ( k B ) = k ( A ⊗ B ) , {\displaystyle (kA)\otimes B=A\otimes (kB)=k(A\otimes B),} ( A ⊗ B ) ⊗ C = A ⊗ ( B ⊗ C ) {\displaystyle (A\otimes B)\otimes C=A\otimes (B\otimes C)} が成り立つ。 クロネッカー積は可換でなく、一般には A ⊗ B と B ⊗ A は異なる行列となる。しかし A ⊗ B と B ⊗ A とは置換同値、すなわち置換行列 P, Q で A ⊗ B = P ( B ⊗ A ) Q {\displaystyle A\otimes B=P(B\otimes A)Q} となるものが存在する。さらに A, B が正方行列の場合には、A ⊗ B と B ⊗ A とは置換相似、すなわち置換同値であって P = Q⊤ とすることができる。 行列 A, B, C, D は行列の積 AC および BD が定義できるようなサイズの行列とすれば、 ( A ⊗ B ) ( C ⊗ D ) = A C ⊗ B D {\displaystyle (A\otimes B)(C\otimes D)=AC\otimes BD} が成立する。これは行列の通常の積とクロネッカー積が混じっているので、混合積性質と呼ばれる。 上記の混合積性質から、A ⊗ B が正則行列となるための必要十分条件は A と B がともに正則となることであって、実際に逆元を ( A ⊗ B ) − 1 = A − 1 ⊗ B − 1 {\displaystyle (A\otimes B)^{-1}=A^{-1}\otimes B^{-1}} と書くことができる。 行列の転置をとる操作はクロネッカー積に分配的である。すなわち、 ( A ⊗ B ) ⊤ = A ⊤ ⊗ B ⊤ {\displaystyle (A\otimes B)^{\top }=A^{\top }\otimes B^{\top }} が成立する。 n-次正方行列 A, m-次正方行列 B および k-次単位行列 Ik に対して、クロネッカー和と呼ばれる演算 ⊕ を A ⊕ B = A ⊗ I m + I n ⊗ B {\displaystyle A\oplus B=A\otimes I_{m}+I_{n}\otimes B} で定義する（これは行列の直和とは異なるものであることに注意）。この演算はリー環のテンソル積に関係がある。 行列の指数函数に関する公式 e A ⊕ B = e A ⊗ e B {\displaystyle e^{A\oplus B}=e^{A}\otimes e^{B}} はある種の連続時間マルコフ過程の数値的評価において有用である [要出典]。物理学においても、相互作用しない形の集まりを考えるとき、クロネッカー和が自然に現れる。Hi をそのような系の i-番目のハミルトニアンとすれば、系の集まり全体のハミルトニアンは H T o t = ⨁ i H i {\displaystyle H_{\mathrm {Tot} }=\bigoplus _{i}H^{i}} で与えられる。 A, B はそれぞれ n, m-次正方行列とし、重複度までこめて A の固有値が λ1, …, λn, B の固有値が μ1, …, μm であるとすると、A ⊗ B の固有値は λ i μ j ( i = 1 , … , n ; j = 1 , … , m ) {\displaystyle \lambda _{i}\mu _{j}\quad (i=1,\ldots ,n;\;j=1,\ldots ,m)} で与えられる。従って、クロネッカー積の蹟と行列式に関して tr ( A ⊗ B ) = tr A   tr B , {\displaystyle {\text{tr}}(A\otimes B)={\text{tr}}\,A\ {\text{tr}}\,B,} det ( A ⊗ B ) = ( det A ) m ( det B ) n {\displaystyle \det(A\otimes B)=(\det A)^{m}(\det B)^{n}} が成立することが分かる。 矩形行列 A, B に関してその特異値を考えることができる。行列 A が rA 個の非零特異値 σ A , i ( i = 1 , … , r A ) {\displaystyle \sigma _{A,i}\quad (i=1,\ldots ,r_{A})} を持つものとし、同様に B の非零特異値を σ B , i ( i = 1 , … , r B ) {\displaystyle \sigma _{B,i}\quad (i=1,\ldots ,r_{B})} で表せば、クロネッカー積 A ⊗ B は rArB 個の特異値 σ A , i σ B , j ( i = 1 , … , r A ; j = 1 , … , r B ) {\displaystyle \sigma _{A,i}\sigma _{B,j}\qquad (i=1,\ldots ,r_{A};\;j=1,\ldots ,r_{B})} を持つ。行列の階数はその非零特異値の個数に等しいから、 rank ( A ⊗ B ) = rank A   rank B {\displaystyle {\text{rank}}(A\otimes B)={\text{rank}}\,A\ {\text{rank}}\,B} も分かる。 行列のクロネッカー積は線型写像に対する抽象的なテンソル積に対応する。具体的に、ベクトル空間 V, W, X, Y がそれぞれ基底 {v1, …, vm}, {w1, …, wn}, {x1, …, xd}, {y1, …, ye} を持つものとすると、行列 A, B がそれぞれ線型写像 S: V → X, T: W → Y を所期の基底に関して表現するならば、クロネッカー積 A ⊗ B は写像のテンソル積 S ⊗ T: V ⊗ W → X ⊗ Y を、V ⊗ W の基底 {v1 ⊗ w1, v1 ⊗ w2, …, v2 ⊗ w1, …, vm ⊗ wn} および X ⊗ Y の同様の基底に関して表現するもので、 A ⊗ B(vi ⊗ wj) = (Avi)⊗(Bwj) なる性質が満たされる。ただし、i, j は適当な範囲を動く整数とする。 V, W がリー環で、S: V → V, T: W → W がリー環準同型のとき、A と B のクロネッカー積は誘導されたリー環準同型 V ⊗ W → V ⊗ W を表現する。 グラフの隣接行列のクロネッカー積はグラフのテンソル積の隣接行列になる。また、グラフの隣接行列のクロネッカー和は直積グラフの隣接行列である。 クロネッカー積はある種の行列方程式の簡便な表現を得るのに利用することができる。例えば、A, B, C が与えられていて、X を未知とするときの、方程式 AXB = C を考えると、この方程式は ( B ⊤ ⊗ A ) vec ( X ) = vec ( A X B ) = vec ( C ) {\displaystyle (B^{\top }\otimes A){\text{vec}}(X)={\text{vec}}(AXB)={\text{vec}}(C)} の形に書き下すことができる。ここで、vec(X) は、行列 X の各列を縦に積んで一つの列ベクトルの形にした、X のベクトル化である。このときクロネッカー積の性質から、方程式 AXB = C がただ一つの解をもつための必要十分条件が A および B がともに非特異であること (Horn & Johnson 1991, Lemma 4.3.1) が従う。 X を行順に列ベクトルとしたものを x とすれば AXB は (A ⊗ B⊤)x と書ける (Jain 1989, 2.8 Block Matrices and Kronecker Products)。 多変量統計におけるモーメントはクロネッカー積を用いて表すことができる。 x = (X1, X2, ... ) を多変量のベクトルとすれば、 一次のモーメントは、 μ 1 = E [ x ] = ( E [ X 1 ] , E [ X 2 ] , . . . ) {\displaystyle \mu _{1}=E[x]=(E[X_{1}],E[X_{2}],...)} 二次のモーメントは、 μ 2 = E [ x ⊗ x t ] = ( E [ X 1 2 ] , E [ X 2 2 ] , . . . , E [ X 1 X 2 ] , E [ X 1 X 3 ] , . . . ) {\displaystyle \mu _{2}=E[x\otimes x^{t}]=(E[X_{1}^{2}],E[X_{2}^{2}],...,E[X_{1}X_{2}],E[X_{1}X_{3}],...)} 三変数での例 [ a b c ] ⊗ [ a b c ] = [ a ⋅ a a ⋅ b a ⋅ c b ⋅ a b ⋅ b b ⋅ c c ⋅ a c ⋅ b c ⋅ c ] {\displaystyle {\begin{bmatrix}a\\b\\c\end{bmatrix}}\otimes {\begin{bmatrix}a&b&c\end{bmatrix}}={\begin{bmatrix}a\cdot a&a\cdot b&a\cdot c\\b\cdot a&b\cdot b&b\cdot c\\c\cdot a&c\cdot b&c\cdot c\end{bmatrix}}} で共分散行列となる。 同様に、 三次モーメントは、 μ 3 = E [ x ⊗ x t ⊗ x t ] {\displaystyle \mu _{3}=E[x\otimes x^{t}\otimes x^{t}]} ２変数での例 [ a b ] ⊗ [ a b ] ⊗ [ a b ] = [ a ⋅ a a ⋅ b b ⋅ a b ⋅ b ] ⊗ [ a b ] = [ a a ⋅ a a a ⋅ b a b ⋅ a a b ⋅ b b a ⋅ a b a ⋅ b b b ⋅ a b b ⋅ b ] {\displaystyle {\begin{bmatrix}a\\b\end{bmatrix}}\otimes {\begin{bmatrix}a&b\end{bmatrix}}\otimes {\begin{bmatrix}a&b\end{bmatrix}}={\begin{bmatrix}a\cdot a&a\cdot b\\b\cdot a&b\cdot b\end{bmatrix}}\otimes {\begin{bmatrix}a&b\end{bmatrix}}={\begin{bmatrix}aa\cdot a&aa\cdot b&ab\cdot a&ab\cdot b\\ba\cdot a&ba\cdot b&bb\cdot a&bb\cdot b\end{bmatrix}}} 四次モーメントは、 μ 4 = E [ x ⊗ x t ⊗ x t ⊗ x t ] {\displaystyle \mu _{4}=E[x\otimes x^{t}\otimes x^{t}\otimes x^{t}]} 一般に k 次モーメントは、 μ k = E [ x ⊗ k ] {\displaystyle \mu _{k}=E[x^{\otimes k}]} と書かれる。 クロネッカー積はレオポルト・クロネッカーにその名を由来するが、クロネッカーが最初に定義をして用いたという証拠はわずかしかない。実際に過去には、ヨハン・ゲオルク・ツェーフスに因んでツェーフス行列 (Zehfuss matrix) と呼ばれたこともある。 行列の乗法