此文中的讨论思路整理自杨一龙老师
分块对角化与不变子空间
Jordan分解是谱分解对不可对角化矩阵的扩展,我们首先考虑谱分解的本质:
A=XΛX−1
其本质是,找到一组向量
X=[x1⋯xn]
使得A对它的作用满足
AX=XB
即:A对X的作用可以用X右乘一个列变换B得到,而X的列正好就是这一组向量,因此也就是,A对向量组的作用可以用向量组内部的线性组合来描述
注意这和矩阵乘向量的常规解释是不同的:正常理解Ax是将x的各个分量(行)进行一定的重组得到Ax的分量(行);而矩阵谱分解的理解则是,将X的各个向量成分(列)进行一定的重组得到AX的各个成分
对角化
在对角化即谱分解过程中,我们可以选取出某一组向量X,使得A对这一组向量的列重组正好是一个对角矩阵
Λ=λ1λ2⋱λn
而右乘这个矩阵相当于对每一列分别乘以一个特征值,这意味着A对X的每一列的作用是独立的,结果的每一列仅由X中的对应列组成,与其他列无关
换句话说,我们找到了Rn(为了方便我们用实数来描述,对复数其实是一样的)的一组基x1,⋯,xn,使得A在每一个基向量的方向上分别做独立的伸缩变换,在每个基向量方向上的向量,经过A的作用后,仍然在此方向上
分块对角化?
于是,不可对角化的矩阵在这种描述下就变成了:无法找到使得A在每个向量上都独立作用的一组向量,即无论怎么找这一组向量,总会存在某个xi,使得Axi不止含有xi成分,还含有某个xj成分
那么,在这种情况下,我们是否可以略微降低之前的要求?即,之前我们要求对这组基向量的每一个向量,A的作用都是独立的,那么我们是否可以企图将这组基向量分为若干个最小的组,使得A在每个向量组的作用都是独立的,即**A乘以组内某个基向量的结果只含有这个向量组内的成分**
我们看一个简单的例子:
A=13245768
在标准基e1,⋯,e4上,显然A的作用为
A[e1e2e3e4]=[e1+2e23e1+4e25e3+6e47e3+8e4]
即,A对两个向量组(e1,e2)和(e3,e4)的作用分别是独立的,每个组内的向量的输出仅由自己和同组的其他向量组成
那么此时A的形状是什么呢?正好是分块对角化矩阵,其中每一个块的行列坐标范围对应了一组独立作用的向量,即,如果
A=X[B1B2]X−1
假设其中B1∈Rm×m,B2∈R(n−m)×(n−m),则A在两个向量组(x1,⋯,xm)和(xm+1,⋯,xn)上的作用分别独立
我们知道,亏损的特征值的代数重数严格大于几何重数,而非亏损的特征值的代数重数等于几何重数
如果特征值非亏损,那么我们就可以找到这个特征值的完整的一组特征向量,A在每个特征向量上的作用都是独立的,此时就没有分块对角化的需求
即,产生分块对角化(即向量分为独立的组)的需求当且仅当存在亏损特征值,于是下面我们就要介绍如何通过亏损特征值找到这样的独立组
下面我们先给这样的独立组进行一个更体面的定义
不变子空间
定义(不变子空间) 对矩阵A和子空间V,若
∀v∈V, Av∈V
则称V为A的一个不变子空间
注 显然,对每个特征向量v,span(v)是一个1维的不变子空间
定义(子空间的和、子空间的交) 对子空间M,N,定义
M+N={v+w ∣ v∈M,w∈N}
为子空间的和,同时定义M∩N为子空间的交
定理 子空间的和和交仍然是子空间
定理(容斥原理)
dim(M+N)=dimM+dimN−dim(M∩N)
定义(直和) 如果子空间M,N满足M∩N={0},则称M+N为两个子空间的直和,记为
M+N=M⊕N
注 直和不是一种特殊的运算,它表示的是两个子空间的和与两个子空间本身的一种关系
定理 dim(M+N)=dimM+dimN当且仅当M+N是直和
定义(不变子空间分解) 对A∈Rn×n,如果存在A的不变子空间M,N使
Rn=M⊕N
则称这构成了一个不变子空间分解
当构造出不变子空间分解后,我们就可以找到M和N各一组基,根据直和的性质,这两组基的并就是全空间的一组基,而A在这一组基上的行为就是分块对角矩阵了
因此,Jordan分解的工作就是对每个特征值找到一个或多个不变子空间,这些不变子空间的直和是全空间,每个不变子空间对应了Jordan标准形中的一个Jordan块
高阶基本子空间
先来回顾一下一个矩阵的两个基本子空间的定义:
定义(列空间) R(A)={Ax ∣ x∈Rn}
定义(零空间) N(A)={x ∣ Ax=0}
定理 dimR(A)=rankA, dimN(A)=n−rankA
接下来,让我们定义高阶基本子空间:
定义(高阶列空间) Rk(A)=R(Ak)
定义(高阶零空间) Nk(A)=N(Ak)
这个定义乍一看非常无聊,但下面我们通过几个定理将看到它的作用
定理 Rk+1(A)⊆Rk(A),Nk+1(A)⊇Nk(A)
证明 显然
于是,对任何一个矩阵,其高阶基本子空间构成了一条链:
Rn=R0(A)⊇R1(A)⊇R2(A)⊇⋯
{0}=N0(A)⊆N1(A)⊆N2(A)⊆⋯
定理 若Rk+1(A)=Rk(A),则Rk(A)=Rk+1(A)=⋯
证明 ∀y∈Rk+1(A),∃x∈Rn,y=Ak+1x=A(Akx)
由于Rk+1(A)=Rk(A),∃x′,使Ak+1x′=Akx,于是y=Ak+2x′∈Rk+2(A)
于是Rk+1(A)⊆Rk+2(A),根据已有的包含链定理,Rk+1(A)=Rk+2(A),于是后面的高阶列空间均相等
注 这说明上面的子空间链如果一步相等,则后面将保持恒定
对上面的链取维数,有
n=dimR0(A)≥dimR1(A)≥dimR2(A)≥⋯
0=dimN0(A)≤dimN1(A)≤dimN2(A)≤⋯
但是由于维数只能取[0,n]内的整数值,即上面的链是单调有界的整数链,其结果必然收敛,且收敛后的数值将维持在一个确定的整数
而具有包含关系的子空间在维数相等的时候是相等的
因此,经过有限步迭代,子空间链必然达到稳定,由于维数只有n+1种取值,因此,至多算到Rn(A)就能得到稳定的子空间
定义 Rn(A)=:R∞(A)
事实上,上面的所有讨论只要将符号相反就可以应用到零空间上,即
定理 若Nk+1(A)=Nk(A),则Nk(A)=Nk+1(A)=⋯
定义 Nn(A)=:N∞(A)
我们知道,列空间和零空间的维数之和等于全空间维数,那么列空间和零空间之和是否等于全空间?
答案是不一定,请看以下的例子:
A=[0010]
R(A)=N(A)=span(e1)
换句话说,两个基本子空间只是维数之和为n,并不一定构成直和(可能有交),真正构成直和的是R(AT)和N(A),它们互为正交补
但对于高阶基本子空间,我们会得到更好的性质:
定理 Rn=N∞(A)⊕R∞(A)
证明 假设v∈N∞(A)∩R∞(A),且v=0,则Anv=0,且∃x∈Rn,x=0,v=Anx=0
于是,x∈/N∞(A)
然而,A2nx=Anv=0,矛盾
因此,N∞(A)∩R∞(A)={0},由二者维度之和为n可知全空间是二者直和
定理 N∞(A)和R∞(A)是A的不变子空间
证明是显然的
上面的讨论实际上表明,N∞(A)中的向量“在若干次迭代后终被A杀死”,R∞(A)中的向量“在被A作用任意多次后仍然存活”
广义特征子空间
那么,上面的讨论和特征值、Jordan分解有什么关系呢?
我们知道,特征值出现亏损,是因为其几何重数小于代数重数,换句话说,其特征子空间N(λI−A)的维数不够
这直接导致,所有特征值的特征子空间的和的维数不到全空间的维数,于是全空间中有一些维是不属于任何特征子空间的,也就是用特征向量无法组成全空间的一组基
但实际上,对于亏损特征值而言,它存在一个潜在的维度等于代数重数的对应的子空间,这就是广义特征子空间
我们先对特征值0的情况进行讨论
根据上面的定理,Rn=N∞(A)⊕R∞(A)是一个不变子空间分解
我们可以从N∞(A)和R∞(A)中各取一组基,两基取并得到一组全空间的基:
X=[x1⋯xn]
于是A在此基上的表现是分块对角的:
A=X[ANAR]X−1
定理 在上面的分解中AN幂零,AR可逆
证明 对上面的分解取n次幂,则
An=X[ANnARn]X−1
由于X中属于N∞的那部分在An的作用下归零,可知ANn=O
又由于任何R∞中的非零向量不可能被A乘后归零(否则它们属于N∞),知AR可逆
定理 幂零矩阵只有零特征值
证明 幂零矩阵的所有特征值在若干次幂后皆归零
定理 dimN∞(A)等于A中特征值0的代数重数
证明
PA(λ)=det(λI−A)=det[λI−ANλI−AR]=λdimN∞(A)PAR(λ)
而由AR可逆,知λ不整除PAR(λ),于是代数重数为dimN∞(A)
于是,我们现在对特征值0找到了一个维度等于其代数重数的子空间,这对其他特征值也是类似的
定义(广义特征子空间) 矩阵A对特征值λ0的广义特征子空间定义为N∞(A−λ0I)
定理 广义特征子空间的维数是特征值的代数重数
定理 设λ=μ,则N∞(A−λI)⊆R∞(A−μI)
证明 设
A−μI=X[AN,μAR,μ]X−1
则
A−λI=X[AN,μ−(λ−μ)IAR,μ−(λ−μ)I]X−1
由于AN,μ特征值全零,于是AN,μ−(λ−μ)I特征值全非零,于是此矩阵对X的前半段是可逆的,其零空间只能出现在后半段中
推论 不同特征值的广义特征子空间交为零
根据广义特征子空间的维数就是代数重数,而代数重数之和为n,我们可知:
推论 所有特征值的广义特征子空间的直和是全空间
同时,我们有
定理 广义特征子空间是A的不变子空间
证明
∀x∈N∞(A−λI), (A−λI)nAx=A(A−λI)nx=0
这利用了同一个矩阵的多项式之间是可交换的
推论 A的各个特征值(不计重数)的广义特征子空间构成了全空间的一个不变子空间分解
于是,我们现在已经可以得到一组由各个特征值的广义特征子空间的基拼成的全空间的基X,使得
A=XAλ1Aλ2⋱AλsX−1
其中每个块Aλi仅有λi特征值,块大小为其代数重数
接下来只需要考虑如何寻找对应的X,使每个Aλi呈现出一个或多个Jordan块的形状了
Jordan链
我们仍然考虑只有特征值0的情况,即对幂零矩阵A,显然其广义特征子空间是全空间
我们求从N1(A)到N∞(A)的每一级子空间的维数,假设n=8,得到如下的结果:
N(A) |
N(A2) |
N(A3) |
N(A4) |
3 |
5 |
7 |
8 |
则N∞(A)=N(A4)
由于N(A4)⊇N(A3),且其维度差1,我们可以从N(A4)中找到一个向量x1,使得其不属于N(A3)
那么,容易证明
Ax1∈N(A3), Ax1∈/N(A2)
A2x1∈N(A2), A2x1∈/N(A)
A3x1∈N(A), A3x1=0
于是,我们在上面的子空间里找到了一条链:
子空间 |
N(A) |
N(A2) |
N(A3) |
N(A4) |
维数 |
3 |
5 |
7 |
8 |
链1 |
A3x1 |
A2x1 |
Ax1 |
x1 |
注意,这里每个子空间下面写的向量都是属于这个子空间但不属于其左侧的子空间的
此时,Ax1是一个属于N(A3)但不属于N(A2)的向量,但由于前者比后者多两维,我们还应该能找到一个同样属于前者不属于后者,且和Ax1线性无关的向量x2,这个向量又带来了一条链:
子空间 |
N(A) |
N(A2) |
N(A3) |
N(A4) |
维数 |
3 |
5 |
7 |
8 |
链1 |
A3x1 |
A2x1 |
Ax1 |
x1 |
链2 |
A2x2 |
Ax2 |
x2 |
|
此时,子空间N(A)仍然存在一个未被定义的维度,我们只需要找到一个与A3x1和A2x2都线性无关的向量x3即可:
子空间 |
N(A) |
N(A2) |
N(A3) |
N(A4) |
维数 |
3 |
5 |
7 |
8 |
链1 |
A3x1 |
A2x1 |
Ax1 |
x1 |
链2 |
A2x2 |
Ax2 |
x2 |
|
链3 |
x3 |
|
|
|
至此,我们找到了三条Jordan链,这三条Jordan链满足:每个子空间和其所有左侧子空间下面标记的所有向量共同构成了这个子空间的一组基
例如,A3x1,A2x2,x3构成了N(A)的一组基,A3x1,A2x1,A2x2,Ax2,x3构成了N(A2)的一组基,以此类推,表格中的8个向量共同构成了全空间的一组基
如果我们令
X=[A3x1A2x1Ax1x1A2x2Ax2x2x3]
可以证明,上面所有向量全部都是线性无关的,于是
AX=[0A3x1A2x1Ax10A2x2Ax20]=X0101010010100
于是,我们将A分解为了三个Jordan块,这三个Jordan块刚好对应了之前找到的三条Jordan链,它们的大小对应Jordan链的长度(分别为4,3,1)
我们已经发现,找到所有Jordan链的方法为:
- 逐步计算所有N(Ak),直到得到N∞(A)
- 找到上面计算的每个子空间的维数
- 从最后一个子空间开始,在其中找到尽可能多的不在倒数第二个子空间里且线性无关的向量(这样的向量的数量是倒数第二个子空间到最后一个子空间的维度的增量)
- 将这样的向量反复乘A,填写到前面的子空间中
- 找到最后一个已经填充的向量数量小于此子空间和前一个子空间维数差的子空间,将这个维数差剩余的部分用线性无关的向量补齐
- 回第4步,直到每一个子空间的每一个增量维都已被向量填充
注 这样的算法能够成立是需要一定条件的,例如每一个子空间相比前一个子空间的维度增量一定是单调不增的数列,但这也容易证明,这里略去
下面我们就可以把寻找Jordan链的方法推广到特征值为λj的情况了:
- 逐步计算所有N((A−λjI)k),直到得到N∞(A−λjI)
- 找到上面计算的每个子空间的维数
- 从最后一个子空间开始,在其中找到尽可能多的不在倒数第二个子空间里且线性无关的向量(这样的向量的数量是倒数第二个子空间到最后一个子空间的维度的增量)
- 将这样的向量反复乘A−λjI,填写到前面的子空间中
- 找到最后一个已经填充的向量数量小于此子空间和前一个子空间维数差的子空间,将这个维数差剩余的部分用线性无关的向量补齐
- 回第4步,直到每一个子空间的每一个增量维都已被向量填充