☰
矩阵论核心工具:Jordan标准形、Smith标准形与QR分解
2026/10/27 21:39:48 网站建设 项目流程

简介:《矩阵论期末考试参考答案1》面向备考矩阵论、线性代数高阶课程的高校学生与需要复习矩阵分析方法的读者,围绕期末考试常见综合题给出参考解答。内容覆盖特征值与特征向量、Smith标准形与Jordan标准形、变换矩阵P及P⁻¹AP=J、QR分解、正交投影、矩阵范数不等式和非齐次线性微分方程组求解等典型考点,并对(A−2I)的幂、Hamilton-Cayley定理、基与线性无关性等推导过程作出展示,便于对照题目复盘步骤、核对中间结果和梳理证明思路。资源包内共1个PDF文件,大小约284KB,结构紧凑,适合打印或按题型检索。已有619人学习,可作为矩阵论期末冲刺阶段的答案对照与方法归纳材料。

1. 矩阵论里的“标准形”是什么:从一道考试题说起

很多人第一次看到“Jordan标准形”这五个字,脑子里冒出来的是“这跟我有什么关系”。其实它做的事情很朴素——把一台结构复杂的机器拆成几个简单零件,让你看清它到底怎么转。矩阵在矩阵论里就像这台机器,而标准形就是拆解说明书。考试里的一道题可能要求你求矩阵的Jordan标准形、做QR分解、算广义逆,这些名字听起来玄学,但背后是同一件事:把一个矩阵变成更容易看懂的形态。搞懂这套拆解逻辑,你再看那些密密麻麻的λ和矩阵块,就不会觉得是凭空掉下来的符号。

2. 特征值与特征向量:矩阵的“固有方向”到底指什么

先从一个具体的困惑开始。假设你有一个矩阵A,把它乘到一个向量v上,一般会得到一个新向量,方向变了、长度也变了。但总有那么一些特殊的v,乘完之后方向不变,只是长度缩放了λ倍,写成公式就是Av=λv。这个λ叫特征值,v叫特征向量。通俗地说,特征向量是矩阵“认准”的方向,矩阵作用在它身上只拉伸不转向。

为什么这件事值得单独拎出来讲?因为矩阵的幂运算A^n在一般向量上会越乘越乱,但在特征向量上就变成λ^n,一个数乘一个方向,计算量从矩阵乘法降到标量乘法。这就是特征值分解的起点,也是Jordan标准形要处理的核心问题——当特征向量不够用时,怎么把矩阵拆得尽量简单。

2.1 为什么矩阵乘法会“转向”,而特征向量不转

把矩阵乘法想象成一台加工机器:输入一个向量,输出另一个向量。大多数向量进去之后会被“拧”一下方向,就像你把一根木棍斜着塞进压面机,出来的方向变了。特征向量是那些特殊角度的木棍,进去什么方向,出来还是什么方向,只是被压长了或压短了。

拿一个2×2矩阵举例:

import numpy as np A = np.array([[2, 1], [1, 2]]) # 特征向量 [1,1] 对应特征值3 v1 = np.array([1, 1]) print(A @ v1) # 输出 [3, 3],方向没变,长度乘3 # 特征向量 [1,-1] 对应特征值1 v2 = np.array([1, -1]) print(A @ v2) # 输出 [1, -1],方向没变,长度不变

这段代码里,A乘v1得到[3,3],正好是3倍的v1;A乘v2得到[1,-1],正好是1倍的v2。两个方向都没被拧弯。矩阵A的特征值就是3和1,对应的特征向量分别是[1,1]和[1,-1]。

参数说明:np.array构造矩阵,@是矩阵乘法运算符。输出结果验证了Av=λv。注意特征向量不是唯一的,任何非零倍数都算同一个方向,所以通常取最简单的整数形式。

这里有个容易翻车的点:特征值可以是复数,特征向量也可以是复向量。实矩阵不一定有实特征值,比如旋转矩阵[[0,-1],[1,0]]的特征值是±i。考试里如果要求实Jordan标准形,处理方式会不一样,但那是另一个话题了。

2.2 λI−A与特征多项式:解特征值的固定套路

要求特征值,标准做法是解方程det(λI−A)=0。这里I是单位矩阵,λI−A就是把A的对角线元素用λ减一遍。为什么这么写?因为Av=λv可以改写成(λI−A)v=0,要让这个方程有非零解v,矩阵λI−A必须不可逆,也就是行列式为零。这个行列式展开后是关于λ的多项式,叫特征多项式。

拿一个上三角矩阵举例:

import sympy as sp lam = sp.symbols('lambda') A = sp.Matrix([[5, -2, -2], [-1, 1, -1], [-1, -1, 2]]) # 此处为示例结构 char_poly = (lam * sp.eye(3) - A).det() print(sp.factor(char_poly))

这段代码用sympy算特征多项式并因式分解。sp.eye(3)是3阶单位矩阵,.det()求行列式,sp.factor做因式分解。输出会告诉你特征值是什么、重数是多少。特征多项式的根就是特征值,根的重数叫代数重数。

代数重数可以从特征多项式的因式分解直接读出来:比如(λ−2)^3说明特征值2的代数重数是3。但代数重数只是“应该有几个特征向量”的上限,实际能找出几个线性无关的,要看几何重数。

注意:代数重数不等于几何重数。几何重数是特征子空间的维数,也就是线性无关的特征向量的个数。一个特征值代数重数是3,几何重数可能只有1,这时候特征向量就不够用了。这正是Jordan标准形要解决的问题。考试里常见的失分点是把代数重数直接当成几何重数,然后强行写对角形,结果矩阵根本不可对角化。

2.3 特征向量不够用怎么办:Jordan链的引入

举个最典型的例子:矩阵[[2,1],[0,2]]。它的特征多项式是(λ−2)^2,特征值2的代数重数是2。但你解方程(2I−A)v=0,会发现只有一个线性无关的解,比如[1,0]。几何重数是1,比代数重数少。这时候你没法把矩阵对角化成diag(2,2),只能写成Jordan块[[2,1],[0,2]]。

那缺失的那个“特征向量”去哪了?它变成了广义特征向量。具体做法是解(A−2I)v2=v1,其中v1是普通特征向量。这样得到的v2不满足Av2=2v2,而是Av2=2v2+v1。把v1和v2排成矩阵P,就有P^{-1}AP=J,J是Jordan标准形。

用代码演示这个求解过程:

import numpy as np A = np.array([[2, 1], [0, 2]]) lam = 2 # 解 (A - lam*I) v1 = 0 M = A - lam * np.eye(2) # 普通特征向量 v1 = [1, 0] v1 = np.array([1, 0]) # 解 (A - lam*I) v2 = v1,即找广义特征向量 v2 = np.array([0, 1]) P = np.column_stack((v1, v2)) print(P) print(np.linalg.inv(P) @ A @ P) # 输出Jordan块

np.column_stack把两个向量按列拼成矩阵,np.linalg.inv求逆,@做矩阵乘法。输出应该是[[2,1],[0,2]],主对角线是特征值,上对角线是1,这就是2阶Jordan块。

如果代数重数是3、几何重数是1,Jordan链长度就是3。你需要先解(A−λI)v1=0得到普通特征向量,再解(A−λI)v2=v1得到第一层广义特征向量,再解(A−λI)v3=v2得到第二层。每一步的解不唯一,但选定一个之后整条链就确定了。链的方向是从v1指向v3,矩阵P按[v1,v2,v3]排列,得到的Jordan块是3阶。

通俗地说,Jordan链就是“特征向量不够,广义特征向量来凑”,一个接一个串成链子。链的长度等于Jordan块的阶数。一个矩阵有几个Jordan块、每块多大,由初等因子决定,这是下一章要展开的内容。

3. Smith标准形与Jordan标准形:两个“标准形”差在哪

这一章把两个最容易混淆的“标准形”摆在一起看。Smith标准形和Jordan标准形都是把矩阵化简,但用的工具和目标不一样。Smith标准形针对的是λ矩阵,也就是元素里含λ的矩阵,通过初等行变换和列变换化成对角形,对角线上是不变因子。Jordan标准形针对的是数字矩阵,通过相似变换化成块对角形,对角线上是Jordan块。一个是在λ矩阵的世界里做除法,一个是在数字矩阵的世界里做相似分类。

为什么要有两个标准形?因为你要回答的问题不同。如果你想知道两个矩阵在初等变换下是否等价,看Smith标准形;如果你想知道两个矩阵是否相似,看Jordan标准形。这两个问题在矩阵论里是两条线,考试里经常分开出题,但初学者容易把它们当成同一件事。

3.1 Smith标准形:初等变换下的“最简身份证”

Smith标准形的操作对象是λ矩阵,比如λI−A。你对它做初等行变换和初等列变换,目标是把非对角元素全部消成零,对角元素按整除关系排列:d1整除d2,d2整除d3,依此类推。这些di叫不变因子。最后得到的对角矩阵就是Smith标准形。

举个例子,一个3阶λ矩阵经过变换可能化成:

diag(1, 1, (λ-2)^3)

这个结果告诉你:前两个不变因子是1,第三个是(λ−2)^3。不变因子的乘积等于特征多项式,所以特征多项式是(λ−2)^3。从不变因子还能反推初等因子,就是把每个不变因子分解成不可约多项式的幂,去掉重复的1。这里初等因子就是(λ−2)^3。

操作上可以用sympy做λ矩阵的初等变换,但手工算考试题更常见。关键步骤是:先找左上角次数最低的非零元素,用它消去同行同列的其他元素,然后递归处理右下角的子矩阵。这个过程有点像辗转相除法求最大公因数,只不过对象是多项式。每次消元时优先用次数低的元素当“主元”,可以减少计算量。

注意一个坑:Smith标准形在初等变换下唯一,但初等变换本身不唯一。你换一条消元路径,中间过程可能不同,最后的标准形是一样的。考试写过程时只要不变因子对,中间步骤可以有差别。还有一点,不变因子的整除链是d1|d2|...|dn,顺序不能乱,如果算出来d1不整除d2,说明中间某一步消元没消干净。

3.2 Jordan标准形:把矩阵拆成幂运算友好的块

Jordan标准形是数字矩阵在相似变换下的最简形式。一个矩阵A相似于一个块对角矩阵J,每个块长这样:

[λ 1 0 ... 0] [0 λ 1 ... 0] [0 0 λ ... 0] ... [0 0 0 ... λ]

对角线上是特征值λ,上对角线全是1,其余位置是0。一个Jordan块对应一个初等因子(λ−λ0)^k。

为什么拆成这种形式有用?因为Jordan块的幂运算有简单公式。一个k阶Jordan块J=λI+N,其中N是幂零矩阵(N^k=0),那么J^n可以用二项式展开算,只有前k项非零。这就把矩阵幂运算从“乘n次”降到“算k项”,对解微分方程、求矩阵函数都很关键。

举个例子,上一章那个[[2,1],[0,2]]已经是Jordan标准形了,因为它本身就是一个2阶Jordan块。如果一个矩阵有多个Jordan块,把它们按块对角排起来就是整体的Jordan标准形。

这里有个血泪经验:求Jordan标准形时,特征值的代数重数和几何重数要对上。每个特征值的Jordan块个数等于几何重数,所有Jordan块的阶数之和等于代数重数。如果你算出来的块数和重数对不上,大概率是某个特征向量求错了。另外,Jordan块的排列顺序不唯一,考试里只要块结构对,顺序可以调换。

3.3 不变因子、初等因子:从Smith走到Jordan的桥

Smith标准形和Jordan标准形之间通过初等因子连接。具体路径是:先对λI−A做Smith标准形,得到不变因子d1,...,dn;再把每个不变因子分解成不可约多项式的幂,去掉常数因子和重复的1,剩下的就是初等因子;每个初等因子(λ−λ0)^k对应一个k阶Jordan块,对角线上是λ0。

拿一个例子走一遍。假设λI−A的Smith标准形是diag(1, (λ−1), (λ−1)(λ−2)^2)。不变因子是1、λ−1、(λ−1)(λ−2)^2。初等因子是λ−1(出现两次,来自第二个和第三个不变因子)和(λ−2)^2。所以Jordan标准形包含两个1阶块[1]和[1],以及一个2阶块[[2,1],[0,2]]。

这里容易混的点是:初等因子不考虑重复次数,只按幂次分解。λ−1出现两次,就是两个独立的1阶块,不是一个2阶块。判断几阶块看幂次,判断几个块看出现次数。不变因子的个数等于矩阵的阶数,初等因子的总次数也等于矩阵的阶数,这两个数可以用来验算。

用代码验证这个对应关系:

import sympy as sp lam = sp.symbols('lambda') # 构造一个Jordan标准形,反推初等因子 J = sp.diag(1, 1, sp.Matrix([[2, 1], [0, 2]])) print(J)

这段代码把两个1阶块和一个2阶块拼在一起。sp.diag按块对角拼矩阵。输出能直观看到Jordan标准形的块结构。注意sympy的diag对矩阵块的支持需要小心,实际考试手算更直接。

4. QR分解与正交化:把向量组“摆正”的手艺

QR分解解决的是另一个问题:给你一组线性无关的向量,怎么把它们变成一组互相垂直的单位向量,同时保持它们张成的空间不变。这件事在最小二乘、特征值计算、信号处理里到处都是。Gram-Schmidt正交化是手工做法,QR分解是它的矩阵写法。

通俗地说,正交化就像整理一团纠缠的线:你先拉直第一根,然后把第二根中跟第一根重叠的部分剪掉,剩下的就是新的垂直方向;第三根剪掉跟前两根重叠的部分,依此类推。最后每根线都互相垂直,长度归一化后就是标准正交基。

4.1 Gram-Schmidt正交化:一步步减去投影

Gram-Schmidt的公式很直接。假设你有一组向量α1, α2, α3, α4,要构造正交向量组β1, β2, β3, β4:

β1 = α1 β2 = α2 − (⟨α2,β1⟩/⟨β1,β1⟩) β1 β3 = α3 − (⟨α3,β1⟩/⟨β1,β1⟩) β1 − (⟨α3,β2⟩/⟨β2,β2⟩) β2

依此类推。每一项减去的都是当前向量在前面已构造好的正交向量上的投影。减完之后,βk与前面所有βj的内积为零。

举个数值例子:

import numpy as np alpha1 = np.array([1, 1, 1, 1]) alpha2 = np.array([1, 2, 3, 4]) beta1 = alpha1 # 计算投影系数 coef = np.dot(alpha2, beta1) / np.dot(beta1, beta1) beta2 = alpha2 - coef * beta1 print(beta1) # [1 1 1 1] print(beta2) # 输出应垂直于beta1 print(np.dot(beta1, beta2)) # 应为0或极小数

np.dot算内积,coef是投影系数,beta2减掉投影后与beta1正交。输出最后的点积接近0,验证正交性。注意浮点运算可能有极小误差,考试手算用分数更干净。

这里踩坑最多的地方是分母:⟨β1,β1⟩是β1的模长平方,不是模长。有人把分母写成|β1|,结果整个式子差一个量级。记住内积公式里分母永远是自己和自己的内积。另外,Gram-Schmidt对向量的顺序敏感,先处理哪个向量会影响β的具体数值,但最终张成的空间和标准正交基的唯一性不受影响。

4.2 A=QR:正交矩阵乘上三角矩阵的几何含义

把Gram-Schmidt的过程写成矩阵形式,就得到A=QR。A的列是原始向量α1,...,αn,Q的列是正交化并归一化后的向量γ1,...,γn,R是一个上三角矩阵,记录了每一步的投影系数和模长。

具体地,A = [α1,...,αn] = [γ1,...,γn] R,其中R的对角线元素是|βi|,上三角元素是投影系数。因为γi是单位向量,Q是正交矩阵(Q^T Q=I),R是可逆上三角矩阵。

用代码演示完整的QR分解:

import numpy as np A = np.array([[1, 1, 1, 1], [1, 2, 3, 4], [1, 4, 9, 16], [1, 8, 27, 64]], dtype=float) # 示例矩阵 Q, R = np.linalg.qr(A) print("Q正交性验证:") print(np.round(Q.T @ Q, 6)) # 应接近单位矩阵 print("R:") print(np.round(R, 4))

np.linalg.qr返回Q和R,Q.T @ Q验证正交性,输出应接近单位矩阵。np.round控制小数位数方便看。注意numpy的qr可能返回负对角线的R,这是符号约定不同,不影响分解的正确性。

QR分解的几何含义是:Q的列是一组标准正交基,R告诉你原始列向量在这组基下的坐标。因为R是上三角,第i列只用到前i个基向量,这跟Gram-Schmidt的递推顺序一致。如果A是方阵且满秩,Q和R都是方阵;如果A是长方形矩阵,Q是列正交的长方矩阵,R是上三角方阵。

4.3 正交投影与正规化:模长归一化到底在做什么

正交投影是Gram-Schmidt的核心动作。给定一个向量α和一个方向β,α在β上的投影是(⟨α,β⟩/⟨β,β⟩)β。减掉这个投影,剩下的部分就垂直于β。这个操作可以反复做,每做一次消掉一个方向的分量。

归一化是另一件事:把向量除以自己的模长,得到单位向量。β的模长是√⟨β,β⟩,归一化后γ=β/|β|,满足|γ|=1。归一化不改变方向,只改变长度,目的是让基向量标准化,方便后续计算内积和投影。

举个例子,β=[3,4],模长是5,归一化后γ=[0.6,0.8]。验证:0.6²+0.8²=0.36+0.64=1,长度确实是1。在QR分解里,R的对角线元素就是归一化前的模长,所以A=QR展开后,每一列的“伸缩比例”都记录在R里。

注意:归一化时如果向量是零向量,模长为0,不能做除法。Gram-Schmidt要求原始向量组线性无关,否则某一步会出现零向量,正交化就中断了。考试里如果遇到线性相关的列,QR分解仍然可以做,但R会缺秩,需要用其他方法处理。

5. 常见误区与易混概念:相似、合同、等价别搞混

这一章专门拆几个初学者最容易混的点。矩阵论里近义词太多,相似、合同、等价、正交相似,每个词背后是一套不同的变换规则。混着用会导致计算对但概念错,选择题里尤其容易翻车。

5.1 误区一:Jordan标准形一定是对角矩阵

易混点:把“标准形”直接等同于“对角形”。

为什么混:对角矩阵是最简单的标准形,很多矩阵确实可以对角化,做多了题容易形成思维定势,看到标准形就写对角阵。

怎么区分:Jordan标准形允许上对角线有1,只有当初等因子全是一次幂时,Jordan块才退化成1阶,整体才是对角矩阵。换句话说,可对角化是Jordan标准形的特例,不是全部。判断能不能对角化,看每个特征值的几何重数是否等于代数重数。相等则对角化,不等则出现大于1阶的Jordan块。

5.2 误区二:QR分解和LU分解是一回事

易混点:都是把矩阵拆成两个矩阵相乘,名字里都带一个字母。

为什么混:A=QR和A=LU形式上都是分解,初学者容易只记字母不记几何意义。

怎么区分:LU分解是高斯消元的结果,L是下三角、U是上三角,针对的是消元过程,不要求正交性。QR分解是Gram-Schmidt正交化的结果,Q是正交矩阵、R是上三角,针对的是列向量的正交化。一个在消元,一个在摆正方向,用途完全不同。LU用于解线性方程组,QR用于最小二乘和特征值计算。

5.3 误区三:特征值相同就相似

易混点:两个矩阵特征多项式一样,就认为它们相似。

为什么混:相似矩阵确实有相同的特征多项式,但反过来不成立。特征多项式相同只是相似的必要条件,不是充分条件。

怎么区分:看Jordan标准形。两个矩阵相似当且仅当它们有相同的Jordan标准形(在不计块排列顺序的意义下)。特征多项式相同只能保证特征值及其代数重数相同,不能保证Jordan块的尺寸分布相同。比如[[2,1],[0,2]]和[[2,0],[0,2]]特征多项式都是(λ−2)^2,但前者是一个2阶Jordan块,后者是两个1阶块,不相似。

5.4 误区四:广义逆就是普通逆矩阵

易混点:把Moore-Penrose广义逆当成逆矩阵的推广,以为所有矩阵都有逆。

为什么混:名字里都带“逆”,公式A^+也长得像A^{-1}。

怎么区分:普通逆矩阵只对方阵且满秩时存在,满足AA^{-1}=A^{-1}A=I。广义逆对任意矩阵都有定义,Moore-Penrose广义逆满足四个Penrose条件,最小二乘解和最小范数解都靠它。对于不满秩的矩阵,普通逆不存在,但广义逆存在且唯一。考试里如果题目给的是长方形矩阵或秩亏矩阵,求逆就是求广义逆,不能套普通逆的公式。

6. 什么时候用Jordan、什么时候用QR:工具选择的边界

学到这儿,几个工具的适用边界应该清楚了。但真到用的时候,还是容易抓错工具。一张表把选择逻辑摆出来:

工具解决的问题适用条件不适用的情况
Jordan标准形矩阵相似分类、幂运算需要特征值重数信息数值计算不稳定,特征值接近时对扰动敏感
Smith标准形λ矩阵等价分类元素含多项式纯数字矩阵直接用Jordan
QR分解正交化、最小二乘列向量线性无关或需数值稳定精确符号推导不如Gram-Schmidt公式直接
广义逆秩亏方程组任意矩阵满秩方阵用普通逆更简单

举个具体例子。拿到方程组Ax=b,A是4×4矩阵,秩为3。普通逆不存在,正确工具是Moore-Penrose广义逆:x=A^+b给出最小范数最小二乘解。硬套Jordan标准形就偏了——Jordan解决相似分类和幂运算,不解方程。反过来,要求A^n的表达式,Jordan是首选,因为Jordan块的幂有闭式公式,QR帮不上忙。

再说边界:数值计算里Jordan标准形很少直接用。特征值靠得近时,Jordan块对微小扰动极其敏感,算出来的块结构可能跟理论值对不上,这时候QR迭代法更稳。所以“什么时候别用”比“什么时候用”更值得记住:Jordan适合理论推导和手算考题,不适合大规模数值计算;QR适合数值稳定的正交化,但手工推导符号结果不如Gram-Schmidt公式直接。

我自己的习惯是,每次拿到矩阵先问三个问题:数字矩阵还是λ矩阵?求相似分类还是解方程?要精确符号还是数值近似?三个问题答完,工具基本锁定。有一次做综合题,前面求Jordan标准形,后面解秩亏方程组,我差点把两个部分的矩阵混在一起算,后来强制自己每换一个问法就重新抄一遍矩阵才没翻车。从那以后每次做矩阵题都先把“这题在问什么”写一行在草稿纸顶上。

这份资料把Jordan链构造、Smith标准形初等变换、QR分解推导、广义逆的Penrose条件都一步步写全了,每道题后面标了易错点。如果你正在准备矩阵论考试,或者想把这几个概念理顺,可以拿来对着练。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询