个人写作笔记,如有问题,请不吝赐教!
目录如下:
矩阵之间的关系
相抵:A,B∈Cm×n,A⋍B⟺∃U∈Cm×m,V∈Cn×n,s.t.B=UAV
相似、合同变换都是一种相抵关系。
正规矩阵:A∈Cn×n,AAT=ATA,实正规矩阵即为实数域
单纯矩阵:每个特征值的代数重复度(特征值的重数)和几何重复度(特征值对应的解向量的个数)相等的矩阵,可以相似对角化,又称为简单矩阵。
若当标准形
矩阵多项式
不变因子:史密斯标准形对角线非零元素(对λ矩阵进行初等变换得到的标准形,可看作是特征值)
k阶行列式因子:λ矩阵中全部k阶子式的最大公因式,例如,一阶行列式因子就是矩阵中全部元素的最大公因子,二阶行列式因子就是全面二阶子式中的最大公因子,以此类推)
初等因子:组成不变因子的全部含λ项,即形如(λ−λj)eij,eij=0的式子
若当标准化
若当标准形:
λ10⋮001λ2⋮0001⋱⋯0⋯⋯⋱λn−1⋯00⋮1λn
求取若当标准形:
1.求出全部的初等因子,保证因子次数之和等于矩阵的秩
2.根据每个初等因子,写出对应的若当块,例如初等因子(λ−λi)mi对应的若当块是:
Ji=λi1λi⋱⋱1λi
3.根据这些若当块,组成若当标准形:
J=J1J2⋱Jr
凯莱-哈密顿定理
方阵满足其特征多项式,即f(A)=0
可用于计算方阵的n次幂
矩阵分析应用
矩阵函数
1.对于单纯矩阵
找到一个变换矩阵Q,使得矩阵对角化为B,即:
B=Diag[f(λ1),f(λ2),⋯,f(λn)]=Q−1AQ
矩阵函数定义为:
Q−1f(A)Q=Diag[f(λ1),f(λ2),⋯,f(λn)]⟹f(A)=Q−1Diag[f(λ1),f(λ2),⋯,f(λn)]Q
2.对于亏损矩阵(不能保证代数和几何重复度相等,但是可以保证所有特征向量线性无关的矩阵)
找到一个变换矩阵T,使得矩阵若当标准化为J,即:
J=Diag[f(J1(λ1)),f(J2(λ2)),⋯,f(Jr(λr))]=T−1AT
矩阵函数定义为:
T−1f(A)T=Diag[f(J1(λ1)),f(J2(λ2)),⋯,f(Jr(λr))]⟹f(A)=T−1Diag[f(J1(λ1)),f(J2(λ2)),⋯,f(Jr(λr))]T
矩阵的微积分
定义
矩阵函数对纯量求导
设矩阵 A∈Cm×n,矩阵函数 F(A):Cm×n⟼Cp×q,其全微分满足以下式子:
daijdF(A)=daijdf11daijdf21⋮daijdfp1daijdf12daijdf22⋮daijdfp2⋯⋯⋯daijdf1qdaijdf2q⋮daijdfpq
由此可知,矩阵对纯量的导数与纯量对纯量的导数形式是完全一致的,也有相应的线性性和乘积求导法则,以及嵌套链式运算(不能嵌套函数矩阵)法则,即:
dxd(k1A±k2B)dxd(AB)dxdA(y)=k1dxdA±k2dxdB=dxdAB+AdxdB=dydAdxdy
纯量对矩阵的导数
与矩阵对纯量求导不同,纯量对矩阵(向量)的导数与形式设定有关。设列向量 X∈Cn×1,对于一个向量值函数f(X):Cn×1⟼C,其全微分满足以下式子:
df(X)=i=1∑n∂xi∂fdxi
将式子改写成矩阵的形式,则有:
df(X)=[∂x1∂f∂x2∂f⋯∂xq∂f]dx1dx2⋮dxq=[dx1dx2⋯dxq]∂x1∂f∂x2∂f⋯∂xq∂f
矩阵导数有多种表示形式,常见的如分子求导式或者分母求导式,本文选取的是分子求导式,即梯度形状与梯度向量相同,其人为定义如下:
dXdf(X)=∂x1∂f∂x2∂f⋮∂xq∂fdX=[dx1dx2⋯dxq]
设 A∈Cm×n,X,Y∈Cn×1,则必有:
⎩⎨⎧(dXTdYT)T(dXTdY)TdXTdAX=dXdY=dXdYT=A
纯量对矩阵的求导满足简单的运算法则:
dXd[f(X)±g(X)]dXdf(X)g(X)=dXdf(X)±dXdg(X)=dXdf(X)g(X)+f(X)dXdg(X)
预备知识
为了引入最复杂的矩阵对矩阵的导数,此处补充两个先验的知识:矩阵直积运算和拉直运算。
矩阵直积
矩阵直积是不同空间矩阵的变换运算,引入克罗内克记号(矩阵直积):⊗
若设 A∈Rm×p,B∈Rn×p,X∈Rq×1,记:
A⊗B≜a11Ba21B⋮am1Ba12Ba22B⋮am2B⋯⋯⋯a1pBa2pB⋮ampBmn×pq
矩阵拉直
矩阵拉直是将矩阵矢量化的运算,得到的结果是一个向量。在求导计算中,存在两种常见的中间项,为了简化表达形式,引入矩阵拉直的运算符,记A∈Cm×n为一复值矩阵,定义如下式的运算为矩阵拉直:
AV(A)=a11a21⋮am1a12a22⋮am2⋯⋯⋯a1na2n⋮amn≜a11a12⋮a1na21a22⋮amn
即将矩阵A按行拼接得到一个行向量,再将该向量转置,因此拉直运算输出是一个列向量!!
对于行向量XT,拉直等价于转置,即:
V(XT)=X
重要公式1
矩阵拉直基本上比较抽象,直接运算意义不大,但是有两个公式较为重要,其中一个是多矩阵拉直转为单矩阵拉直公式:
V(XYZ)=(X⊗ZT)V(Y)
该公式的证明并不复杂,直接运算可知,设矩阵:
XYZ=x11x21⋮xm1x12x22⋮xm2⋯⋯⋯a1nx2n⋮xmn∈Cm×n=β1Tβ2T ⋮βnT ∈Cn×p=[γ1γ2⋯γq]∈Cp×q
需要注意的是βiT表示的是矩阵Y的行向量,而不是列向量的转置。计算上式,则有:
XYZ⟹V(XYZ)=i=1∑na1iβiT i=1∑na2iβiT ⋮i=1∑namiβiT [γ1γ2⋯γq]=i=1∑na1iβiTγ1⋮i=1∑na2iβiTγ1i=1∑namiβiTγ1i=1∑na1iβiTγ2⋮i=1∑na2iβiTγ2i=1∑namiβiTγ2⋯⋯⋯i=1∑na1iβiTγq⋮i=1∑na2iβiTγqi=1∑namiβiTγq=i=1∑na1iβiTγ1i=1∑na1iβiTγ2⋮i=1∑na1iβiTγq⋮i=1∑najiβiTγk⋮i=1∑namiβiTγq
而由于:
X⊗ZT(X⊗ZT)V(Y)=a11γ1Ta21γ1T⋮am1γ1Ta11γ1Ta21γ1T⋮am1γ1T⋯⋯⋯a11γ1Ta21γ1T⋮am1γ1T=a11γ1Ta21γ1T⋮am1γ1Ta11γ1Ta21γ1T⋮am1γ1T⋯⋯⋯a11γ1Ta21γ1T⋮am1γ1Tβ1β2⋮βn=i=1∑na1iγ1Tβii=1∑na1iγ1Tβi⋮i=1∑na1iγqTβi⋮i=1∑najiγkTβi⋮i=1∑namiγqTβi
又由于βiTγk为一纯量,因此对转置运算没有影响,有:
βiTγk=γkTβi
上式左右项即可验证是相等的,因此原式得证。
重要公式2
在矩阵对矩阵的导数中,会出现维数为原始维数平方的稀疏矩阵,设A∈Cm×l,B∈Cl×n例如:
dAdA=dATdAT=100010001000000000000000000∣∣∣∣∣∣∣∣∣000000000100010001000000000∣∣∣∣∣∣∣∣∣000000000000000000100010001
使用矩阵拉直表示法,如下形式的计算式得以化简:
dAdA(B⊗Il)=V(Im)VT(BT)
式中,VT(BT)表示按矩阵B列拉直得到的行向量。
重要公式3
设:
B=β1Tβ2T⋮βlT
另一种导数运算中存在的中间项为:
dATdA=dAdAT=100000000000100000000000100∣∣∣∣∣∣∣∣∣010000000000010000000000010∣∣∣∣∣∣∣∣∣001000000000001000000000001
则该项对应的中间项可以化简为:
dATdA(B⊗Im)=Im⊗β1TIm⊗β2T⋮Im⊗βlT≜Wm(B)
其中βiT是矩阵B的各个行向量,则可知上述运算有以下变形形式:
dAdAT(B⊗Im)=Wm(B)(BT⊗Im)dAdAT=WmT(B)
矩阵对矩阵的导数
下面包含矩阵之间、向量之间的导数,直接计算十分繁杂,通过以下几步公式可以简化运算。
∃F∈Cp×q,A∈Cm×n,有:
dAdF=∂A∂f11∂A∂f21⋮∂A∂fn1∂A∂f12∂A∂f22⋮∂A∂fn2⋯⋯⋯∂A∂f1n∂A∂f2n⋮∂A∂fmn≜F⊗dAd
尤其注意,矩阵导数是分子各项对分母求导,这是矩阵导数的规定,而切忌不能是以下的形式:
dAdF≜∂a11∂F∂a21∂F⋮∂an1∂F∂a12∂F∂a22∂F⋮∂an2∂F⋯⋯⋯∂a1n∂F∂a2n∂F⋮∂amn∂F
可见导数的形状为dAdF∈Cmp×nq,相当于原函数形状对微分变量的直积。简记为:
dAdF≜F⊗dAd≜∇AF
当原函数退化为纯量时,矩阵直积退化为向量梯度场:
dAdf≜f⊗dAd≜∇Af
这是一个重要结论,可以用于验证导数求解的正确性。
求导运算法则
矩阵对矩阵求导
设矩阵 A∈Cl×m,B∈Cm×n,W∈Cp×q,同形状的矩阵线性运算之间的导数具有线性性,公式不再赘述。
对于乘积情况的导数,有:
dWp×qdAB=dWdA(B⊗Iq)+(A⊗Ip)dWdB
从公式可以发现,乘积求导法则大体上与纯量函数求导法相似,需要留意的是矩阵直积的脚标,这是因为微分变量W自身在直积时产生的形状拓展。简记口诀为:“交叉相乘”。
矩阵对向量求导
特别地,当微分变量是列向量时,设 A∈Cm×n,B∈Cn×p,X∈Cq×1, f(X) 是一个纯量函数,可以得出以下的求导结论,有:
⎩⎨⎧dXdfXB=B⊗dXdfX+(fXIn⊗Iq)dXdBdXdAB=dXdAB+(A⊗Iq)dXdB
式中,q是列向量的维度。
特别地,当向量 YT∈C1×q 是行向量时,将会有以下形式的计算公式:
⎩⎨⎧dYTdfYB=fYdYTdB+dYTdfYIn(B⊗Iq)dYTdAB=dYTdA(B⊗Iq)+AdYTdB
向量对向量求导
特别地,当函数也退化为向量时,直积部分退化为拉直运算。设 X∈Cm×1, Y,Z∈Cn×1, f(X) 是一个纯量函数,有以下更为简洁的公式:
⎩⎨⎧dXd(Y±Z)=dXdY±dXdZdXd(fXZ)=Z⊗dXdfX+fXV(dXTdZ)dXd(YTZ)=dXdYTZ+dXdZTY
矩阵的逆求导
有了以上线性、乘积求导公式后,可以得到矩阵逆的导数,设有可逆矩阵 A∈Cn×n,微分变量为一矩阵 W∈Cp×q,若已知当前导数 dWdA,则可以得到微分变量对逆的导数是:
dWdA−1=−(A−1⊗Ip)dWdA(A−1⊗Iq)
其推导过程较为简易,根据以下条件即可推导得到:
⎩⎨⎧A−1A=IndWdA−1A=dWdA−1(A⊗Iq)+(A−1⊗Ip)dWdA=0
矩阵的行列式求导
设矩阵B的代数余子式为:
Aij=(−1)i+jMij
其中Mij是矩阵不含第i行和第j列的算术余子式,1≤i≤m,1≤j≤n。矩阵的行列式可以写作:
∣B∣=i=1∑mj=1∑mbijAij
求上式的导数可知,正好为原矩阵B的伴随矩阵,即:
dBd∣B∣=B∗
一个重要公式
若设X∈Cn×1是n维列向量,Y∈Cm×1是m维列向量,A∈Cm×n是n×m维矩阵,则有:
XTAY=i=1∑nj=1∑maijxiyj