深入浅出Jordan标准型(兼博客数学公式渲染测试)

前言

线性代数课上老师讲的JordanJordan标准型晦涩难懂,我在仔细看了席南华和丘维声的课本以后,觉得自己茅塞顿开,JordanJordan标准型的产生其实也是十分有逻辑的。于是写下此文,既是让自己来未来需要的时候能快速回忆有关知识点,又可以给后来者一个浅显的指北。

为什么会有Jordan标准型这个概念?

我们知道,对于一个给定的线性变换,它对应的矩阵并不唯一,而是取决于选定的基。这样,很自然的,我们可能会提出这样一个问题——在一个给定的线性变换对应的矩阵里面,最简单的那一个是什么?JordanJordan标准型的提出正是来回答这个问题。

在开始解决这个问题之前,我们先来清晰一下“简单”的定义。“简单”是一个相当模糊的词语,通常没有明确的定义。在这里,我们将“简单”理解为针对不同的计算场景化成的利于计算的形式可以被认为是该情景下的“简单”形式JordanJordan标准型的提出针对的是方阵的乘方运算,或者说,针对的是方阵的多项式运算。因此这里的“简单形式”指的是这个矩阵应当尽可能被化成(分块)对角形式以便进行乘方运算。因为对于分块对角矩阵,乘方是很容易计算的:

(J1      Js)nk=(J1k      Jsk)n  {\left(\begin{matrix}J_1&\ &\ \\\ &\ddots&\ \\\ &\ &J_s\\\end{matrix}\right)_n^k=\left(\begin{matrix}{J_1}^k&\ &\ \\\ &\ddots&\ \\\ &\ &{J_s}^k\\\end{matrix}\right)_n^\ }_\

由上式的规则可知,对于每一个矩阵块,我们一定也希望它的形式能尽量的利于乘方运算。

怎么“创造”JordanJordan标准型?

创造JordanJordan标准型的过程就是求解下面问题的过程:

任意给定一个确定的线性变换,如何找到其对应的简单分块对角矩阵

请牢记这个问题,在下面我将一步一步的解决这个问题。

Step1:转化为不变子空间

(1.1)我们发现,如果对V上的线性变换A\mathcal{A}能有一个非平凡的A\mathcal{A}-不变子空间UU,那么将UU的一组基(e1,,er)(e_1,\ldots,e_r)扩充成VV的一组基(e1,,er,er+1,,en)(e_1,\ldots,e_r,e_{r+1},\ldots,e_n)后,在这组基下的矩阵A将是分块上三角矩阵:(证明方法:基在A\mathcal{A}作用下的线性表达式)

(A1A0 A2)\left(\begin{matrix}A_1&A_0\\\ &A_2\\\end{matrix}\right)

A1A_1是线性变换A\mathcal{A}UU上的限制。(一下子就把矩阵这么多的位置都变成0了,好耶!)

(1.2)更进一步的,如果W=<er+1,,en>W=<e_{r+1},\ldots,e_n>也是A\mathcal{A}-不变子空间,那么基(e1,,er,er+1,,en)(e_1,\ldots,e_r,e_{r+1},\ldots,e_n)下的矩阵可以更进一步的化为分块对角矩阵:

(A1  A2)\left(\begin{matrix}A_1&\ \\\ &A_2\\\end{matrix}\right)

此时,我们将空间VV拆分成了两个A\mathcal{A}-不变子空间的直和,即V=U WV=U\oplus\ W,使得矩阵A成为分块对角矩阵。(分块对角的模样已经开始显现了!)

(1.3)再进一步的,我们归纳发现,如果空间VV可以被拆分成ssA\mathcal{A}-不变子空间的直和

V=U1 UsV=U_1\oplus\ldots\oplus\ U_s

那么矩阵AA可以写成有ss个块的分块对角矩阵

(J1      Js)  \left(\begin{matrix}J_1&\ &\ \\\ &\ddots&\ \\\ &\ &J_s\\\end{matrix}\right)_\ ^\

至此,寻找AA成为分块对角矩阵的任务被转化为寻找将空间VV拆分成数个A\mathcal{A}-不变子空间的直和的任务

Step2:转化为多项式

(2.1)对于一个确定的线性变换A\mathcal{A},有没有什么办法找到一个非平凡的不变子空间呢?好在我们知道,kerAker\mathcal{A}ImAIm\mathcal{A}都是A\mathcal{A}-不变子空间。更进一步的,对于任意一个多项式f(x)K[x]f\left(x\right)\in K[x]kerf(A)kerf(A)也是A\mathcal{A}-不变子空间。(证明方法:A\mathcal{A}f(A)f(\mathcal{A})可交换)

(2.2)核核分解定理(桥引理)

如果多项式F(x)F(x)可以被分解成两个互素的多项式f(x)f\left(x\right)g(x)g(x)的乘积,那么核空间kerF(A)kerF(\mathcal{A})可以被对应分解为两个不变子核空间kerf(A)kerf\left(\mathcal{A}\right)kerg(A)kerg(A)的直和。

即:

F(x)=f(x)g(x)F\left(x\right)=f\left(x\right)g\left(x\right)

kerF(A)=kerf(A)kerg(A)\Rightarrow kerF\left(\mathcal{A}\right)=kerf\left(\mathcal{A}\right)\oplus kerg(\mathcal{A})

(证明非常重要,且引申了多条重要性质,看课本席P83)

(2.3)分解定理的推广

如果多项式F(x)F(x)可以被分解成s个互素的多项式p1r1(x),,psrs(x)p_1^{r_1}\left(x\right),\ldots,p_s^{r_s}\left(x\right)的乘积,那么核空间kerF(A)kerF(\mathcal{A})可以被对应分解为ss个不变子核空间kerp1r1(A),,kerpsrs(A){kerp}_1^{r_1}\left(\mathcal{A}\right),\ldots,{kerp}_s^{r_s}\left(\mathcal{A}\right)的直和。

即:

F(x)=p1r1(x)psrs(x)F\left(x\right)=p_1^{r_1}\left(x\right)\ldots p_s^{r_s}\left(x\right)

kerF(A)=kerp1r1(A)kerpsrs(A)\Rightarrow kerF\left(\mathcal{A}\right)={kerp}_1^{r_1}\left(\mathcal{A}\right)\oplus\ldots\oplus{kerp}_s^{r_s}\left(\mathcal{A}\right)

(2.4)回归题目,我们希望将将空间VV拆分成数个A\mathcal{A}-不变子空间的直和。

注意到ker(0)=V\ker{\left(0\right)}=V,由分解定理得知如果我们能找到一个多项式F(x)F\left(x\right)使得 F(A)=0F\left(\mathcal{A}\right)=0(我们称这样的F(x)F(x)A\mathbf{A}的一个零化多项式),那么空间VV就可以被表示成核空间的形式V=ker(0)=ker(F(A))V=\ker{\left(0\right)}=\ker{\left(F\left(\mathcal{A}\right)\right)}。此时再由分解定理的推广,F(x)F(x)可以被分解成ss个互素的多项式f1(x),,fs(x)f_1\left(x\right),\ldots,f_s\left(x\right)的乘积,那么核空间kerF(A)=VkerF(\mathcal{A})=V便可以被对应分解为ss个不变子核空间kerf1(A),,kerfs(A){kerf}_1\left(\mathcal{A}\right),\ldots,{kerf}_s\left(\mathcal{A}\right)的直和。

所以,我们找到了一种将空间VV拆分成数个A\mathcal{A}-不变子空间的直和的方法。至此,将空间VV拆分成数个A\mathcal{A}-不变子空间的直和的任务又被转化为找到A\mathcal{A}的零化多项式并对其进行素因子分解的任务。

Step3:A\mathbf{A}的零化多项式

(3.1)CayleyhamiltonCayley-hamilton定理

A\mathcal{A}的特征多项式χA(t)\chi_\mathcal{A}(t)A\mathcal{A}的一个零化多项式。

CayleyhamiltonCayley-hamilton定理让我们有了一个很好的切入点来寻找A\mathcal{A}的零化多项式。

(3.2)A\mathbf{A}的最小多项式

很明显,A\mathcal{A}的零化多项式不唯一,因为一个零化多项式乘上任意一个多项式后仍然是零化多项式。因此抱着一种希望多项式尽可能简单的想法,很自然的,我们希望找到所有A\mathcal{A}的零化多项式中次数最低的那个多项式。又为了能让其具有代表性,我们希望找到所有A\mathcal{A}的零化多项式中次数最低且首一的那个多项式,我们将其称为A\mathcal{A}的最小多项式μA(t)\mu_\mathcal{A}(t)

最小多项式定理告诉我们,A\mathcal{A}的最小多项式μA(t)K[t]\mu_\mathcal{A}(t)\in K[t]A\mathcal{A}的特征多项式χA(t)K[t]\chi_\mathcal{A}(t)\in K[t]KK的代数闭包Kˉ\bar{K}中拥有相同的根(不记重数,根的重数可能不同)。因为一个线性变换的特征多项式的相关内容是很好计算的,最小多项式定理为我们找到最小多项式提供了有力工具。我们通过特征多项式找到A\mathcal{A}的特征值,然后就可以以此找到A\mathcal{A}的最小多项式μA(t)\mu_\mathcal{A}(t)

(3.2)在跑题的边缘将注意力拉回题目,为了完成题目的任务,我们现在已经有了最简单的零化多项式μA(t)\mu_\mathcal{A}(t)了,我们还需要写出对应的矩阵。对于找到的直和分解

V=kerμA(A)V=ker\mu_\mathcal{A}(\mathcal{A})

=kerp1r1(A)kerpsrs(A)={kerp}_1^{r_1}\left(\mathcal{A}\right)\oplus\ldots\oplus{kerp}_s^{r_s}\left(\mathcal{A}\right)

我们需要找到与之对应的分块对角矩阵

(J1      Js)  \left(\begin{matrix}J_1&\ &\ \\\ &\ddots&\ \\\ &\ &J_s\\\end{matrix}\right)_\ ^\

此时,根据多项式的分解情况往下产生了两种不同的路子。

a)如果在给定的域中μA(t)\mu_\mathcal{A}(t)能有计入重数的m(=degμA(t))m(=deg\mu_\mathcal{A}(t))个根,或者换句话说,μA(t)\mu_\mathcal{A}(t)能在给定的域中被分解为一次因子的乘积,即

μA(t)=(tλ1) r1(tλs) rs\mu_\mathcal{A}(t)={(t-\lambda_1)}_\ ^{r_1}\ldots{(t-\lambda_s)}_\ ^{r_s}

V=ker(Aλ1I) r1ker(AλsI) rs\Rightarrow V={ker(\mathcal{A}-\lambda_1I)}_\ ^{r_1}\oplus\ldots\oplus{ker(\mathcal{A}-\lambda_sI)}_\ ^{r_s}

那么进一步将问题归约,我们只要找到A\mathcal{A}在核空间ker(AλiI)riker(A-\lambda_iI) ri上的限制的矩阵表达形式即可。这种形式找到的简单形式叫做(狭义)JordanJordan标准型(也就是目前代数课本上讲的JordanJordan标准型)。

但是,如果给定的域不是代数闭包,上述条件就有很可能不被满足,比如实数域中多项式做素因子分解可能会出现诸如x2+x+1x^2+x+1的非一次因子。

b)为了应对上述不满足的情况,我们需要找到限定条件更加宽松的条件,比如只要求将最小多项式分解为互素的多项式即可:

μA(t)=p1r1(t)psrs(t)\mu_\mathcal{A}(t)=p_1^{r_1}\left(t\right)\ldots p_s^{r_s}\left(t\right)

V=kerp1r1(A)kerpsrs(A)V={kerp}_1^{r_1}\left(\mathcal{A}\right)\oplus\ldots\oplus{kerp}_s^{r_s}\left(\mathcal{A}\right)

同样的,我们可以进一步将问题归约,我们只要找到A\mathcal{A}在素多项式核空间kerpiri(A){kerp}_i^{r_i}\left(\mathcal{A}\right)上的限制的矩阵表达形式FiF_i即可,我们根据后面的知识可知,这样找到的找到的矩阵简单形式被称为有理标准型

总之,到这一步,我们只要再找到A\mathcal{A}ker(AλiI) ri{ker(\mathcal{A}-\lambda_iI)}_\ ^{r_i}或者kerpiri(A){kerp}_i^{r_i}\left(\mathcal{A}\right)上的限制的矩阵表达形式,然后再将各个矩阵块拼成分块对角矩阵即可即可。

我们下面只讨论(狭义)JordanJordan标准型的情况。

Step4:幂零变换的JordanJordan标准型:

(4.1)由核空间的定义可知,线性变换(AλiI) ri{(\mathcal{A}-\lambda_iI)}_\ ^{r_i}在子空间ker(AλiI) ri{ker(\mathcal{A}-\lambda_iI)}_\ ^{r_i}上的限制是0变换,等价说法是,线性变换(AλiI) ri{(\mathcal{A}-\lambda_iI)}_\ ^{r_i}在子空间ker(AλiI) ri{ker(\mathcal{A}-\lambda_iI)}_\ ^{r_i}上的限制是幂零变换,且幂零指数为rir_i

(4.2)幂零变换有一个很特殊的性质:幂零变换可以用来生成子空间。

我们知道,B\mathcal{B}是m维空间WW上的幂零指数为rr的幂零变换,那么对于向量η(/=0)\eta{\left(\mathrlap{\,/}{=}0\right)},一定存在t(r)t(\le r)使得Bt1η/=0\mathcal{B}^{t-1}\eta\mathrlap{\,/}{=}0Btη=0\mathcal{B}^t\eta=0。而且我们还直到这样找到的 Bt1η,Bt2η,\ \mathcal{B}^{t-1}\eta,\mathcal{B}^{t-2}\eta,\ldots,Bη,η\mathcal{B}\eta,\eta线性无关,因此他们可以作为一个子空间的一组基。特别的<Bt1η,Bt2η,,Bη,η>{<\mathcal{B}}^{t-1}\eta,\mathcal{B}^{t-2}\eta,\ldots,\mathcal{B}\eta,\eta>叫做一个B\mathcal{B}-强循环子空间。

更令我们惊喜的是,这个空间有更好的性质——它是一个非平凡的B\mathcal{B}-不变子空间,而且这样找到的矩阵结构相当稳定,B\mathcal{B}<Bt1η,Bt2η,,Bη,η>{<\mathcal{B}}^{t-1}\eta,\mathcal{B}^{t-2}\eta,\ldots,\mathcal{B}\eta,\eta>上的限制还是幂零变换,但是幂零指数变为了tt——这恰好是<Bt1η,Bt2η,,Bη,η>{<\mathcal{B}}^{t-1}\eta,\mathcal{B}^{t-2}\eta,\ldots,\mathcal{B}\eta,\eta>空间的维数!因此,B\mathcal{B}<Bt1η,Bt2η,,Bη,η>{<\mathcal{B}}^{t-1}\eta,\mathcal{B}^{t-2}\eta,\ldots,\mathcal{B}\eta,\eta>上的限制的对应的矩阵表达为

Jt(0)=(0100010010010)J_t\left(0\right) =\begin{pmatrix} 0& 1& 0&\cdots&0\\ & 0& 1& 0&\vdots\\ & & 0& 1&0\\ & & & 0&1\\ & & & &0 \end{pmatrix}

这种结构的稳定性可以让我们放心的将其作为一个基本结构,而且可以证明,这样选取的结构有一个很好的性质——唯一性。具体来说,对于一个给定的幂零变换有且仅有一种这样形式的矩阵表达。剩下的就和我们一直以来的大思路很自然的融洽在一起——能否将一个大空间W分解为这样的不变子空间的直和呢?

(4.3)很幸运地,我们有结论:

B\mathcal{B}是m维空间WW上的幂零指数为r的幂零变换,那么WW可以分解为dimkerBdimker\mathcal{B}B\mathcal{B}-强循环子空间的直和,其中维数为ttB\mathcal{B}-强循环子空间的个数为N(t)=rankBt+1+rankBt12rankBtN\left(t\right)=rank\mathcal{B}^{t+1}+rank\mathcal{B}^{t-1}-2rank\mathcal{B}^t

至此,我们已经得到了所有我们需要的知识,现在只需要将我们的思路整合理顺。

Step5:得到JordanJordan标准型

线性变换(AλiI) ri{(\mathcal{A}-\lambda_iI)}_\ ^{r_i}在子空间ker(AλiI) ri{ker(\mathcal{A}-\lambda_iI)}_\ ^{r_i}上的限制是幂零变换,且幂零指数为rir_i。那么ker(AλiI) ri{ker(\mathcal{A}-\lambda_iI)}_\ ^{r_i}可以分解为dimker(AλiI  )dimker({\mathcal{A}-\lambda_iI}_\ ^\ )个强循环子空间的直和,其中维数为tt的强循环子空间的个数为

N(t)=rank(AλiI  )t+1+rank(AλiI  )t12rank(AλiI  )tN\left(t\right)=rank{({\mathcal{A}-\lambda_iI}_\ ^\ )}^{t+1} \\ +rank{({\mathcal{A}-\lambda_iI}_\ ^\ )}^{t-1}-2rank{({\mathcal{A}-\lambda_iI}_\ ^\ )}^t

那么A\mathcal{A}在维数为t的强循环子空间上的限制的表达矩阵形式为

Jt(λi)=Ji(0)+λiIJ_t(\lambda_i)=J_i\left(0\right)+\lambda_iI

=(λi100λi10λi10λi1λi)=\begin{pmatrix} \lambda_i& 1& 0&\cdots&0\\ & \lambda_i& 1& 0&\vdots\\ & & \lambda_i& 1&0\\ & & & \lambda_i&1\\ & & & &\lambda_i \end{pmatrix}

Jt(λi)J_t(\lambda_i)被称为一个JordanJordan块。

子空间ker(AλiI) ri{ker(\mathcal{A}-\lambda_iI)}_\ ^{r_i}被分解为强循环子空间的直和,那么对应的A\mathcal{A}在子空间ker(AλiI) ri{ker(\mathcal{A}-\lambda_iI)}_\ ^{r_i}上的矩阵可以写成由数个JordanJordan块构成的分块对角的形式

(J1      Js)  λi{\left(\begin{matrix}J_1&\ &\ \\\ &\ddots&\ \\\ &\ &J_s\\\end{matrix}\right)_\ ^\ }_{\lambda_i}

写成具体的数字形式以后,我们可以观察到这个矩阵具有明显特征:

  • 对角线上的元素为λi\lambda_i,更精确的说是A\mathcal{A}的特征多项式χA(t)\chi_\mathcal{A}(t)nn个根(记重数)
  • 平行于对角线且紧贴对角线往上的线上只有0或1
  • 除1.2.描述的位置以外,其余全部元素均为0

至此,A\mathcal{A}ker(AλiI) ri{ker(\mathcal{A}-\lambda_iI)}_\ ^{r_i}上的限制的矩阵表达形式已经被我们找到。而且,这种矩阵形式具有三个特别棒的性质,完美符合我们问题要求:

  • 唯一性:用这种方法寻找的“最简矩阵”具有唯一性,这是我们成功将"最简"这个模糊定义严格化的标志。
  • 稳定性:每一个块都具有相同的结构,说明最终的分块矩阵具有内部结构的稳定性。
  • 简便性:这样的块结构对于乘方运算而言是简便的(证明提示:写成Jt(λi)=Ji(0)+λiIJ_t(\lambda_i)=J_i\left(0\right)+\lambda_iI

倒着回去,再将各个(J1      Js)  λi{\left(\begin{matrix}J_1&\ &\ \\\ &\ddots&\ \\\ &\ &J_s\\\end{matrix}\right)_\ ^\ }_{\lambda_i}矩阵块拼成分块对角矩阵,此时就完成了我们的任务。至此,我们找到了A\mathcal{A}JordanJordan标准型。

补充:JordanJordan标准型相关计算问题

给定矩阵AA,计算其JordanJordan标准型

  1. 计算AA的特征多项式,得到AA的特征值
  2. 计算(AλiI)(\mathcal{A}-\lambda_iI)各幂次的秩
  3. 计算各级JordanJordan块的阶数

JordanJordan块的数学特征汇总:

  • λiJordan\lambda_i-Jordan块的个数等于λi\lambda_i的几何重数
  • λiJordan\lambda_i-Jordan块的总阶数等于λi\lambda_i的代数重数
  • λiJordan\lambda_i-Jordan块的最大阶数等于最小多项式里面(AλiI)(\mathcal{A}-\lambda_iI)的次数

如何理解两个最重要的JordanJordan块个数的计算公式

(以幂零变换B\mathbf{B}为例):

  • JordanJordan块个数:

N=dimkerB=nrankBN=dimker\mathcal{B}=n-rank\mathcal{B}

  • 阶数为ttJordanJordan块个数:

N(t)=rankBt+1+rankBt12rankBtN\left(t\right)=rank\mathcal{B}^{t+1}+rank\mathcal{B}^{t-1}-2rank\mathcal{B}^t

不同阶的JordanJordan块的幂零指数是不同的,tt阶的幂零指数为tt。在B\mathcal{B}的幂次小于等于tt时,每乘方一次,一个JordanJordan块的秩就减1。所以看看rankBt1rank\mathcal{B}^{t-1}rankBtrank\mathcal{B}^t相差多少,这个差值就是大于等于tt阶的JordanJordan块的个数。tt阶的JordanJordan块的个数=大于等于t+1t+1阶的JordanJordan块的个数-大于等于tt阶的JordanJordan块的个数。

计算的时候不要背公式,直接每一步写下大于等于tt阶的JordanJordan块的个数即可。

所以阶数为t的Jordan块个数:N(t)=rankBt+1+rankBt12rankBtN\left(t\right)=rank\mathcal{B}^{t+1}+rank\mathcal{B}^{t-1}-2rank\mathcal{B}^t