目录
- 定义
- 性质
- Stack Operator
- Kronecker Product
- $a otimes b = vec(b a^T)$
- $(A otimes B)^T = (A^T otimes B^T)$
- 半线性
- $(A otimes B) (Cotimes D) = (AC otimes BD)$
- $(A otimes B)^{-1} = (A^{-1} otimes B^{-1})$
- $mathrm{det}(A_{n imes n} otimes B_{m imes m}) = mathrm{det}(A)^m cdot mathrm{det}(B)^n$
- $mathrm{Tr}(A otimes B) = mathrm{Tr}(A) cdot mathrm{Tr}(B)$
- $vec(ABC) = (C^T otimes A) vec(B)$
定义
Stack Operator
对于任意的矩阵(A in mathbb{R}^{m imes n}),
[vec(A) := [A_{00}, A_{10}, ldots, A_{m-1,n-1}]^T in mathbb{R}^{mn},
]
即按列展开.
Kronecker Product
对于任意的矩阵(A in mathbb{R}^{m imes n }, B in mathbb{R}^{p imes q}),
[A otimes B :=
left [
egin{array}{ccc}
A_{00} cdot B & cdots & A_{0n-1} cdot B \
vdots & ddots & vdots \
A_{m-1,0} cdot B & cdots & A_{m-1,n-1} cdot B
end{array}
ight ] in mathbb{R}^{mp imes nq}
]
性质
Stack Operator
[mathrm{Tr}(A^TB) = vec(A)^T vec(B).
]
Kronecker Product
易知,
[[A otimes B]_{ip+s,jq+t} = A_{i,j} cdot B_{s,t}, quad iin [m], sin[p], j in [n], t in [q],
]
这里([m] = {0, 1, ldots, m-1}).
(a otimes b = vec(b a^T))
- (a in mathbb{R}^m, b in mathbb{R}^n), 则[a otimes b = vec(b a^T) ]
((A otimes B)^T = (A^T otimes B^T))
((A otimes B)^T = (A^T otimes B^T))是显然的.
故
[[A otimes B]_{*, jq+t} = A_{*,j} otimes B_{*, t} = vec(B_{*, t} A_{*,j}^T) \
[A otimes B]_{ip+s, *}^T = A_{i,*}^T otimes B_{s,*}^T = vec(B^T_{s,*} A_{i,*}).
]
半线性
-
(A otimes alpha B = alpha A otimes B = alpha (A otimes B).)
-
[(A+B) otimes C = A otimes C +B otimes C \ A otimes (B+C) = Aotimes B + A otimes C. ]
-
((A otimes B) otimes C=A otimes (Botimes C)):
[egin{array}{ll} (A otimes B) otimes C &= [A_{i,j} cdot B_{s,t} cdot C ]\ &= A otimes (B otimes C). end{array} ] -
通常 ((A otimes B) ot= (B otimes A)).
((A otimes B) (Cotimes D) = (AC otimes BD))
[egin{array}{ll}
[(A otimes B) (Cotimes D)]_{ip+s, jq+t}
&= [A otimes B]_{ip+s, *} [Cotimes D]_{*,jq+t} \
&= vec(B_{s, *}^TA_{i,*})^T vec(D_{*,t} C_{*,j}^T) \
&= mathrm{Tr}(A_{i,*}^TB_{s,*}D_{*,t} C_{*,j}^T) \
&= mathrm{Tr}(C_{*,j}^TA_{i,*}^TB_{s,*}D_{*,t}) \
&= A_{i, *}C_{*,j} cdot B_{s, *} D_{*,t} \
&= [AC]_{ij} cdot [BD]_{st} \
&= [AC otimes BD]_{ip+s,jq+t}.
end{array}
]
((A otimes B)^{-1} = (A^{-1} otimes B^{-1}))
条件自然是A, B为满秩方阵:
[(A otimes B) (A^{-1} otimes B^{-1}) = (AA^{-1} otimes BB^{-1}) = I
]
(mathrm{det}(A_{n imes n} otimes B_{m imes m}) = mathrm{det}(A)^m cdot mathrm{det}(B)^n)
就像用普通的高斯消去法将矩阵化为对角型一样, 在对(A_{n imes n } otimes B_{m imes m})消去的过程中可以发现, (B)不会产生丝毫的影响, 结果便是显而易见的了.
(mathrm{Tr}(A otimes B) = mathrm{Tr}(A) cdot mathrm{Tr}(B))
[mathrm{Tr}(A otimes B) = sum_{i=1}^m sum_{j=1}^n A_iB_j = mathrm{Tr}(A) cdot mathrm{Tr}(B).
]
(vec(ABC) = (C^T otimes A) vec(B))
设(A in mathbb{R}^{m imes n}, B in mathbb{R}^{n imes p}, C in mathbb{R}^{p imes q}),
[[vec(ABC)]_{jm+i} = [ABC]_{i,j} = mathrm{Tr}(A_{i,*}BC_{*,j}) = mathrm{Tr}(C_{*,j}A_{i,*}B)=vec(A_{i,*}^TC_{*j}^T)^T vec(B) = [C^T otimes A]_{jm+i,*} vec(B)
]
特例:
[Ax = IAx = vec(IAx) = (x^T otimes I)vec(A)
]
这个在处理梯度的时候会比较有用:
[y = Ax
]
则
[mathrm{d}y = (mathrm{d}A)x + Amathrm{d}x = (x^T otimes I) vec(mathrm{d}A) + A mathrm{d}x.
]