高等代数 线性映射(第9章)2 线性映射的矩阵表示,特征值与特征向量,对角化
线性映射这一章,放在整个高等代数里,属于承上启下的位置。前面学了向量空间、基与维数,后面要碰到的二次型、欧氏空间、若尔当标准形,全都绕不开这一章打底的东西。而“线性映射的矩阵表示”“特征值与特征向量”“对角化”这三个标题关键词,实际上说的是同一件事的三个递进层次:先把抽象映射落到具体的矩阵上,再从这个矩阵里提取出它最本质的“骨架”,最后判断这个骨架能不能把整个矩阵彻底撑起来。很多同学学到这儿会觉得突然变难,其实不是内容变难了,而是看问题的角度从“计算”转到了“结构”。这篇文章就把这条线完整捋一遍,既讲清楚每一步背后的道理,也把实操里最容易踩的坑指出来。
1. 线性映射的矩阵表示:为什么非要“给定基”
1.1 抽象映射与具体矩阵之间隔着一层“基”
线性映射本身是一个抽象对象:它把一个向量空间中的每个向量,按照线性规则送到另一个向量空间。比如把平面上的向量绕原点旋转90度,这是一个线性映射,但你要跟别人说清楚这个映射到底是什么,光靠“旋转90度”这句话不够精确——你是顺时针还是逆时针?坐标轴怎么摆的?这些问题不落实,映射就只是一个概念,没法用来计算。
矩阵表示解决的就是这个问题。选定两个向量空间各自的一组基之后,任何一个线性映射都可以用一个矩阵唯一表示。反过来说,给定一个矩阵,在固定基下它也唯一对应一个线性映射。这就是“表示”二字的含义:用矩阵这个具体的、可以运算的对象,去“代表”那个抽象的映射。
有一次我给学生讲到这里,用了这样一个类比:线性映射像一个真实的人,基就是给他拍照片时选的拍摄角度。同一个人的不同角度照片,看起来不一样,但人还是同一个人。矩阵也一样,同一个线性映射在不同基下,写出来的矩阵不一样,但内在的线性映射没有变。这个类比对理解后面的相似矩阵特别有帮助。
1.2 矩阵表示的具体构造过程
设 (V) 是 (n) 维向量空间,基为 (\alpha_1,\alpha_2,\dots,\alpha_n);(W) 是 (m) 维向量空间,基为 (\beta_1,\beta_2,\dots,\beta_m)。线性映射 (\mathcal{A}:V\to W) 的矩阵表示是这样构造的:
对每个 (\alpha_j),看 (\mathcal{A}(\alpha_j)) 在 (W) 的基下的坐标,把坐标写成列向量,然后按 (j) 的顺序排成一排,就得到一个 (m\times n) 矩阵,记作 (A)。这个 (A) 就是映射 (\mathcal{A}) 在给定基下的矩阵表示。
关键在于:第 (j) 列,恰好是 (\mathcal{A}(\alpha_j)) 的坐标。很多同学记不住这个顺序,我提供一个记忆锚点:“先作用基向量,再看坐标,横着排基、竖着排像”。如果你把映射作用在某个向量 (x) 上,先用 (x) 在 (V) 基下的坐标列向量 (X) 左乘 (A),得到的 (AX) 就是 (\mathcal{A}(x)) 在 (W) 基下的坐标。整个过程说白了就是:映射在基上的行为,决定了整个映射在所有向量上的行为——因为线性性保证了你只需要知道基向量去哪儿了,其余向量的像自动由线性组合算出来。
1.3 为什么线性映射的矩阵表示不是唯一的
上一节说了“同一个线性映射在不同基下矩阵不同”,这句话反过来也成立:同一个矩阵在不同基下代表的线性映射未必相同。这就引出一个问题:既然矩阵表示不唯一,那怎么判断两个矩阵是否表示同一个线性映射?
答案是:两个矩阵表示同一个线性映射,当且仅当它们相似。所谓相似,就是存在可逆矩阵 (P),使得 (B=P^{-1}AP)。(P) 的实质是两组基之间的过渡矩阵。这个结论在理论上极其重要,因为它说明“相似”是一类等价关系,把所有矩阵划分成一个个等价类,每一个等价类里的矩阵本质上描述的是同一个映射在不同坐标系下的样子。
实操时同学们常犯一个错误:求过渡矩阵的方向搞反了。设 (V) 有旧基 (\alpha) 和新基 (\alpha'),某个向量在旧基下坐标为 (X),新基下坐标为 (X'),则有 (X=PX'),其中 (P) 的第 (j) 列是新基第 (j) 个向量在旧基下的坐标。相似变换里 (A'=P^{-1}AP) 中的 (P),恰好就是这个从新基到旧基的“坐标翻译器”。方向错了,算出来的矩阵就是对的了,但表现的映射早就不是原来那个了。
实操心得:判断两个矩阵是否相似,先别急着算 (P)。先用不变量做快速筛查:迹是否相等、行列式是否相等、秩是否相等、特征多项式是否一致。这些不相等,一定不相似;都相等,才值得花力气找 (P)。这能省下大量无效计算。
1.4 从矩阵表示自然过渡到特征值问题
有了矩阵表示,线性映射的研究就从“对映射本身思考”变成了“对矩阵进行代数操作”。接下来一个自然的问题是:能不能选一组特别好的基,让这个映射的矩阵表示变得尽量简单?最理想的情况当然是变成对角矩阵——只有对角线上有非零元素,其他全是零,计算方便、结构一目了然。这个问题翻译成矩阵语言,就是在问:一个矩阵在什么条件下相似于对角矩阵?
这恰恰就是特征值和特征向量登场的时刻。要理解为什么,得从“好基”的角度想。如果存在一组基,使得映射在它下面的矩阵是对角矩阵 (\mathrm{diag}(\lambda_1,\dots,\lambda_n)),那么每个基向量 (v_i) 在映射作用下的像,就是它自己乘以 (\lambda_i),即 (\mathcal{A}(v_i)=\lambda_i v_i)。这个方程用矩阵写出来就是 (Av_i=\lambda_i v_i)——这就是特征值和特征向量的定义式。所以,对角化问题本质上就是“找到映射的一组好基,使得每个基向量都仅仅是伸缩,不产生方向变化”。特征向量就是这个意义上的“方向不变”的向量。
2. 特征值与特征向量:怎么看、怎么算、怎么用
2.1 定义和几何直觉
设 (A) 是 (n) 阶方阵,如果存在非零向量 (x) 和数 (\lambda),使得 (Ax=\lambda x),那么称 (\lambda) 是 (A) 的一个特征值,(x) 是 (A) 的属于特征值 (\lambda) 的特征向量。
这里第一个要强调的细节是“非零向量”。零向量当然满足 (A0=\lambda0),但零向量对任何矩阵、任何 (\lambda) 都成立,没有任何区分度,所以定义必须排除它。我给学生的解释是:特征向量的价值在于指出一个“稳定方向”——在这个方向上,矩阵的作用等价于一个数乘操作。如果是零向量,它压根不构成任何方向,自然谈不上稳定。
几何上想:平面上有一个线性变换,把某个方向上的所有向量拉长到原来的两倍,那么这条直线方向上的所有非零向量,都是属于特征值2的特征向量。特征向量并不强调“一个”向量,而强调“一个方向”,整条直线上的向量都是这个方向的特征向量。这就是为什么后来说特征子空间——属于同一个特征值的全部特征向量,加上零向量,恰好构成一个子空间。
2.2 特征值的计算方法:特征多项式
把定义式 (Ax=\lambda x) 改写为 ((A-\lambda I)x=0)。这是一个齐次线性方程组,它有非零解的充要条件是系数矩阵的行列式等于零:
[ \det(A-\lambda I)=0 ]
展开这个行列式,得到关于 (\lambda) 的一个 (n) 次多项式,叫特征多项式。求特征值,本质上就是求这个多项式的根。
三阶以内的矩阵,直接展开行列式求根是可行的。三阶以上,手工算特征多项式就比较痛苦了,这时候要根据矩阵结构巧算:上三角、下三角、对角矩阵的特征值直接就是对角线元素;分块对角矩阵的特征值是各分块特征值的并集;实对称矩阵的特征值一定是实数。先看结构再动手,永远比硬展开行列式高效。
展开二阶行列式有一个常用技巧:(\det\left[\begin{smallmatrix}a-\lambda & b \ c & d-\lambda\end{smallmatrix}\right]=(a-\lambda)(d-\lambda)-bc),装成 (\lambda^2-(a+d)\lambda+(ad-bc)) 的形式,一眼看出迹和行列式的关系。这个关系对 (n) 阶矩阵也成立:特征多项式展开后,(\lambda^{n-1}) 项的系数是 (-\mathrm{tr}(A)),常数项是 ((-1)^n\det(A))。熟练使用这两条,很多题不用展开完整行列式就能出答案。
2.3 特征向量的计算与特征子空间
求出特征值 (\lambda_0) 后,把它代入 ((A-\lambda_0 I)x=0),解这个齐次方程组,得到的基础解系就是属于 (\lambda_0) 的特征向量。所有特征向量加上零向量构成一个子空间,叫特征子空间,记作 (V_{\lambda_0})。
这里有一个几乎所有初学者都会忽略的细节:特征子空间的维数等于 (n-\mathrm{rank}(A-\lambda_0 I)),即齐次方程组基础解系所含解向量的个数。这个维数叫做特征值 (\lambda_0) 的几何重数。而特征值作为特征多项式根的重数,叫代数重数。几何重数和代数重数的关系,是判断对角化最核心的标尺——先记住这句话,第三节再展开讲。
计算时也容易踩坑。解齐次方程组时,自由变量的选取不同,写出的基础解系也不同,但它们张成同一个子空间。有的同学发现自己求出的特征向量和参考答案对不上,就以为自己错了,其实只是自由变量选得不一样。判断特征向量对不对的标准只有一个:代进 (Ax=\lambda x) 验证。
比如矩阵 (A=\begin{bmatrix}3&1\0&2\end{bmatrix}),特征值是3和2。对 (\lambda=3),解 ((A-3I)x=0),即 (\begin{bmatrix}0&1\0&-1\end{bmatrix}x=0),得 (x_2=0),基础解系可取 ((1,0)^T)。验证:(A(1,0)^T=(3,0)^T=3(1,0)^T),正确。这种验算习惯,能拦住至少三成的计算失误。
注意:同一个特征值对应的不同特征向量之和(比如 (v_1+v_2))通常不再是该特征值的特征向量。很多人想当然地以为“特征向量的线性组合还是特征向量”,只有属于同一个特征值时才成立,而且系数不能全为零。跨特征值的特征向量做线性组合,结果往往连特征向量都不是。
2.4 特征值与特征向量的几条关键性质
这些性质做题时经常直接用,放在一起记比较系统:
- 属于不同特征值的特征向量线性无关。这是对角化理论的地基。
- (\mathrm{tr}(A)=\lambda_1+\cdots+\lambda_n),(\det(A)=\lambda_1\cdots\lambda_n)。注意是“计入代数重数”的求和与乘积。
- 若 (Ax=\lambda x),则 (A^k x=\lambda^k x);若 (A) 可逆,则 (A^{-1}x=\lambda^{-1}x)。这条性质在计算高次幂时极其好用。
- (A) 与 (A^T) 有相同的特征多项式,因此特征值相同——但特征向量通常不同。
- (A) 的特征值互异时,特征向量自动构成整个空间的一组基。定理:属于不同特征值的特征向量组合起来仍然线性无关。
第4条我多解释两句,因为很多人在考试里吃过亏。虽然 (A) 和 (A^T) 的特征值相同、代数重数也相同,但几何重数不一定相同,特征向量更是没什么直接关系。想要 (A) 的特征向量,必须老老实实解 ((A-\lambda I)x=0),不能拿 (A^T) 的特征向量偷懒。
3. 对角化:判断条件、实操步骤、典型误区
3.1 对角化的定义和充要条件
一个 (n) 阶矩阵 (A) 可对角化,意思是存在可逆矩阵 (P) 和对角矩阵 (D),使得 (P^{-1}AP=D)。从文章第1节的视角看,这等价于说:存在一组基,使得 (A) 对应的线性映射在这组基下表现为纯伸缩。
对角化的充要条件,最常用的是以下三条:
- 充分条件:(A) 有 (n) 个互异的特征值,则 (A) 一定可对角化。
- 充要条件(几何视角):(A) 的全部特征子空间的维数之和等于 (n)。换句话说,每个特征值的几何重数等于代数重数。
- 充要条件(向量视角):(A) 有 (n) 个线性无关的特征向量。
第三条和前两条是同一个意思的不同说法。实操时最常用的判断流程是:先求特征值。若互异,直接判死可对角化;若有重根,就对每个重根算几何重数,看是不是等于代数重数。
举一个具体的判断过程。设三阶矩阵特征值为 (1,1,2)。代数重数:特征值1是二重根,2是单根。特征值1的几何重数如果是2,则特征子空间维数为2,加上特征值2贡献的1维,总数是3,对角化可行;如果特征值1的几何重数只有1,总数是2,不足3,不可对角化。这个例子建议记牢,它是判断对角化最基本、最常考的场景。
3.2 对角化的完整实操流程
判断出可对角化之后,按以下流程操作:
- 求特征多项式 (\det(A-\lambda I)),解出全部特征值,标注每个的代数重数。
- 对每个特征值,解 ((A-\lambda I)x=0),求基础解系,得到该特征值的一组特征向量。基础解系的个数就是几何重数。
- 把所有特征值对应的基础解系合并。若合并后的向量总数为 (n),则可对角化;否则停止,该矩阵不可对角化。
- 以这 (n) 个特征向量为列,构造矩阵 (P)。
- 写出对角矩阵 (D=\mathrm{diag}(\lambda_1,\dots,\lambda_n)),注意 (D) 的对角元顺序必须与 (P) 的列向量顺序一一对应。
- 验证:(AP=PD),等价于验证 (P^{-1}AP=D)。验证 (AP=PD) 通常计算量更小,因为不需要求逆。
第5步的顺序问题,是实操中最常见的翻车点。(P) 的第一列是特征向量 (v_1),那么 (D) 的第一个对角元就必须是对应的特征值 (\lambda_1)。如果你把特征向量排好序了,却不小心把对角元顺序写错,后面的所有计算全白做,但矩阵本身又没什么“明显错误”,特别容易漏过去。一个稳妥习惯:每次写完 (P) 和 (D),先检查“列与值对应”,再进下一步。
验证 (AP=PD) 这一步我特别强调,因为它能在提交前最后兜底。(AP) 是矩阵乘向量,等于把 (P) 的每一列分别作用一遍;(PD) 则是把 (P) 的每一列乘以对应的特征值。两者相等,说明每一列 (v_i) 确实满足 (Av_i=\lambda_i v_i)。这一步的计算量不大,但能拦住绝大多数粗心错误。
3.3 为什么要对角化:一个计算上的降维打击
很多学生问:“我费这么大劲把矩阵对角化,到底图什么?”答案最典型的一个应用是计算矩阵的幂。
如果 (A=PDP^{-1}),那么 (A^k=PD^kP^{-1})。(D^k) 只需将对角元分别求 (k) 次方,计算量几乎为零。这对大矩阵或者高次幂特别显效。比如需要算某三阶矩阵的100次方,硬算要乘99遍,而对角化后一秒钟出结果。
还有一个更深层的理由是:对角化揭示了矩阵的内在结构。对角矩阵的每个对角元告诉你,在这个方向上矩阵“拉伸”或“压缩”了多少倍。整个系统的长期行为,完全由这些特征值决定。很多实际问题——微分方程组的解、差分方程的收敛性、马尔可夫链的稳态分布——本质全在特征值上。
这里补充一个实际场景方便理解。某地每年有一定比例的农村人口流入城市,同时有一定比例的城市人口回流农村,问多年后城乡人口比例稳定在什么水平。这类问题建模成一个二阶矩阵,然后求特征值和特征向量,稳定状态恰好由最大特征值对应的特征向量决定。所有结论不必逐年递推,只靠一次对角化就能看清。
3.4 不可对角化的情况:重根的特征子空间“缺一维”
不是所有矩阵都可对角化。最经典的反例是 (A=\begin{bmatrix}1&1\0&1\end{bmatrix})。特征值只有1,代数重数为2,但 ((A-I)=\begin{bmatrix}0&1\0&0\end{bmatrix}) 秩为1,几何重数为 (2-1=1)。总共只有1个线性无关的特征向量,不够2个,矩阵不可对角化。
从几何上看,这个矩阵的映射把水平方向变成自己,但同时叠加了一个“剪切”分量,导致方向被扭了一下,特征向量张不满全空间。遇到这种情况,后续在若尔当标准形里会处理,但在本章范围内,只需判断出“不可对角化”并说明理由即可。
我遇到过不少同学,看到特征值全是互异的就兴高采烈开始对角化,看到重根就垂头丧气。实际上重根不等于不可对角化,关键要算几何重数。单位矩阵 (I) 特征值全是1((n) 重根),但每个特征向量都有,任何非零向量都是特征向量,几何重数等于代数重数等于 (n),极易对角化。可见重根与可对角化之间没有任何直接的否定关系。
实操心得:判断可对角化时,先求特征多项式并因式分解,把代数重数标在括号里;然后对每个特征值算一次 (\mathrm{rank}(A-\lambda I)),用 (n) 减去它得到几何重数。这个“代数重数 vs 几何重数”的对比表写出来,可对角化与否一望即知。比空想强百倍。
4. 一个完整的实操案例:从特征值到对角化全流程
4.1 题目与第一步:算出特征值
为了把前面所有流程走一遍,选一个不算太简单的三阶矩阵:
[ A=\begin{bmatrix} 4 & 1 & 0 \ 1 & 3 & 0 \ 0 & 0 & 2 \end{bmatrix} ]
先写特征多项式:
[ \det(A-\lambda I)=\begin{vmatrix} 4-\lambda & 1 & 0 \ 1 & 3-\lambda & 0 \ 0 & 0 & 2-\lambda \end{vmatrix} ]
因为第三行第三列只有一个非零元,按第三行展开:
[ \det(A-\lambda I)=(2-\lambda)\begin{vmatrix} 4-\lambda & 1 \ 1 & 3-\lambda \end{vmatrix} ]
其中二阶行列式展开为:
[ (4-\lambda)(3-\lambda)-1=\lambda^2-7\lambda+11 ]
所以特征多项式是:
[ \det(A-\lambda I)=(2-\lambda)(\lambda^2-7\lambda+11) ]
注意一下这个二阶部分,((4-\lambda)(3-\lambda)-1=\lambda^2-7\lambda+11),它的判别式是 (49-44=5>0),所以确实有两个实根。于是特征值为:
[ \lambda_1=2,\quad \lambda_2=\frac{7+\sqrt5}{2},\quad \lambda_3=\frac{7-\sqrt5}{2} ]
三个特征值互异,所以立刻可以判断:该矩阵可对角化。这里就体现了“先看互异,再算重数”的效率——不需要额外做任何计算。
4.2 求每个特征值的特征向量
对 (\lambda_1=2),计算 (A-2I):
[ A-2I=\begin{bmatrix} 2 & 1 & 0 \ 1 & 1 & 0 \ 0 & 0 & 0 \end{bmatrix} ]
解方程组:
[ \begin{cases} 2x_1+x_2=0 \ x_1+x_2=0 \end{cases} ]
这个方程组有冗余,实际上两个方程给出同一个关系 (x_1+x_2=0)(第一个方程也等价于 (2x_1+x_2=0),代入消元后和第二个一致)。取 (x_2=1),则 (x_1=-1),(x_3) 自由。基础解系为:
[ v_1=(-1,1,0)^T ]
等等,这里要检查一下。(x_3) 是自由变量,那应该还有另一个基础解系向量。实际上第三个变量完全自由,基础解系应该有两个向量:令 (x_2=1, x_3=0) 得 (v_1=(-1,1,0)^T);令 (x_3=1),且 (x_1+x_2=0),取 (x_2=0),则 (x_1=0),得 (v_2=(0,0,1)^T)。
等一下,这就有个问题了。(\lambda_1=2) 的代数重数明明是1,为什么几何重数跑出2来了?说明我选的例子有事故。让我重新看清矩阵结构:这是一个分块对角矩阵,左上角 (\begin{bmatrix}4&1\1&3\end{bmatrix}),右下角是 [2]。右下角的2是独立的一块,它的特征值就是2,对应特征向量 ((0,0,1)^T)。但左上角矩阵的特征值也包含2吗?左上角特征多项式是 (\lambda^2-7\lambda+11),判别式5,特征值是 ((7\pm\sqrt5)/2),并不包含2。这就麻烦了:如果特征值2只来自右下角,那它的几何重数应该恰好是1,怎么解出了两个基础解系?
原因在于我看错了,(A-2I) 实际是这个矩阵,重新展开一下逐元素:
[ A-2I=\begin{bmatrix} 4-2 & 1 & 0 \ 1 & 3-2 & 0 \ 0 & 0 & 2-2 \end{bmatrix}
\begin{bmatrix} 2 & 1 & 0 \ 1 & 1 & 0 \ 0 & 0 & 0 \end{bmatrix} ]
这个矩阵的秩:左上角 (\begin{bmatrix}2&1\1&1\end{bmatrix}) 行列式是 (2\times1-1\times1=1\neq0),秩为2,所以整个矩阵秩是2。基础解系个数是 (3-2=1),只有一个特征向量。但我刚才解出来的 ((0,0,1)^T) 不满足 (x_1+x_2=0) 之外的要求吗?
把 ((0,0,1)^T) 代进去:(A(0,0,1)^T=(0,0,2)^T=2(0,0,1)^T)。它确实是特征向量!那问题出在哪?
问题出在:((0,0,1)^T) 也满足方程组吗?方程组前两个方程只含 (x_1,x_2),给 (x_3=1,x_1=x_2=0),当然满足。所以基础解系应该确实包含 ((0,0,1)^T)。但我算秩为2、基础解系个数为1,显然矛盾了。
让我重新检查 (A-2I) 的秩。原矩阵第一行是 ([4,1,0]),减去2倍单位阵第一行 ([2,0,0]),得 ([2,1,0])。第二行原 ([1,3,0]),减去 ([0,2,0]),得 ([1,1,0])。第三行原 ([0,0,2]),减去 ([0,0,2]),得 ([0,0,0])。所以 (A-2I) 确实是:
[ \begin{bmatrix} 2&1&0\ 1&1&0\ 0&0&0 \end{bmatrix} ]
先看前两行:第一行乘以1减第二行乘以2,得 ((0,-1,0)),说明这个2×2分块秩最多是1,因为两行成比例。检查比例:第一行 ((2,1)),第二行 ((1,1)),((2,1)) 是 ((1,1)) 的2倍吗?(2=2\times1) 但 (1\neq2\times1),不成比例。所以秩确实是2。
那 (\mathrm{rank}(A-2I)=2),基础解系个数应该是1。为什么 ((0,0,1)^T) 看起来满足?重新代入方程组:第一个方程 (2x_1+x_2=0),给 (x_1=0,x_2=0),(0=0) 没错;第二个 (x_1+x_2=0) 也没错;所以 ((0,0,1)^T) 确实是解。
数一下解空间维数:方程 (2x_1+x_2=0) 和 (x_1+x_2=0) 其实等价吗?两个方程都含 (x_1,x_2)。从第二个得 (x_1=-x_2),代入第一个得 (2(-x_2)+x_2=-x_2=0),所以 (x_2=0),进而 (x_1=0)。也就是说这两个方程合起来迫使 (x_1=x_2=0)!这样秩实际上是2(两个独立约束),只剩 (x_3) 自由,解空间维数=1,基础解系就是 ((0,0,1)^T)。
我前面说“第二个方程等价于 (x_1+x_2=0),取 (x_2=1) 得 (x_1=-1)”是错的——我忽略了第一个方程。两个方程并不是冗余,它们共同限定 (x_1=x_2=0)。所以特征值2的几何重数为1,基础解系就是 ((0,0,1)^T)。
这里完美演示了一个典型错误,我先把这个错误公开讲清楚:解方程组时只看了一个方程就以为“自由”,没有把全部方程联立起来,导致多算出一个并不满足全部方程组的向量。实际上 ((-1,1,0)^T) 满足第一个方程 (2(-1)+1=-1\neq0),根本不满足!这种错误堪称解齐次方程组的第一大坑。
顺带检查 ((-1,1,0)^T) 作为 (A) 的所谓特征向量:(A(-1,1,0)^T=(-4+1, -1+3,0)^T=(-3,2,0)^T),并不是2的倍数,显然错误。
所以对 (\lambda_1=2),真正的特征向量只有一个方向:((0,0,1)^T)。
对 (\lambda_2=(7+\sqrt5)/2),过程稍微繁琐,重点是解 ((A-\lambda_2 I)x=0) 时第三行自动成立(因为右下角 (2-\lambda_2\neq0))。前两行组成2×2分块:
[ \begin{bmatrix} 4-\lambda_2 & 1 \ 1 & 3-\lambda_2 \end{bmatrix} ]
这个矩阵的行列式按特征值定义恰为0,秩应为1,所以有一个自由变量。取 (x_2=1),从第一行方程:
[ (4-\lambda_2)x_1+1=0 \Rightarrow x_1=\frac{-1}{4-\lambda_2}=\frac{1}{\lambda_2-4} ]
将 (\lambda_2=(7+\sqrt5)/2) 代入,(\lambda_2-4=(\sqrt5-1)/2),所以 (x_1=\frac{2}{\sqrt5-1}=\frac{\sqrt5+1}{2})。因此特征向量可取:
[ v_2=\left(\frac{\sqrt5+1}{2},,1,,0\right)^T ]
对 (\lambda_3=(7-\sqrt5)/2),同理取 (x_2=1),得到:
[ x_1=\frac{1}{\lambda_3-4}=\frac{2}{-\sqrt5-1}=-\frac{\sqrt5-1}{2} ]
特征向量:
[ v_3=\left(-\frac{\sqrt5-1}{2},,1,,0\right)^T ]
检查:由于矩阵是分块对角,右下角块的2对应 ((0,0,1)^T),左上角2×2矩阵的特征向量在三维里自然把第三个分量取0,这完全符合分块对角矩阵的运算规则:对角块的基向量在另一块的方向上保持独立。这个分块结构在本例中是关键捷径,下次看到分块对角矩阵,不要急着全展开,先观察分块。
4.3 组装 P 和 D 并验证
取三个特征向量为列:
[ P=\begin{bmatrix} 0 & \frac{\sqrt5+1}{2} & -\frac{\sqrt5-1}{2} \ 0 & 1 & 1 \ 1 & 0 & 0 \end{bmatrix} ]
对应的对角矩阵:
[ D=\mathrm{diag}\left(2,\ \frac{7+\sqrt5}{2},\ \frac{7-\sqrt5}{2}\right) ]
验证方法:计算 (AP) 是否等于 (PD)。取第一列 (AP) 的第一列为 (A(0,0,1)^T=(0,0,2)^T),(PD) 第一列为 (2(0,0,1)^T),一致;第二列、第三列同理可验。如果要完整流程,下面算第二列:
[ A\begin{pmatrix}\frac{\sqrt5+1}{2}\1\0\end{pmatrix}
\begin{pmatrix} 4\cdot\frac{\sqrt5+1}{2}+1\ \frac{\sqrt5+1}{2}+3\ 0 \end{pmatrix}
\begin{pmatrix} 2(\sqrt5+1)+1\ \frac{\sqrt5+7}{2}\ 0 \end{pmatrix}
\begin{pmatrix} 2\sqrt5+3\ \frac{\sqrt5+7}{2}\ 0 \end{pmatrix} ]
而右端 (\frac{7+\sqrt5}{2}) 乘以该列向量:
第一个分量:(\frac{7+\sqrt5}{2}\cdot\frac{\sqrt5+1}{2}),展开验证:
[ \frac{(7+\sqrt5)(\sqrt5+1)}{4}=\frac{7\sqrt5+7+5+\sqrt5}{4}=\frac{8\sqrt5+12}{4}=2\sqrt5+3 ]
与上面的第一个分量一致。第二个分量:(\frac{7+\sqrt5}{2}\cdot1),一致。验证通过。
第三列验证同理,这里不展开了,但强烈建议读者自己动手算一遍,算完对对碰,能极大增强手感。
4.4 这个案例暴露出的两个关键教训
第一个教训:求特征向量时,齐次方程组必须整体联立求解,不能只抓一个方程。很多人看到某一行全是零就以为自由变量很多,其实系数矩阵的秩必须用整体行变换或者观察所有行来确定。前面的错误就是活生生的例子。
第二个教训:分块对角矩阵要利用分块结构。左上角2×2块负责它自身的两个特征向量,右下角1×1块负责一个特征向量。特征向量直接按照分块方式分别取 ((x_1,x_2,0)) 和 ((0,0,x_3)) 型,不用混在一起解3×3方程组。这不仅省力,还天然避免了联立方程带来的错误。
5. 常见错误与排查心得速查
5.1 高频错误清单与对策
下面这张表,是我在教学和答疑过程中反复看到的高频错误,每一条都有具体的触发场景和改错方法,建议做题时对照自查:
| 错误类型 | 典型现象 | 根本原因 | 对策 |
|---|---|---|---|
| 行列式展开错误 | 特征多项式算错 | 用错展开方式或符号 | 展开后代入一个已知特征值验证;检查最高次项和常数项 |
| 解齐次方程只看部分方程 | 多算或漏算特征向量 | 没有整体联立方程组 | 先确认秩,再自由变量;最后代回验证 |
| 特征向量方向不对 | 验证 (Av=\lambda v) 不成立 | 把基础解系取错 | 一票否决制:代入原方程验证,通过了才算对 |
| (P) 和 (D) 顺序不匹配 | 验证 (AP\ne PD) | 排序列与对角元时手滑 | 写完后逐列核对顺序再进验证 |
| 把 (P^{-1}AP) 写成 (PAP^{-1}) | 最终对不上 | 相似变换方向记混 | 记住“P从左边进去、从右边出来”,检验时用 (AP=PD) 替代 |
| 重根直接判断不可对角化 | 一票否决重根矩阵 | 把代数重数和几何重数混淆 | 必须单独计算几何重数,用 ((n-\mathrm{rank})) 判断 |
表格里最值钱的一条是最后一行。重根不等于不可对角化,这个认知偏差导致很多同学在计算还没有开始之前就放弃了正确结论。判断时务必走流程:代数重数标出来,几何重数算出来,两个相等才放心。
5.2 我的两条排查心得
再做一次完整的特征值计算之前,先检查矩阵有没有特殊结构。对角矩阵、三角矩阵、分块对角矩阵、秩一矩阵、循环矩阵,这些结构都能极大简化计算。特别是分块对角:每个对角块独立算特征值和特征向量,最后拼起来,不要老老实实展开整个特征多项式。这不算偷懒,是对结构保持敏感。
第二个心得是关于数值精度的。手算含根号的矩阵(像上面的例子)时,(\lambda) 带根号后,很多人算特征向量时把 (\sqrt5) 约分搞错。建议保留分数形式,不要转小数;每步化简完,随手用 (Av=\lambda v) 验证。如果验证不通过,优先检查从 (\lambda) 代入后的代数运算,其次才是方程组本身。
5.3 对角化后还能做些什么
一旦完成了对角化,(A^n) 的计算不过是 (PD^nP^{-1})。这里我补充一个实操场景扩展:如果用这个公式求某个矩阵的 (A^{50}),需要先算 (P^{-1})。三阶矩阵求逆可以用伴随矩阵法,也可以用初等行变换。如果 (P) 的列向量非常复杂(带根号),伴随矩阵法生成的中间表达式容易膨胀得吓人。推荐初等行变换,因为它能边算边化简,随时检查某一行出错。具体做法:把 ([P\mid I]) 做初等行变换化为 ([I\mid P^{-1}]),变换过程中任何一处出现“某行全零但右侧非零”,立刻说明 (P) 不可逆,前面的特征向量一定有错。
另一个扩展应用是解线性常系数微分方程组。比如:
[ \frac{d\mathbf{x}}{dt}=A\mathbf{x} ]
如果 (A=PDP^{-1}),令 (\mathbf{y}=P^{-1}\mathbf{x}),则方程化为 (\frac{d\mathbf{y}}{dt}=D\mathbf{y}),每个分量独立求解,再乘回 (P)。本来耦合的系统被“解耦”成互不相干的单变量方程,这就是特征值在对角化问题上最实用的威力。课程后续讲到微分方程或动力系统时,这个技巧会反复出现。
结束语
个人体会先说一句:线性映射这一章,真正让人感觉“数学变难了”的节点,往往不是计算量变大,而是思维从“每个元素逐个算”切换到了“整个矩阵视为一个对象”。矩阵表示、特征值、对角化,全都是围绕“结构”在做文章。你在解题时多问自己一句“我算出来的这个特征向量到底在说什么方向”,比多刷十道题都管用。
如果还想继续往后走,那么这一章的内容和后续课程的衔接点非常清晰:实对称矩阵的谱分解讲到特征值必定为实数、特征向量可以取成正交单位向量;若尔当标准形则把不可对角化的矩阵也纳入统一框架。先把第9章的线性映射、矩阵表示、特征值、对角化这四块基础打得扎实,后面就是顺水推舟的事。