此文中的讨论思路整理自杨一龙老师

分块对角化与不变子空间

Jordan分解谱分解对不可对角化矩阵的扩展,我们首先考虑谱分解的本质:

A=XΛX1\mathbf A=\mathbf{X\Lambda X}^{-1}

其本质是,找到一组向量

X=[x1xn]\mathbf X=\begin{bmatrix}\mathbf x_1&\cdots&\mathbf x_n\end{bmatrix}

使得A\mathbf A对它的作用满足

AX=XB\mathbf {AX}=\mathbf {XB}

即:A\mathbf AX\mathbf X的作用可以用X\mathbf X右乘一个列变换B\mathbf B得到,而X\mathbf X的列正好就是这一组向量,因此也就是,A\mathbf A对向量组的作用可以用向量组内部的线性组合来描述

注意这和矩阵乘向量的常规解释是不同的:正常理解Ax\mathbf {Ax}是将x\mathbf x的各个分量(行)进行一定的重组得到Ax\mathbf {Ax}的分量(行);而矩阵谱分解的理解则是,将X\mathbf X的各个向量成分(列)进行一定的重组得到AX\mathbf {AX}的各个成分

对角化

对角化谱分解过程中,我们可以选取出某一组向量X\mathbf X,使得A\mathbf A对这一组向量的列重组正好是一个对角矩阵

Λ=[λ1λ2λn]\mathbf \Lambda=\begin{bmatrix}\lambda_1\\&\lambda_2\\&&\ddots\\&&&\lambda_n\end{bmatrix}

而右乘这个矩阵相当于对每一列分别乘以一个特征值,这意味着A\mathbf AX\mathbf X的每一列的作用是独立的,结果的每一列仅由X\mathbf X中的对应列组成,与其他列无关

换句话说,我们找到了Rn\mathbb R^n(为了方便我们用实数来描述,对复数其实是一样的)的一组基x1,,xn\mathbf x_1,\cdots,\mathbf x_n,使得A\mathbf A在每一个基向量的方向上分别做独立的伸缩变换,在每个基向量方向上的向量,经过A\mathbf A的作用后,仍然在此方向上

分块对角化?

于是,不可对角化的矩阵在这种描述下就变成了:无法找到使得A\mathbf A在每个向量上都独立作用的一组向量,即无论怎么找这一组向量,总会存在某个xi\mathbf x_i,使得Axi\mathbf {Ax}_i不止含有xi\mathbf x_i成分,还含有某个xj\mathbf x_j成分

那么,在这种情况下,我们是否可以略微降低之前的要求?即,之前我们要求对这组基向量的每一个向量A\mathbf A的作用都是独立的,那么我们是否可以企图将这组基向量分为若干个最小的,使得A\mathbf A每个向量组的作用都是独立的,即**A\mathbf{A}乘以组内某个基向量的结果只含有这个向量组内的成分**

我们看一个简单的例子:

A=[12345678]\mathbf A=\begin{bmatrix}1&2\\3&4\\&&5&6\\&&7&8\end{bmatrix}

在标准基e1,,e4\mathbf e_1,\cdots,\mathbf e_4上,显然A\mathbf A的作用为

A[e1e2e3e4]=[e1+2e23e1+4e25e3+6e47e3+8e4]\mathbf A\begin{bmatrix}\mathbf e_1&\mathbf e_2&\mathbf e_3&\mathbf e_4\end{bmatrix}=\begin{bmatrix}\mathbf e_1+2\mathbf e_2&3\mathbf e_1+4\mathbf e_2&5\mathbf e_3+6\mathbf e_4&7\mathbf e_3+8\mathbf e_4\end{bmatrix}

即,A\mathbf A对两个向量组(e1,e2)(\mathbf e_1,\mathbf e_2)(e3,e4)(\mathbf e_3,\mathbf e_4)的作用分别是独立的,每个组内的向量的输出仅由自己和同组的其他向量组成

那么此时A\mathbf A的形状是什么呢?正好是分块对角化矩阵,其中每一个的行列坐标范围对应了一组独立作用的向量,即,如果

A=X[B1B2]X1\mathbf A=\mathbf X\begin{bmatrix}\mathbf B_1\\&\mathbf B_2\end{bmatrix}\mathbf X^{-1}

假设其中B1Rm×m,B2R(nm)×(nm)\mathbf B_1\in\mathbb R^{m\times m},\mathbf B_2\in\mathbb R^{(n-m)\times(n-m)},则A\mathbf A在两个向量组(x1,,xm)(\mathbf x_1,\cdots,\mathbf x_m)(xm+1,,xn)(\mathbf x_{m+1},\cdots,\mathbf x_n)上的作用分别独立

我们知道,亏损的特征值的代数重数严格大于几何重数,而非亏损的特征值的代数重数等于几何重数

如果特征值非亏损,那么我们就可以找到这个特征值的完整的一组特征向量,A\mathbf A在每个特征向量上的作用都是独立的,此时就没有分块对角化的需求

即,产生分块对角化(即向量分为独立的组)的需求当且仅当存在亏损特征值,于是下面我们就要介绍如何通过亏损特征值找到这样的独立组

下面我们先给这样的独立组进行一个更体面的定义

不变子空间

定义(不变子空间) 对矩阵A\mathbf A和子空间V\mathcal V,若

vV, AvV\forall \mathbf v\in\mathcal V,\ \mathbf{Av}\in\mathcal V

则称V\mathcal VA\mathbf A的一个不变子空间

显然,对每个特征向量v\mathbf vspan(v){\rm span}(\mathbf v)是一个11维的不变子空间

定义(子空间的和、子空间的交) 对子空间M,N\mathcal M,\mathcal N,定义

M+N={v+w  vM,wN}\mathcal M+\mathcal N=\{\mathbf v+\mathbf w\ |\ \mathbf v\in\mathcal M,\mathbf w\in\mathcal N\}

为子空间的,同时定义MN\mathcal M\cap\mathcal N为子空间的

定理 子空间的仍然是子空间

定理(容斥原理)

dim(M+N)=dimM+dimNdim(MN)\dim(\mathcal M+\mathcal N)=\dim\mathcal M+\dim\mathcal N-\dim(\mathcal M\cap\mathcal N)

定义(直和) 如果子空间M,N\mathcal M,\mathcal N满足MN={0}\mathcal M\cap\mathcal N=\{\mathbf 0\},则称M+N\mathcal M+\mathcal N为两个子空间的直和,记为

M+N=MN\mathcal M+\mathcal N=\mathcal M\oplus\mathcal N

直和不是一种特殊的运算,它表示的是两个子空间的和与两个子空间本身的一种关系

定理 dim(M+N)=dimM+dimN\dim(\mathcal M+\mathcal N)=\dim\mathcal M+\dim\mathcal N当且仅当M+N\mathcal M+\mathcal N是直和

定义(不变子空间分解)ARn×n\mathbf A\in\mathbb R^{n\times n},如果存在A\mathbf A的不变子空间M,N\mathcal M,\mathcal N使

Rn=MN\mathbb R^{n}=\mathcal M\oplus\mathcal N

则称这构成了一个不变子空间分解

当构造出不变子空间分解后,我们就可以找到M\mathcal MN\mathcal N各一组基,根据直和的性质,这两组基的并就是全空间的一组基,而A\mathbf A在这一组基上的行为就是分块对角矩阵了

因此,Jordan分解的工作就是对每个特征值找到一个或多个不变子空间,这些不变子空间的直和是全空间,每个不变子空间对应了Jordan标准形中的一个Jordan块

高阶基本子空间

先来回顾一下一个矩阵的两个基本子空间的定义:

定义(列空间) R(A)={Ax  xRn}\mathcal R(\mathbf A)=\{\mathbf{Ax}\ |\ \mathbf x\in\mathbb R^n\}

定义(零空间) N(A)={x  Ax=0}\mathcal N(\mathbf A)=\{\mathbf{x}\ |\ \mathbf{Ax}=\mathbf 0\}

定理 dimR(A)=rankA, dimN(A)=nrankA\dim\mathcal R(\mathbf A)={\rm rank}\mathbf A,\ \dim\mathcal N(\mathbf A)=n-{\rm rank}\mathbf A


接下来,让我们定义高阶基本子空间

定义(高阶列空间) Rk(A)=R(Ak)\mathcal R_k(\mathbf A)=\mathcal R(\mathbf A^k)

定义(高阶零空间) Nk(A)=N(Ak)\mathcal N_k(\mathbf A)=\mathcal N(\mathbf A^k)

这个定义乍一看非常无聊,但下面我们通过几个定理将看到它的作用


定理 Rk+1(A)Rk(A)\mathcal R_{k+1}(\mathbf A)\subseteq \mathcal R_{k}(\mathbf A)Nk+1(A)Nk(A)\mathcal N_{k+1}(\mathbf A)\supseteq \mathcal N_{k}(\mathbf A)

证明 显然

于是,对任何一个矩阵,其高阶基本子空间构成了一条链:

Rn=R0(A)R1(A)R2(A)\mathbb R^{n}=\mathcal R_{0}(\mathbf A)\supseteq \mathcal R_{1}(\mathbf A)\supseteq \mathcal R_{2}(\mathbf A)\supseteq\cdots

{0}=N0(A)N1(A)N2(A)\{\mathbf 0\}=\mathcal N_{0}(\mathbf A)\subseteq \mathcal N_{1}(\mathbf A)\subseteq \mathcal N_{2}(\mathbf A)\subseteq\cdots

定理Rk+1(A)=Rk(A)\mathcal R_{k+1}(\mathbf A)=\mathcal R_k(\mathbf A),则Rk(A)=Rk+1(A)=\mathcal R_k(\mathbf A)=\mathcal R_{k+1}(\mathbf A)=\cdots

证明 yRk+1(A)\forall \mathbf y \in \mathcal R_{k+1}(\mathbf A)xRn\exists\mathbf x\in\mathbb R^{n}y=Ak+1x=A(Akx)\mathbf y=\mathbf{A}^{k+1}\mathbf x=\mathbf A(\mathbf A^{k}\mathbf x)

由于Rk+1(A)=Rk(A)\mathcal R_{k+1}(\mathbf A)=\mathcal R_k(\mathbf A)x\exists\mathbf x',使Ak+1x=Akx\mathbf A^{k+1}\mathbf x'=\mathbf A^k\mathbf x,于是y=Ak+2xRk+2(A)\mathbf y=\mathbf A^{k+2}\mathbf x'\in\mathcal R_{k+2}(\mathbf A)

于是Rk+1(A)Rk+2(A)\mathcal R_{k+1}(\mathbf A)\subseteq\mathcal R_{k+2}(\mathbf A),根据已有的包含链定理,Rk+1(A)=Rk+2(A)\mathcal R_{k+1}(\mathbf A)=\mathcal R_{k+2}(\mathbf A),于是后面的高阶列空间均相等

这说明上面的子空间链如果一步相等,则后面将保持恒定

对上面的链取维数,有

n=dimR0(A)dimR1(A)dimR2(A)n=\dim\mathcal R_{0}(\mathbf A)\geq \dim\mathcal R_{1}(\mathbf A)\geq \dim\mathcal R_{2}(\mathbf A)\geq\cdots

0=dimN0(A)dimN1(A)dimN2(A)0=\dim\mathcal N_{0}(\mathbf A)\leq \dim\mathcal N_{1}(\mathbf A)\leq \dim\mathcal N_{2}(\mathbf A)\leq\cdots

但是由于维数只能取[0,n][0,n]内的整数值,即上面的链是单调有界的整数链,其结果必然收敛,且收敛后的数值将维持在一个确定的整数

而具有包含关系的子空间在维数相等的时候是相等的

因此,经过有限步迭代,子空间链必然达到稳定,由于维数只有n+1n+1种取值,因此,至多算到Rn(A)\mathcal R_{n}(\mathbf A)就能得到稳定的子空间

定义 Rn(A)=:R(A)\mathcal R_{n}(\mathbf A)=:\mathcal R_{\infty}(\mathbf A)

事实上,上面的所有讨论只要将符号相反就可以应用到零空间上,即

定理Nk+1(A)=Nk(A)\mathcal N_{k+1}(\mathbf A)=\mathcal N_k(\mathbf A),则Nk(A)=Nk+1(A)=\mathcal N_k(\mathbf A)=\mathcal N_{k+1}(\mathbf A)=\cdots

定义 Nn(A)=:N(A)\mathcal N_{n}(\mathbf A)=:\mathcal N_{\infty}(\mathbf A)


我们知道,列空间和零空间的维数之和等于全空间维数,那么列空间和零空间之和是否等于全空间?

答案是不一定,请看以下的例子:

A=[0100]\mathbf A=\begin{bmatrix}0&1\\0&0\end{bmatrix}

R(A)=N(A)=span(e1)\mathcal R(\mathbf A)=\mathcal N(\mathbf A)={\rm span}(\mathbf e_1)

换句话说,两个基本子空间只是维数之和为nn,并不一定构成直和(可能有交),真正构成直和的是R(AT)\mathcal R(\mathbf A^T)N(A)\mathcal N(\mathbf A),它们互为正交补

但对于高阶基本子空间,我们会得到更好的性质:

定理 Rn=N(A)R(A)\mathbb R^n=\mathcal N_{\infty}(\mathbf A)\oplus \mathcal R_{\infty}(\mathbf A)

证明 假设vN(A)R(A)\mathbf v\in\mathcal N_{\infty}(\mathbf A)\cap \mathcal R_{\infty}(\mathbf A),且v0\mathbf v\neq\mathbf 0,则Anv=0\mathbf A^n\mathbf v=\mathbf 0,且xRn\exists \mathbf x\in\mathbb R^nx0\mathbf x\neq\mathbf 0v=Anx0\mathbf v=\mathbf A^n\mathbf x\neq\mathbf 0

于是,xN(A)\mathbf x\notin\mathcal N_{\infty}(\mathbf A)

然而,A2nx=Anv=0\mathbf A^{2n}\mathbf x=\mathbf A^{n}\mathbf v=\mathbf 0,矛盾

因此,N(A)R(A)={0}\mathcal N_{\infty}(\mathbf A)\cap \mathcal R_{\infty}(\mathbf A)=\{\mathbf 0\},由二者维度之和为nn可知全空间是二者直和

定理 N(A)\mathcal N_{\infty}(\mathbf A)R(A)\mathcal R_{\infty}(\mathbf A)A\mathbf A的不变子空间

证明是显然的

上面的讨论实际上表明,N(A)\mathcal N_{\infty}(\mathbf A)中的向量“在若干次迭代后终被A\mathbf A杀死”,R(A)\mathcal R_{\infty}(\mathbf A)中的向量“在被A\mathbf A作用任意多次后仍然存活”

广义特征子空间

那么,上面的讨论和特征值、Jordan分解有什么关系呢?

我们知道,特征值出现亏损,是因为其几何重数小于代数重数,换句话说,其特征子空间N(λIA)\mathcal N(\lambda\mathbf I-\mathbf A)的维数不够

这直接导致,所有特征值的特征子空间的的维数不到全空间的维数,于是全空间中有一些维是不属于任何特征子空间的,也就是用特征向量无法组成全空间的一组基

但实际上,对于亏损特征值而言,它存在一个潜在的维度等于代数重数的对应的子空间,这就是广义特征子空间

我们先对特征值00的情况进行讨论

根据上面的定理,Rn=N(A)R(A)\mathbb R^n=\mathcal N_{\infty}(\mathbf A)\oplus \mathcal R_{\infty}(\mathbf A)是一个不变子空间分解

我们可以从N(A)\mathcal N_{\infty}(\mathbf A)R(A)\mathcal R_{\infty}(\mathbf A)中各取一组基,两基取并得到一组全空间的基:

X=[x1xn]\mathbf X=\begin{bmatrix}\mathbf x_1&\cdots&\mathbf x_n\end{bmatrix}

于是A\mathbf A在此基上的表现是分块对角的:

A=X[ANAR]X1\mathbf A=\mathbf X\begin{bmatrix}\mathbf A_N\\&\mathbf A_R\end{bmatrix}\mathbf X^{-1}

定理 在上面的分解中AN\mathbf A_N幂零,AR\mathbf A_R可逆

证明 对上面的分解取nn次幂,则

An=X[ANnARn]X1\mathbf A^n=\mathbf X\begin{bmatrix}\mathbf A_N^n\\&\mathbf A_R^n\end{bmatrix}\mathbf X^{-1}

由于X\mathbf X中属于N\mathcal N_\infty的那部分在An\mathbf A^n的作用下归零,可知ANn=O\mathbf A_N^n=\mathbf O

又由于任何R\mathcal R_\infty中的非零向量不可能被A\mathbf A乘后归零(否则它们属于N\mathcal N_\infty),知AR\mathbf A_R可逆

定理 幂零矩阵只有零特征值

证明 幂零矩阵的所有特征值在若干次幂后皆归零

定理 dimN(A)\dim\mathcal N_\infty(\mathbf A)等于A\mathbf A中特征值00的代数重数

证明

PA(λ)=det(λIA)=det[λIANλIAR]=λdimN(A)PAR(λ)P_\mathbf A(\lambda)=\det(\lambda\mathbf I-\mathbf A)=\det\begin{bmatrix}\lambda\mathbf I-\mathbf A_N\\&\lambda\mathbf I-\mathbf A_R\end{bmatrix}=\lambda^{\dim\mathcal N_\infty(\mathbf A)}P_{\mathbf A_R}(\lambda)

而由AR\mathbf A_R可逆,知λ\lambda不整除PAR(λ)P_{\mathbf A_R}(\lambda),于是代数重数为dimN(A)\dim\mathcal N_\infty(\mathbf A)


于是,我们现在对特征值00找到了一个维度等于其代数重数的子空间,这对其他特征值也是类似的

定义(广义特征子空间) 矩阵A\mathbf A对特征值λ0\lambda_0广义特征子空间定义为N(Aλ0I)\mathcal N_\infty(\mathbf A-\lambda_0\mathbf I)

定理 广义特征子空间的维数是特征值的代数重数

定理λμ\lambda\neq\mu,则N(AλI)R(AμI)\mathcal N_\infty(\mathbf A-\lambda\mathbf I)\subseteq\mathcal R_\infty(\mathbf A-\mu\mathbf I)

证明

AμI=X[AN,μAR,μ]X1\mathbf A-\mu\mathbf I=\mathbf X\begin{bmatrix}\mathbf A_{N,\mu}\\&\mathbf A_{R,\mu}\end{bmatrix}\mathbf X^{-1}

AλI=X[AN,μ(λμ)IAR,μ(λμ)I]X1\mathbf A-\lambda\mathbf I=\mathbf X\begin{bmatrix}\mathbf A_{N,\mu}-(\lambda-\mu)\mathbf I\\&\mathbf A_{R,\mu}-(\lambda-\mu)\mathbf I\end{bmatrix}\mathbf X^{-1}

由于AN,μ\mathbf A_{N,\mu}特征值全零,于是AN,μ(λμ)I\mathbf A_{N,\mu}-(\lambda-\mu)\mathbf I特征值全非零,于是此矩阵对X\mathbf X的前半段是可逆的,其零空间只能出现在后半段中

推论 不同特征值的广义特征子空间交为零

根据广义特征子空间的维数就是代数重数,而代数重数之和为nn,我们可知:

推论 所有特征值的广义特征子空间的直和是全空间

同时,我们有

定理 广义特征子空间是A\mathbf A的不变子空间

证明

xN(AλI), (AλI)nAx=A(AλI)nx=0\forall \mathbf x\in\mathcal N_\infty(\mathbf A-\lambda\mathbf I),\ (\mathbf A-\lambda\mathbf I)^n\mathbf {Ax}=\mathbf A(\mathbf A-\lambda\mathbf I)^n\mathbf x=\mathbf 0

这利用了同一个矩阵的多项式之间是可交换的

推论 A\mathbf A的各个特征值(不计重数)的广义特征子空间构成了全空间的一个不变子空间分解


于是,我们现在已经可以得到一组由各个特征值的广义特征子空间的基拼成的全空间的基X\mathbf X,使得

A=X[Aλ1Aλ2Aλs]X1\mathbf A=\mathbf X\begin{bmatrix}\mathbf A_{\lambda_1}\\&\mathbf A_{\lambda_2}\\&&\ddots\\&&&\mathbf A_{\lambda_s}\end{bmatrix}\mathbf X^{-1}

其中每个块Aλi\mathbf A_{\lambda_i}仅有λi\lambda_i特征值,块大小为其代数重数

接下来只需要考虑如何寻找对应的X\mathbf X,使每个Aλi\mathbf A_{\lambda_i}呈现出一个或多个Jordan块的形状了

Jordan链

我们仍然考虑只有特征值00的情况,即对幂零矩阵A\mathbf A,显然其广义特征子空间是全空间

我们求从N1(A)\mathcal N_1(\mathbf A)N(A)\mathcal N_\infty(\mathbf A)的每一级子空间的维数,假设n=8n=8,得到如下的结果:

N(A)\mathcal N(\mathbf A) N(A2)\mathcal N(\mathbf A^2) N(A3)\mathcal N(\mathbf A^3) N(A4)\mathcal N(\mathbf A^4)
3 5 7 8

N(A)=N(A4)\mathcal N_\infty(\mathbf A)=\mathcal N(\mathbf A^4)

由于N(A4)N(A3)\mathcal N(\mathbf A^4)\supseteq\mathcal N(\mathbf A^3),且其维度差11,我们可以从N(A4)\mathcal N(\mathbf A^4)中找到一个向量x1\mathbf x_1,使得其不属于N(A3)\mathcal N(\mathbf A^3)

那么,容易证明

Ax1N(A3), Ax1N(A2)\mathbf {Ax}_1\in\mathcal N(\mathbf A^3),\ \mathbf {Ax}_1\notin\mathcal N(\mathbf A^2)

A2x1N(A2), A2x1N(A)\mathbf {A}^2\mathbf x_1\in\mathcal N(\mathbf A^2),\ \mathbf {A}^2\mathbf x_1\notin\mathcal N(\mathbf A)

A3x1N(A), A3x10\mathbf {A}^3\mathbf x_1\in\mathcal N(\mathbf A),\ \mathbf {A}^3\mathbf x_1\neq\mathbf 0

于是,我们在上面的子空间里找到了一条链:

子空间 N(A)\mathcal N(\mathbf A) N(A2)\mathcal N(\mathbf A^2) N(A3)\mathcal N(\mathbf A^3) N(A4)\mathcal N(\mathbf A^4)
维数 3 5 7 8
链1 A3x1\mathbf A^3\mathbf x_1 A2x1\mathbf A^2\mathbf x_1 Ax1\mathbf A\mathbf x_1 x1\mathbf x_1

注意,这里每个子空间下面写的向量都是属于这个子空间但不属于其左侧的子空间的

此时,Ax1\mathbf A\mathbf x_1是一个属于N(A3)\mathcal N(\mathbf A^3)但不属于N(A2)\mathcal N(\mathbf A^2)的向量,但由于前者比后者多两维,我们还应该能找到一个同样属于前者不属于后者,且和Ax1\mathbf A\mathbf x_1线性无关的向量x2\mathbf x_2,这个向量又带来了一条链:

子空间 N(A)\mathcal N(\mathbf A) N(A2)\mathcal N(\mathbf A^2) N(A3)\mathcal N(\mathbf A^3) N(A4)\mathcal N(\mathbf A^4)
维数 3 5 7 8
链1 A3x1\mathbf A^3\mathbf x_1 A2x1\mathbf A^2\mathbf x_1 Ax1\mathbf A\mathbf x_1 x1\mathbf x_1
链2 A2x2\mathbf A^2\mathbf x_2 Ax2\mathbf A\mathbf x_2 x2\mathbf x_2

此时,子空间N(A)\mathcal N(\mathbf A)仍然存在一个未被定义的维度,我们只需要找到一个与A3x1\mathbf A^3\mathbf x_1A2x2\mathbf A^2\mathbf x_2都线性无关的向量x3\mathbf x_3即可:

子空间 N(A)\mathcal N(\mathbf A) N(A2)\mathcal N(\mathbf A^2) N(A3)\mathcal N(\mathbf A^3) N(A4)\mathcal N(\mathbf A^4)
维数 3 5 7 8
链1 A3x1\mathbf A^3\mathbf x_1 A2x1\mathbf A^2\mathbf x_1 Ax1\mathbf A\mathbf x_1 x1\mathbf x_1
链2 A2x2\mathbf A^2\mathbf x_2 Ax2\mathbf A\mathbf x_2 x2\mathbf x_2
链3 x3\mathbf x_3

至此,我们找到了三条Jordan链,这三条Jordan链满足:每个子空间和其所有左侧子空间下面标记的所有向量共同构成了这个子空间的一组基

例如,A3x1,A2x2,x3\mathbf A^3\mathbf x_1,\mathbf A^2\mathbf x_2,\mathbf x_3构成了N(A)\mathcal N(\mathbf A)的一组基,A3x1,A2x1,A2x2,Ax2,x3\mathbf A^3\mathbf x_1,\mathbf A^2\mathbf x_1,\mathbf A^2\mathbf x_2,\mathbf A\mathbf x_2,\mathbf x_3构成了N(A2)\mathcal N(\mathbf A^2)的一组基,以此类推,表格中的88个向量共同构成了全空间的一组基

如果我们令

X=[A3x1A2x1Ax1x1A2x2Ax2x2x3]\mathbf X=\begin{bmatrix}\mathbf A^3\mathbf x_1&\mathbf A^2\mathbf x_1&\mathbf A\mathbf x_1&\mathbf x_1&\mathbf A^2\mathbf x_2&\mathbf A\mathbf x_2&\mathbf x_2&\mathbf x_3\end{bmatrix}

可以证明,上面所有向量全部都是线性无关的,于是

AX=[0A3x1A2x1Ax10A2x2Ax20]=X[0101010010100]\mathbf {AX}=\begin{bmatrix}\mathbf0&\mathbf A^3\mathbf x_1&\mathbf A^2\mathbf x_1&\mathbf A\mathbf x_1&\mathbf 0&\mathbf A^2\mathbf x_2&\mathbf A\mathbf x_2&\mathbf 0\end{bmatrix}=\mathbf X\begin{bmatrix}0&1\\&0&1\\&&0&1\\&&&0\\&&&&0&1\\&&&&&0&1\\&&&&&&0\\&&&&&&&0\end{bmatrix}

于是,我们将A\mathbf A分解为了三个Jordan块,这三个Jordan块刚好对应了之前找到的三条Jordan链,它们的大小对应Jordan链的长度(分别为4,3,14,3,1

我们已经发现,找到所有Jordan链的方法为:

  1. 逐步计算所有N(Ak)\mathcal N(\mathbf A^k),直到得到N(A)\mathcal N_\infty(\mathbf A)
  2. 找到上面计算的每个子空间的维数
  3. 从最后一个子空间开始,在其中找到尽可能多的不在倒数第二个子空间里且线性无关的向量(这样的向量的数量是倒数第二个子空间到最后一个子空间的维度的增量)
  4. 将这样的向量反复乘A\mathbf A,填写到前面的子空间中
  5. 找到最后一个已经填充的向量数量小于此子空间和前一个子空间维数差的子空间,将这个维数差剩余的部分用线性无关的向量补齐
  6. 回第4步,直到每一个子空间的每一个增量维都已被向量填充

这样的算法能够成立是需要一定条件的,例如每一个子空间相比前一个子空间的维度增量一定是单调不增的数列,但这也容易证明,这里略去

下面我们就可以把寻找Jordan链的方法推广到特征值为λj\lambda_j的情况了:

  1. 逐步计算所有N((AλjI)k)\mathcal N((\mathbf A-\lambda_j\mathbf I)^k),直到得到N(AλjI)\mathcal N_\infty(\mathbf A-\lambda_j\mathbf I)
  2. 找到上面计算的每个子空间的维数
  3. 从最后一个子空间开始,在其中找到尽可能多的不在倒数第二个子空间里且线性无关的向量(这样的向量的数量是倒数第二个子空间到最后一个子空间的维度的增量)
  4. 将这样的向量反复乘AλjI\mathbf A-\lambda_j\mathbf I,填写到前面的子空间中
  5. 找到最后一个已经填充的向量数量小于此子空间和前一个子空间维数差的子空间,将这个维数差剩余的部分用线性无关的向量补齐
  6. 回第4步,直到每一个子空间的每一个增量维都已被向量填充