行列式的求导

556 阅读1分钟

在应用中,经常会碰到需要对某个矩阵的行列式进行求导的情况。而行列式的计算方法比较复杂,如果将它展开成后计算,会比较麻烦,因此最好直接记住一些结论。

本文以计算∂∣A∣∂A\dfrac{\partial |A|}{\partial A}和∂ln⁡∣A∣∂A\dfrac{\partial \ln |A|}{\partial A}为例,介绍如何对行列式求导,并希望大家可以记住结论。

首先,为防止大家线性代数的内容忘得差不多了,我们先以方阵AA(n×nn\times n)为例,回顾一下与行列式有关的基本概念:

  • minor(余子式,或者叫余因式)MM:是一个n×nn\times n方阵,其中元素MijM_{ij}就是把原方阵AA去掉第ii行、第jj列之后再取行列式的值;
  • cofactor(代数余子式)CC:Cij=(−1)i+jMijC_{ij}=(-1)^{i+j}M_{ij};
  • adjugate(伴随矩阵)A∗A^*:Aij∗=(−1)i+jMjiA^*_{ij}=(-1)^{i+j}M_{ji},即A∗=C′A^*=C';

而方阵AA行列式,就可以用某一行(比如第ii行)的cofactor CC的形式来表达(当然也可以用A∗A^*):∣A∣=∑jAijCij|A|=\sum_{j}A_{ij}C_{ij}

另外,若AA是非奇异矩阵,则有

A−1=A∗∣A∣=C′∣A∣A^{-1}=\dfrac{A^*}{|A|}=\dfrac{C'}{|A|}

现在,再来看对∣A∣|A|的求导。对于AA的某个元素AijA_{ij},将行列式写成AA的第ii行展开的形式,我们有

∂∣A∣∂Aij=∂∑jAijCij∂Aij=Cij\dfrac{\partial |A|}{\partial A_{ij}} = \dfrac{\partial \sum_{j}A_{ij}C_{ij}}{\partial A_{ij}}=C_{ij}

第二个等式是因为,对于任意的jj,在CijC_{ij}的计算中都是剔除了AijA_{ij}的,也即它和AijA_{ij}的变动没关系。

因此,我们有

∂∣A∣∂A=C=(A∗)′\dfrac{\partial |A|}{\partial A} = C = (A^*)'

如果AA非奇异,那么有

∂∣A∣∂A=(∣A∣A−1)′=∣A∣(A−1)′\dfrac{\partial |A|}{\partial A} = (|A|A^{-1})'= |A|(A^{-1})'

对于ln⁡∣A∣\ln |A|,利用链式法则,有

∂ln⁡∣A∣∂A=1∣A∣∣A∣(A−1)′=(A−1)′\dfrac{\partial \ln |A|}{\partial A} = \dfrac{1}{|A|} |A|(A^{-1})' = (A^{-1})'