恒等式 det(exp(A)) = exp(Tr(A)) 赏析
By 苏剑林 | 2019-02-18 | 66601位读者 |本文的主题是一个有趣的矩阵行列式的恒等式
\begin{equation}\det(\exp(\boldsymbol{A})) = \exp(\text{Tr}(\boldsymbol{A}))\label{eq:main}\end{equation}
这个恒等式在挺多数学和物理的计算中都出现过,笔者都在不同的文献中看到过好几次了。
注意左端是矩阵的指数,然后求行列式,这两步都是计算量非常大的运算;右端仅仅是矩阵的迹(一个标量),然后再做标量的指数。两边的计算量差了不知道多少倍,然而它们居然是相等的!这不得不说是一个神奇的事实。
所以,本文就来好好欣赏一个这个恒等式。
矩阵指数 #
当然,要欣赏这个恒等式,需要做些准备功夫。首先是$\exp(\boldsymbol{A})$要怎么理解?一般来说,它是按照普通的$e^x$的泰勒级数展开式来定义的:
\begin{equation}\exp(\boldsymbol{A})=\sum_{n=0}^{\infty}\frac{\boldsymbol{A}^n}{n!}\end{equation}
这里的$\boldsymbol{A}$是一个$k\times k$矩阵。可以证明,这个定义对于任意矩阵都是收敛的,因此是个好的定义。
有了这个定义,我们可以直接写出常系数微分方程组的解:
\begin{equation}\frac{d}{dt}\boldsymbol{x}=\boldsymbol{A}\boldsymbol{x}\quad\Rightarrow \quad \boldsymbol{x}=\exp(t\boldsymbol{A})\boldsymbol{x}_0\end{equation}
当然,这个结果充其量也只有理论上的价值,因为实际计算的时候,你还是得苦逼地把$\boldsymbol{A}^2,\boldsymbol{A}^3,\dots$一个个算出来。
有没有什么简单一点的计算方案呢?有,假如$\boldsymbol{A}$能对角化的时候就简单一些,因为可对角化意味着
\begin{equation}\boldsymbol{A}=\boldsymbol{P}\boldsymbol{\Lambda}\boldsymbol{P}^{-1}\end{equation}
其实$\boldsymbol{P}$自然就是可逆矩阵,而$\boldsymbol{\Lambda}=\text{diag}(\lambda_1,\dots,\lambda_k)$是对角矩阵。这种情况之所以简单,是因为
\begin{equation}\boldsymbol{A}^n=\boldsymbol{P}\boldsymbol{\Lambda}^n\boldsymbol{P}^{-1}\end{equation}
而因为$\boldsymbol{\Lambda}$是对角阵,所以$\boldsymbol{\Lambda}^n$只需要把对角线上的各个数都取$n$次方就行了。所以
\begin{equation}\begin{aligned}\exp(\boldsymbol{A})=&\exp(\boldsymbol{P}\boldsymbol{\Lambda}\boldsymbol{P}^{-1})\\
=&\boldsymbol{P}\left(\sum_{n=0}^{\infty}\frac{\boldsymbol{\Lambda}^n}{n!}\right)\boldsymbol{P}^{-1}\\
=&\boldsymbol{P}\exp(\boldsymbol{\Lambda})\boldsymbol{P}^{-1}
\end{aligned}\end{equation}
这里$\exp(\boldsymbol{\Lambda})=\text{diag}\left(e^{\lambda_1},\dots,e^{\lambda_k}\right)$。
不过要注意,虽然矩阵指数的定义照搬了实数的指数级数,但是对于任意两个矩阵$\boldsymbol{A},\boldsymbol{B}$,一般情况下
\begin{equation}\exp(\boldsymbol{A}+\boldsymbol{B})\neq \exp(\boldsymbol{A})\exp(\boldsymbol{B})\end{equation}
两者相等的充分条件是$\boldsymbol{A}\boldsymbol{B}=\boldsymbol{B}\boldsymbol{A}$,即乘法可交换。也就是说,多个矩阵的混合运算规律,如果要照搬实数的运算公式,很多时候都需要加上可交换这个条件才能成立。
由于$\boldsymbol{A}$和$-\boldsymbol{A}$显然是可交换的,因此
\begin{equation}\boldsymbol{I}=\exp(\boldsymbol{A}-\boldsymbol{A})=\exp(\boldsymbol{A})\exp(-\boldsymbol{A})\end{equation}
也就是说$\exp(\boldsymbol{A})$总是可逆的,其逆矩阵是$\exp(-\boldsymbol{A})$。
矩阵函数 #
其实,通过级数的方式,可以将很多实数级数都搬到矩阵来,从而成为矩阵函数,比如
\begin{equation}\begin{aligned}\sin(\boldsymbol{A})=&\boldsymbol{A}-\frac{\boldsymbol{A}^3}{3!}+\frac{\boldsymbol{A}^5}{5!}-\frac{\boldsymbol{A}^7}{7!}+\dots\\
\cos(\boldsymbol{A})=&\boldsymbol{I}-\frac{\boldsymbol{A}^2}{2!}+\frac{\boldsymbol{A}^4}{4!}-\frac{\boldsymbol{A}^6}{6!}+\dots
\end{aligned}\end{equation}
同样地,如果$\boldsymbol{A}\boldsymbol{B}=\boldsymbol{B}\boldsymbol{A}$,那么
\begin{equation}\sin(\boldsymbol{A}+\boldsymbol{B})=\sin(\boldsymbol{A})\cos(\boldsymbol{B})+\sin(\boldsymbol{B})\cos(\boldsymbol{A})\end{equation}
前面讨论了指数函数,有指数自然就有对数。矩阵对数的定义一般有两种。第一种定义是:如果矩阵$\boldsymbol{B}$满足$\exp(\boldsymbol{B})=\boldsymbol{A}$,那么$\boldsymbol{B}$称为矩阵$\boldsymbol{A}$的对数。
但是,按照这种定义,矩阵的对数是不唯一的,哪怕仅仅是限制在实数矩阵范围内也是一样,比如对于$\boldsymbol{A}=\begin{pmatrix}\cos\alpha & -\sin\alpha \\ \sin\alpha & \cos\alpha\end{pmatrix}$,任意一个$(\alpha + 2\pi n)\begin{pmatrix}0 & -1 \\ 1 & 0\end{pmatrix}$都是它的对数,其中$n$是任意整数。
另一种定义是照搬实级数的对数展开式:
\begin{equation}\ln (\boldsymbol{I}+\boldsymbol{A}) = \sum_{n=1}^{\infty}(-1)^{n-1}\frac{\boldsymbol{A}^n}{n}\end{equation}
这个定义简单,而且结果唯一,但是收敛条件仅为$\Vert \boldsymbol{A}\Vert_2 < 1$,其中$\Vert\cdot\Vert_2$为矩阵的2范数(参考《深度学习中的Lipschitz约束:泛化与生成模型》的“矩阵范数”一节)。当约束条件满足时,这样定义出来的对数满足
\begin{equation}\exp(\ln (\boldsymbol{I}+\boldsymbol{A})) = \boldsymbol{I}+\boldsymbol{A}\end{equation}
也就是说,定义是自洽的。
前面矩阵指数讨论的对角化技巧,同样适用于任意通过级数来定义的矩阵函数,比如
\begin{equation}\ln \left(\boldsymbol{I}+\boldsymbol{P}\boldsymbol{\Lambda}^n\boldsymbol{P}^{-1}\right) = \boldsymbol{P}\ln(\boldsymbol{I}+\boldsymbol{\Lambda})\boldsymbol{P}^{-1}\end{equation}
这里$\ln(\boldsymbol{I}+\boldsymbol{\Lambda})=\text{diag}\big(\ln(1+\lambda_1),\dots,\ln(1+\lambda_k)\big)$。
det(exp(A)) = exp(Tr(A)) #
铺了那么久垫,终于可以进入主题了。对于恒等式$\eqref{eq:main}$,如果它是可以对角化的,那么证明不算困难。因为
\begin{equation}\begin{aligned}\text{左端}=&\det(\exp(\boldsymbol{A}))\\
=&\det\big(\boldsymbol{P}\exp(\boldsymbol{\Lambda})\boldsymbol{P}^{-1}\big)\\
=&\det(\boldsymbol{P}) \det(\exp(\boldsymbol{\Lambda})) \underbrace{\det(\boldsymbol{P}^{-1})}_{=1/\det(\boldsymbol{P})}\\
=&\det(\exp(\boldsymbol{\Lambda}))\\
=&e^{\lambda_1 + \dots + \lambda_k}
\end{aligned}\end{equation}
而
\begin{equation}\begin{aligned}\text{右端}=&\exp(\text{Tr}(\boldsymbol{A}))\\
=&\exp(\text{Tr}(\boldsymbol{P}\boldsymbol{\Lambda}\boldsymbol{P}^{-1}))\\
=&\exp(\text{Tr}(\boldsymbol{P}^{-1}\boldsymbol{P}\boldsymbol{\Lambda}))\quad [\text{交换顺序是因为对于方阵}\boldsymbol{A},\boldsymbol{B}\text{,有}\text{Tr}(\boldsymbol{A}\boldsymbol{B})=\text{Tr}(\boldsymbol{B}\boldsymbol{A})]\\
=&\exp(\text{Tr}(\boldsymbol{\Lambda}))\\
=&e^{\lambda_1 + \dots + \lambda_k}
\end{aligned}\end{equation}
如果是不可对角化的矩阵呢?如果能证明全体可对角化矩阵在全体矩阵中稠密,那也可以利用极限来补充剩下部分,但这明显比较繁琐。有没有一气呵成的证明?有!而且非常精妙,它也正是我写这篇文章的主要原因。
这个精妙的证明,是要我们去考虑带参数$t$的
\begin{equation}f(t)=\det(\exp(t\boldsymbol{A}))\label{eq:detexp}\end{equation}
然后我们去求它的导数(这里涉及到行列式的导数,求法请参考《行列式的导数》):
\begin{equation}\begin{aligned}\frac{d}{dt}f(t)=&f(t)\text{Tr}\left(\exp(-t\boldsymbol{A})\underbrace{\frac{d}{dt}\exp(t\boldsymbol{A})}_{=\exp(t\boldsymbol{A})\boldsymbol{A}}\right)\\
=&f(t)\text{Tr}(\boldsymbol{A})\end{aligned}\end{equation}
注意$\text{Tr}(\boldsymbol{A})$只是一个数,所以我们得到了关于$f(t)$的一个常微分方程!!它的解是
\begin{equation}f(t)=C\exp(t\,\text{Tr}(\boldsymbol{A}))\end{equation}
从式$\eqref{eq:detexp}$可以看出$f(0)=1$,从而$C=1$,即$f(t)=\exp(t\,\text{Tr}(\boldsymbol{A}))$,于是我们证明了
\begin{equation}\det(\exp(t\boldsymbol{A}))=\exp(t\,\text{Tr}(\boldsymbol{A}))\end{equation}
取$t=1$,得到恒等式$\eqref{eq:main}$。
是不是很妙?
对$\eqref{eq:main}$两边取对数,并且记$\exp(\boldsymbol{A})=\boldsymbol{B}$,那么我们可以得到它的另一个常见的形式
\begin{equation}\ln\det(\boldsymbol{B}) = \text{Tr}(\ln (\boldsymbol{B}))\end{equation}
这次的赏析就到这里了~谢谢大家阅读。
参考链接:
https://math.stackexchange.com/questions/1487773/the-identity-deta-exptrlna-for-a-general
转载到请包括本文地址:https://www.kexue.fm/archives/6377
更详细的转载事宜请参考:《科学空间FAQ》
如果您还有什么疑惑或建议,欢迎在下方评论区继续讨论。
如果您觉得本文还不错,欢迎分享/打赏本文。打赏并非要从中获得收益,而是希望知道科学空间获得了多少读者的真心关注。当然,如果你无视它,也不会影响你的阅读。再次表示欢迎和感谢!
如果您需要引用本文,请参考:
苏剑林. (Feb. 18, 2019). 《恒等式 det(exp(A)) = exp(Tr(A)) 赏析 》[Blog post]. Retrieved from https://www.kexue.fm/archives/6377
@online{kexuefm-6377,
title={恒等式 det(exp(A)) = exp(Tr(A)) 赏析},
author={苏剑林},
year={2019},
month={Feb},
url={\url{https://www.kexue.fm/archives/6377}},
}
February 19th, 2019
Eq.(6) 第一行的 $\Lambda$ 应去掉 n 次方. 挺有意思的公式欣赏. 另外想起来在梁灿彬的《微分几何与广义相对论》中册的一个关于李群和李代数的附录里也提供了一个类似精简的推导.
感谢细致阅读,已经修正~并且感谢提供参考资料,我去找找看。
February 20th, 2019
其实利用Jordan标准型,可以很容易证明$\det(f(A))=\prod_if(\sigma_i(A))$,其中$\sigma_i(A)$是A的特征值。
关键是我不懂Jordan标准型~(不及格的线性代数学生)
December 16th, 2019
请问矩阵对数函数是否有一种通用的方法求出近似?
我没了解到。
September 18th, 2022
请问“全体可对角化矩阵在全体矩阵中稠密”这是一个事实吗?在什么数域下成立?老师能提供一个参考文献吗?
简单来说,在复数域中,$n$阶方阵可对角化的一个充分条件是有$n$个不同的特征根,所以不可对角化矩阵必然有相同的特征根,我们可以对它做轻微的扰动,使得相同的特征根变为不相同,这就可以对角化了。
最直白的说法就是,从实践角度看,两个浮点数相等的概率为0,也就是说实践意义下根本不存在相同特征根的可能性。
September 14th, 2024
这个等式成立的条件是什么呢,如果当输入矩阵$A = \begin{bmatrix}
1& 0 \\
1& 0
\end{bmatrix}$ 似乎等式就不成立了;
这是恒等式,无条件成立。注意$\exp(A)$按指数级数定义。
对于你提的$A$,容易证明$A^2=A$,所以$A^n=A$,因此
$$\exp(A) = I + A + \frac{1}{2}A^2 + \frac{1}{6}A^3 + \cdots = I + (e-1)A$$
所以
$$\det(\exp(A)) = \det(I + (e-1)A) = e = \exp(\text{Tr}(A))$$
October 8th, 2024
请问这个等式 成立不需要矩阵正定吗?
不需要。