简介矩阵论期末考试参考答案1是一份面向数学、工程类学生备考矩阵论的复习资料覆盖特征值、特征向量、若尔当标准形、QR分解等核心考点。压缩包内仅1个PDF文件大小约284KB却包含多道典型大题的完整解答适用于考前冲刺和日常巩固。解答以步骤化展开依次处理特征多项式与史密斯标准形、若尔当标准形的构造及变换矩阵P的求解、QR分解中正交矩阵与上三角矩阵的推导、矩阵范数不等式证明以及利用Hamilton-Cayley定理求解矩阵指数并回答非齐次线性微分方程组等内容。每题均附清晰的化简要点和必要的数值计算可帮助读者规范答题思路、对照检查自己的推导过程也适合自学者逐步理解抽象概念与运算技巧。资源已累计618人次浏览学习作为矩阵论期末复习的补充资料有较高参考价值。1. 一份矩阵论期末答案的打开方式五个考点与一个使用建议一份矩阵论期末考试参考答案五道题正好踩在 Jordan 标准形、QR 分解、矩阵范数不等式、非齐次线性微分方程组和 Moore-Penrose 广义逆上基本是工科矩阵论的高频考点。这份材料最值得读的不是最终答案而是每个“为什么这么走”求 Jordan 形之前先把 λI-A 化成 Smith 标准形Gram-Schmidt 正交化从第一列开始逐个消去投影范数不等式用双重放缩链把中间和夹住。适合正在备考矩阵论的学生也适合想快速把手算细节捡起来的从业者建议先对着题目自己做一遍再拿参考答案对步骤否则容易把“会算”当成“懂原理”。2. 从λI-A到Jordan标准形Smith标准形与P矩阵的完整推导这道题里的矩阵 A 是 3 阶方阵特征多项式一眼看到头det(λI-A) (λ-2)^3。很多同学到这里就放松了觉得只有一个特征值直接解(A-2I)x0就行。结果发现(A-2I)的秩是 2基础解系只给 1 个向量代数重数 3 对不上几何重数 1矩阵不可对角化。此时必须上 Jordan 标准形而 Jordan 块的大小不能靠猜需要从初等因子去读。Smith 标准形把不变因子直接摆在对角线上是读初等因子最不容易错的前置步骤。常见做法是先对 λI-A 做行、列初等变换目标是化成diag(1, 1, (λ-2)^3)。2.1 为什么先化Smith标准形而不是直接求特征值如果只想要特征值解det(λI-A)0就够了但想要知道矩阵能不能对角化、Jordan 块怎么排必须看各阶行列式因子的最大公因式。Smith 标准形的好处是它通过初等变换把 λI-A 化为对角形且对角元就是不变因子既不改变行列式因子又能直接读出每个特征值对应的初等因子。这道题里λI-A 是一个 3 阶多项式矩阵。手算时先做行交换把某个含 1 的项挪到左上角再逐步消去第一列和第一行的非零项。参考步骤里出现过-λ^27λ-8、-λ^36λ^2-12λ8这些中间项它们最终都被消成一个常数 1剩下的 3 阶行列式因子恰好是(λ-2)^3。如果中间项没有完全消掉说明初等变换还没化到位强行跳到下一步会在 Jordan 块尺寸上翻车。我用 SymPy 做验证时一般先看行列式因子再检查A-2I及其幂的秩from sympy import Matrix, eye, symbols, factor lam symbols(lambda) A Matrix([[5, 5, -2], [-2, -1, -1], [-1, 1, 2]]) M lam * eye(3) - A print(det(λI-A) , factor(M.det())) M2 M.subs(lam, 2) print(rank(A-2I) , M2.rank()) print(rank((A-2I)^2) , (M2**2).rank())输出会显示det (λ-2)^3rank(A-2I) 2rank((A-2I)^2) 1。这说明特征值 2 的几何重数是 1根基向上两层正好对应一个 3 阶 Jordan 块。这里的逻辑是Jordan 链的长度等于(A-2I)^k的零空间维度变化次数秩从 3 降到 2再降到 1说明链长为 3。2.2 特征矩阵的初等变换消元顺序与不变量手算 Smith 标准形时我习惯先把 λI-A 写出来λI - A [[λ-5, 5, -2], [-2, λ1, -1], [-1, 1, λ-2]]然后固定第三行第三列不动用第三行去消其他行的首项再用第三列消其他列。参考步骤里出现的一串分式多项式就是消元过程中得到的中间量。消完第一行第一列和第二行第二列后剩下左上角的diag(1, 1, (λ-2)^3)。不变因子是1, 1, (λ-2)^3初等因子只看非常数部分所以只剩下(λ-2)^3。这里不需要把 1 写进初等因子1 对应的是 0 阶 Jordan 块没有实际意义。2.3 由初等因子反推Jordan块结构一个初等因子(λ-2)^3对应一个 3 阶 Jordan 块。常有人在这里把它拆成三个(λ-2)但那样会变成三个 1 阶块要求几何重数为 3显然和rank(A-2I)2矛盾。Jordan 标准形只能是J [[2, 1, 0], [0, 2, 1], [0, 0, 2]]超对角线的 1 不是摆设它表示广义特征向量之间的连接关系。如果初等因子是(λ-2)^2和(λ-2)的组合才会出现一个 2 阶块加一个 1 阶块的结构那时代数重数和几何重数的差正好等于 1。这里的差是 2所以只能是一个 3 阶块。2.4 广义特征向量链与P矩阵的构造已知 J 后要解AP PJ展开成三条方程AP1 2P1 (A-2I)P1 0 AP2 P1 2P2 (A-2I)P2 P1 AP3 P2 2P3 (A-2I)P3 P2这是从内向外推的链先找最内层的特征向量再逐层解出广义特征向量。参考答案从P3 [1, 0, 0]^T开始因为P3落在(A-2I)^3的零空间最底层然后乘一次A-2I得到P2再乘一次得到P1。计算出来P3 [1, 0, 0]^T P2 (A-2I)P3 [3, -2, -1]^T P1 (A-2I)P2 [1, -1, -1]^TP 矩阵按[P1, P2, P3]排成P [[1, 3, 1], [-1, -2, 0], [-1, -1, 0]]注意列顺序不能调换。如果写成[P3, P2, P1]J 的超对角线会变成下三角虽然也是 Jordan 标准形的一种变体但很多教材默认超对角线上方为 1顺序反了会被判定为“形式不一致”。验算可以直接用数值库import numpy as np A np.array([[5, 5, -2], [-2, -1, -1], [-1, 1, 2]], dtypefloat) P np.array([[1, 3, 1], [-1, -2, 0], [-1, -1, 0]], dtypefloat) J np.linalg.inv(P) A P print(np.round(J, 8))输出应当是[[2,1,0],[0,2,1],[0,0,2]]。这里P的列向量就是广义特征向量链P^-1的作用是把原矩阵相似变换到 Jordan 形。用np.linalg.inv(P)求逆只是验算考试时要求手算P^-1建议用伴随矩阵或增广矩阵消元法不要在卷面上写数值库调用。提示构造 P 矩阵时列顺序和广义特征向量的选取都不是唯一的但 Jordan 链必须连贯。拿到别人的答案第一件事就是验inv(P) A P是否等于 J。3. QR分解手算全流程从Gram-Schmidt正交化到AQR回验QR 分解的题目给了一个 4 阶范德蒙德型矩阵列向量分别是α1[1,1,1,1]^T、α2[1,2,4,8]^T、α3[1,3,9,27]^T、α4[1,4,16,64]^T。这类列向量之间线性关系明显Gram-Schmidt 正交化算起来会有不少分数。3.1 正交化顺序为什么从α1开始逐个处理Gram-Schmidt 的核心是每一步新向量减掉前面所有已正交向量的投影所以必须从第一个向量开始逐个向后推。如果上来就把 α4 单位化后面的正交化会乱套。这道题第一个向量是β1 α1 [1,1,1,1]^T模长是 2所以第一个单位向量γ1 [1/2, 1/2, 1/2, 1/2]^T。第二步β2 α2 - (⟨α2,β1⟩/⟨β1,β1⟩)β1。这里⟨α2,β1⟩ 15⟨β1,β1⟩ 4所以减掉的投影是(15/4)β1得到β2 [-11/4, -7/4, 1/4, 17/4]^T模长是√(121491289)/4 √460/4单位化后得到γ2 [-11/√460, -7/√460, 1/√460, 17/√460]^T。这里注意符号不要错β2 的每一项都带分母 4单位化后分母会变成√460。3.2 模长、单位化与Q矩阵的拼接继续做第三步β3 α3 - (⟨α3,β1⟩/⟨β1,β1⟩)β1 - (⟨α3,β2⟩/⟨β2,β2⟩)β2。参考步骤里写的投影系数是40和436/115注意第一个系数不是 10而是⟨α3,β1⟩ 13927 40。算出来的β3是分数的倍数β3 (21/115) [82, -21, -112, 51]^T单位化后γ3 [82, -21, -112, 51]^T / √22310。这里分子只保留比例分母是√22310因为系数21/115在求模时会被约掉不需要写进最终单位向量。第四步的β4同样减掉三次投影最终得到γ4 [-6, 11, -6, 1]^T / √194。Q 矩阵就是四个单位列向量拼接成 4×4 矩阵。3.3 组装R矩阵系数回填的次序R 矩阵不需要重新计算直接回填 Gram-Schmidt 过程中的系数即可。设A Q R因为 Q 的列是标准正交基所以R[i][j] ⟨αj, γi⟩其中i j的部分才是非零上三角元。对角元是各β_i的模长非对角元是投影系数乘以对应模长。参考步骤里 R 的第一行是[2, 15/2, 40, 85/4]这里的15/2是⟨α2, γ1⟩40是⟨α3, γ1⟩85/4是⟨α4, γ1⟩。第二行开头是√460/4后续元素继续回填。组装时不要跳行按列遍历更容易对号入座。用 SymPy 可以快速核对import sympy as sp A sp.Matrix([[1, 1, 1, 1], [1, 2, 3, 4], [1, 4, 9, 16], [1, 8, 27, 64]]) Q, R A.QRdecomposition() print(Q , Q) print(R , R) print(sp.simplify(Q * R - A)) # 零矩阵说明正确QRdecomposition()默认返回精简形式的 Q 和 R可能省略最后一列因为 4 阶方阵通常满秩所以 Q 是 4×4 正交阵R 是 4×4 上三角。输出后对照手算结果符号差主要体现在某些列乘了 -1不影响AQR本身。3.4 数值误差与精确形式的选择手算 QR 时最常见的误差来源是单位化后的分母开根号。比如√460、√22310、√194这些根号不能提前开成小数否则后面 R 矩阵回填会积累误差。考试时保留根号形式最后如果题目要求数值再统一近似。另一个坑是 R 矩阵第一行第二列写成5/2。我一开始核对时也愣了一下后来发现15/2和5/2只差一个数字OCR 或誊写时很容易漏掉十位。遇到这种分数务必用内积重新算一遍⟨α2, γ1⟩ (1248)/2 15/2。提示QR 分解的结果不是唯一的。Q 的列向量集体乘以 -1R 也会对应变号但只要Q^T Q I且Q R A就都是合法分解。考试阅卷通常以A QR是否严格成立为准。4. 矩阵范数不等式的放缩链与避坑五类高频错点实录这道题要证明(1/n)||A||_1 ≤ ||A||_∞ ≤ n||A||_1其中||A||_1是列绝对值和的最大值||A||_∞是行绝对值和的最大值。证明本身不长但放缩方向写反的人不在少数所以这一章既讲证明也把常见错点列一遍。4.1 范数的定义与证明目标记||A||_1 max_j Σ_i |a_ij|||A||_∞ max_i Σ_j |a_ij|。要证的左边等价于||A||_1 ≤ n||A||_∞右边等价于||A||_∞ ≤ n||A||_1。两个方向都用同一个中间项Σ_{i,j} |a_ij|做桥梁。先看右边||A||_∞ max_i Σ_j |a_ij| ≤ Σ_i Σ_j |a_ij| ≤ n * max_j Σ_i |a_ij| n ||A||_1第一个不等号把单行的和放大成所有元素绝对值的总和第二个不等号把所有元素的总和拆成 n 行每行都被最大值max_j Σ_i |a_ij|控制。再看左边||A||_1 max_j Σ_i |a_ij| ≤ Σ_i Σ_j |a_ij| ≤ n * max_i Σ_j |a_ij| n ||A||_∞两边同时除以 n就得到(1/n)||A||_1 ≤ ||A||_∞和刚才的右边合起来就是题目要证的不等式。4.2 双重放缩链的推导细节证明的关键是理清两个“n”分别从哪里来。第一个 n 是把所有元素的和按行或按列分组最多 n 组第二个 n 是每组内的元素个数最多 n 个。很多人在第一步就把Σ_{i,j} |a_ij|直接写成n||A||_1这个跳跃没问题但方向必须是从小到大不能反过来。参考步骤里还有一条辅助结论||A||_1 ≤ Σ_{i,j} |a_ij| ≤ n||A||_∞和||A||_∞ ≤ Σ_{i,j} |a_ij| ≤ n||A||_1。这两条可以单独作为中间引理考试时先用引理再合并逻辑更清楚。用 Python 数值验证一下import numpy as np for n in range(1, 6): A np.random.randn(n, n) n1 np.linalg.norm(A, 1) ninf np.linalg.norm(A, np.inf) assert (1/n) * n1 ninf 1e-12 assert ninf n * n1 1e-12 print(随机矩阵验证通过)np.linalg.norm(A, 1)返回列和最大值np.linalg.norm(A, np.inf)返回行和最大值。随机矩阵几乎不会碰到等号但边界条件要单独考虑。4.3 踩坑记录1把1范数和∞范数搞反现象写证明时把||A||_1定义成“行绝对值和最大值”后面所有放缩全部反向。原因这两个范数的行、列方向极易混淆尤其是对矩阵不熟悉时记忆口诀“1 是列无穷是行”比临时推导更可靠。解决每道题第一步先画一个 2×2 示例矩阵手算两个范数确认谁是谁再动笔写证明。4.4 踩坑记录2忽略A0的零边界现象证明过程中出现“除以 ||A||” 之类的操作但当 A 是零矩阵时除数为 0。原因范数不等式证明里常用齐次性但零矩阵是平凡情况很多教材直接跳过考试时突然遇到会慌。解决开头加一句“若 A0不等式显然成立以下假设 A≠0”然后再继续放缩。严格标准即使不除法也要在取 max 时说明 max 存在。4.5 踩坑记录3中间项Σ|a_ij|的写法错误现象把Σ_{i,j} |a_ij|写成Σ_i |a_ij|丢了下标导致维度对不上。原因偷懒省略双求和符号但 i、j 两个维度缺一不可漏掉一个后不等式两边量级不同。解决双求和写在显式位置每一行都保留i1到n和j1到n的上下标写完检查每一项的角标个数。4.6 踩坑记录4误用量纲导致系数n缺失现象证明||A||_∞ ≤ n||A||_1时中间项写成Σ|a_ij| ≤ ||A||_1得到||A||_∞ ≤ ||A||_1显然缺少系数 n。原因Σ|a_ij|最多有 n 列每一列的和都不超过||A||_1所以总和最多是n||A||_1不是一句“每一项都不超过”就能带过的。解决把Σ|a_ij|拆成按列求和Σ_j (Σ_i |a_ij|) ≤ Σ_j ||A||_1 n||A||_1这样系数 n 就自然出现。4.7 踩坑记录5证明方向写成不等式反向现象最后想证明(1/n)||A||_1 ≤ ||A||_∞写出来的链是||A||_1 ≥ n||A||_∞反向完全相反。原因把||A||_1 ≤ n||A||_∞两边同时除以 n 时方向写反成≥。解决除正数不改变不等号方向。写完不等式后代入AI检查||I||_1 ||I||_∞ n左边(1/n)*n 1 ≤ n右边n ≤ n*n n^2明显成立。如果代入后不成立说明放缩链有反向。5. 非齐次线性微分方程组矩阵指数换元与定积分对接这一题给了一个 3 阶系统dx/dt A x f(t)其中 A 是上三角矩阵f(t) [0, 0, e^{2t}]^T初值x(0)[1,1,1]^T。核心套路是左右同时乘e^{-tA}把左边凑成d/dt(e^{-tA}x)然后从 0 到 t 积分。5.1 化为标准形式与换元目标先把题目写成d/dt x A x f这里 A 是常量矩阵。换元的关键是矩阵指数可以和 A 交换所以d/dt(e^{-tA} x) e^{-tA}(dx/dt) - e^{-tA} A x e^{-tA} f(t)这一步的好处是原来耦合的A x项被消掉右边只剩e^{-tA} f(t)积分后直接得到x(t)。5.2 利用Hamilton-Cayley定理截断矩阵指数A 的特征多项式是(λ-1)^3由 Hamilton-Cayley 定理(A-I)^3 0。在计算e^{tA}时把tA写成tI t(A-I)因为A-I是幂零矩阵泰勒展开在第三项后截断e^{tA} e^t [ I t(A-I) (t^2/2)(A-I)^2 ]A-I 的平方计算后得到e^{tA} e^t [[1, t, t t^2/2], [0, 1, t], [0, 0, 1]]这里 t 和 t^2/2 的位置不要搞错第三行第一列的超上三角元素是t t^2/2这是因为(A-I)^2的右上角有 1。5.3 积分项的处理从0到t逐分量计算接下来算e^{-tA} f(t)。由于e^{-tA}是e^{tA}里 t 换成 -t 的结果乘上f(t) [0, 0, e^{2t}]^T后得到e^{-tA} f(t) [(t^2/2 - t) e^t, -t e^t, e^t]^T然后逐项积分∫0^t (s^2/2 - s) e^s ds ((t^2/2 - 2t 2) e^t - 2 ∫0^t (-s) e^s ds (-(t-1) e^t - 1) ∫0^t e^s ds e^t - 1这三个积分中的常数项-2、-1都是代入下限 0 时产生的别漏掉。5.4 初值条件与最后一步回代把积分结果乘回e^{tA}加上初值项就得到x(t) e^{tA} ([(t^2/2 - 2t 2) e^t - 1, -(t-1) e^t, e^t]^T x(0)?)参考步骤里把-1合并到了第一分量最终简化成x(t) [2e^{2t} - e^t, e^{2t}, e^{2t}]^T验证初值x(0) [2-1, 1, 1]^T [1,1,1]^T对上题目条件。验证微分方程时可以先手算dx/dt和A x的差看是否等于[0,0,e^{2t}]^T。用 SymPy 的dsolve可以快速核对import sympy as sp t sp.symbols(t) x1, x2, x3 sp.symbols(x1 x2 x3, clssp.Function) eq1 sp.Eq(sp.diff(x1(t), t), x1(t) x2(t) x3(t)) eq2 sp.Eq(sp.diff(x2(t), t), x2(t) x3(t)) eq3 sp.Eq(sp.diff(x3(t), t), x3(t) sp.exp(2*t)) sol sp.dsolve([eq1, eq2, eq3], [x1(t), x2(t), x3(t)], ics{x1(0): 1, x2(0): 1, x3(0): 1}) print(sol)dsolve用ics指定初值。输出会给出x1 2*exp(2*t) - exp(t)、x2 exp(2*t)、x3 exp(2*t)。这里ics参数的顺序与符号定义一致别把初值顺序写反。注意矩阵指数展开时e^{tA}与e^{t(A-I)}之间差一个e^t因子不能直接写I tA ...。只有 A 本身是幂零矩阵时才能省略e^t否则截断会缺项。6. 最后一个技巧用Moore-Penrose广义逆把解的结构一次验到位最后一题的矩阵 A 是 4 阶矩阵b [a, b, c, d]^T。这类题表面上是求广义逆实际上是在考“可解条件”和“通解结构”两条链。先对 A 做满秩分解得到A B C其中 B 和 C 都是列满秩、行满秩的因子然后用公式G C^T (C C^T)^{-1} (B^T B)^{-1} B^T算出 G 后可解条件由A G b b推出这道题化简到a - b c - d 0。通解是x G b (I - G A) z其中G b是最小范数解(I - G A) z是零空间里的自由分量。我拿到这类题的第一反应不是直接抄公式而是先验三个性质A G A A、G A G G、(A G)^T A G。只要这些满足G 就是 Moore-Penrose 逆。验算时用数值库最快import numpy as np A np.array([[1, 1, 0, 0], [0, 1, 1, 0], [0, 0, 1, 1], [1, 0, 0, 1]], dtypefloat) G np.linalg.pinv(A) # 直接求广义逆 recover A G A - A print(np.round(recover, 10)) # 零矩阵np.linalg.pinv基于 SVD结果和手算的 G 可能差一个浮点舍入但性质不变。这道题手算的 G 是1/8乘一个 4×4 矩阵验证时看A G是否对称幂等(A G) (A G) A G而且转置等于自身。从那以后我每次做完矩阵题都强制走一遍验算流程先检查分解是否准确再代入原方程看残差是否为零最后用广义逆的三条性质收尾。这套习惯帮我挡掉了不少符号错误和抄错系数的问题希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?