想象你是一位物流仓库经理,货架上堆满了密密麻麻的箱子,客户下单后要从里面找一箱货,直接翻找会累到崩溃。聪明的做法是把整面货架拆成几个标准零件——底座、隔板、盖板,下次要什么直接拼装。在数值计算的世界里,这个“拆货架”的动作就叫矩阵分解。LU、QR、Cholesky 是三位风格迥异的整理师傅:LU 把货架切成“底座+盖子”,QR 用“托盘转正+标准货架”,Cholesky 只接对称整齐的单子且效率最高。它们做的事情本质上都是把一个大矩阵拆成几个简单矩阵的乘积,让解方程、求逆、拟合数据这些活变得又快又稳。这篇文章会带你认识这三位师傅的手法、成本与适用场景,以后遇到矩阵运算,你也能一眼选出最合适的“整理方案”。

岗位关联

对 AI 从业者来说,矩阵分解是线性回归、有限元仿真、控制系统求解等场景的底层引擎。看懂三者的区别与取舍,你就能在工程中少走弯路,既选得快,也选得稳。

目录
  1. 可视化演示
  2. 分解的本质
  3. LU分解原理
  4. QR分解原理
  5. Cholesky分解原理
  6. 计算复杂度
  7. 数值稳定性
  8. 适用场景
  9. 综合实战
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

展示系统处理流水线、实时性能指标曲线及多方案对比分析,包含数据流转、吞吐延迟监控与方案评估。

本节配有交互动效(进入视口后自动加载,约 3KB)。

系统可视化 处理流程:输入→处理→模型→输出 性能监控:实时指标 P=L×T

分解的本质

想象你是一家物流仓库的负责人,货架上密密麻麻堆着几万个箱子,顾客下单要某一箱,你得翻遍整个仓库。更聪明的做法是,把货架拆成几个标准零件:底座、隔板、盖板,下次要什么直接拼装。矩阵分解就是这种“预整理”。

在数学里,矩阵可以看作一张“数字货架”。一个 n 行 n 列的矩阵 A,如果能够找到两个结构简单的矩阵 B 和 C,使得 A 就等于 B 乘 C,那我们就可以把复杂的计算转移到 B 和 C 上。这就是矩阵分解的起点。所有分解方法都围绕“乘积还原”展开:拆的时候有章法,拼回去必须严丝合缝。

常见的三种分解——LU、QR、Cholesky——就像三位整理师傅的三种方案。它们共同的底层逻辑是:把大矩阵拆成三角矩阵、正交矩阵等“标准零件”,从而让解方程、求逆、最小二乘等操作更快更稳。这个思想贯穿整个数值计算。

把大货架拆成零件,再按顺序拼回去,三兄弟都是从这一步开始的。理解了这一点,你就可以继续看他们各自的拆法。

A=BCA = BC
这个公式说明:一个复杂矩阵可以被两个“简单零件”的乘积完全还原,后续计算都围绕这两个零件进行。
  1. 原矩阵A 是要被分解的原始矩阵,相当于仓库里那张总清单。
    AA
  2. 第一个因子B 是分解得到的第一个标准零件,结构比 A 更简单,例如三角矩阵或正交矩阵。
    BB
  3. 第二个因子C 是第二个标准零件,与 B 相乘后必须严格还原 A,不能调换顺序。
    CC
  4. 乘积还原BC 是矩阵乘法,顺序固定,因为矩阵乘法通常不满足交换律。
    BCBC

LU分解原理

老大 LU 的绝活是“一刀切”:他把整面货架沿着对角线切开,左下角做成一个带滑槽的底座 L,右上角做成一个能卡住的盖子 U。底座和盖子按顺序叠回去,就还原成原来的货架。

在数学上,LU 分解把一个方阵 A 写成一个单位下三角矩阵 L 和一个上三角矩阵 U 的乘积。所谓单位下三角,就是对角线全是 1、对角线以上全是 0;上三角就是对角线以下全是 0。这种分解非常适合用来解线性方程组 Ax=b:先解 Ly=b,再解 Ux=y,两步消元就把问题解决了,比每次重新做高斯消元省下一次分解的工作量。

老大把货架拆成底座和盖子后,以后取货只需两步,仓库效率翻倍。但有个前提:如果切到一半发现某处主元为 0,就得用“选主元”来救场,这会在后面数值稳定性一节展开。

A=LUA = LU
LU 分解把复杂的线性方程组求解拆成“前代+回代”两条流水线,一次分解可以服务多个右端项,这在工程中非常实用。
  1. 原始方阵A 是待分解的 n 阶方阵,表示仓库总清单。
    AA
  2. 下三角底座L 是单位下三角矩阵,对角线元素为 1,位置 i>j 的元素记录消元乘数。
    L=(lij),lii=1,  lij=0  (i<j)L = (l_{ij}), \quad l_{ii}=1,\; l_{ij}=0\;(i<j)
  3. 上三角盖子U 是上三角矩阵,位置 i>j 的元素为 0,对角线元素是消元后的主元。
    U=(uij),uij=0  (i>j)U = (u_{ij}), \quad u_{ij}=0\;(i>j)
  4. 乘积等于 AL 与 U 相乘,顺序不能颠倒,正好还原原始矩阵。
    LU=ALU = A

QR分解原理

老二 QR 有一手“转正”的功夫。面对歪歪扭扭的货架,他先用旋转托盘把整箱货物转正,得到一个方方正正的托盘 Q;再把货物码放到标准货架 R 上。托盘竖直“正交”,所以货物放得特别稳,不容易倒。

数学上,QR 分解把矩阵 A 写成 Q R,其中 Q 是正交矩阵,满足 QᵀQ = I,也就是 Q 的列向量两两正交且长度都为 1;R 是上三角矩阵。相比 LU 只对方阵适用,QR 对任意形状的矩阵(包括非方阵)都能做,这让它在最小二乘问题中大放异彩。

老二先转正再上架,虽然多了道工序,但货物放得稳,后续搬运不会倒。这也是为什么在病态线性方程组和最小二乘问题中,工程师们都愿意多花计算成本请 QR 师傅。

A=QRA = QR
QR 分解的核心价值在于 Q 的正交性:它既不会放大误差,又能把混乱数据“转正”成一个容易求解的上三角方程组。
  1. 正交托盘Q 是正交矩阵,满足 QᵀQ = I,相当于一个“标准直角托盘”。
    QTQ=IQ^{\mathrm{T}}Q = I
  2. 上轨货架R 是上三角矩阵,对角线以下全为 0,存放转正后的货物。
    R=(rij),rij=0  (i>j)R = (r_{ij}), \quad r_{ij}=0\;(i>j)
  3. 正交性作用因为 QᵀQ=I,所以 ‖Qx‖ = ‖x‖,误差不会被放大。
    ∥Qx∥2=∥x∥2\|Qx\|_2 = \|x\|_2
  4. 乘积还原Q 和 R 相乘等于原矩阵 A,完成“转正+上架”的完整流程。
    QR=AQR = A

Cholesky分解原理

老三 Cholesky 最挑剔:他只接“对称正定”的单子。所谓对称,就是货架左右两半完全一样;所谓正定,就是无论你从哪个方向推它,它都会把你推回来,像一块有弹性的垫子。只要符合这个条件,老三能用“底座+镜像转置”的方式完成分解。

具体来说,Cholesky 分解把一个对称正定矩阵 A 写成 A = L Lᵀ,其中 L 是下三角矩阵,且对角线元素为正。因为 A 对称,上三角部分的信息自动由下三角的转置提供,所以不需要像 LU 那样同时算两个三角矩阵。这也是它计算量只有 LU 一半的秘密。

老三的“镜像折叠”让工作量减半,仓库经理忍不住给他加鸡腿。但请注意,这份效率是有条件的:箱子必须先对称、正定,否则他的方法直接失效。

A=LLTA = LL^{\mathrm{T}}
该分解只对对称正定矩阵有效。一旦满足条件,它天然数值稳定,且无需选主元,是最快的“专职分解”。
  1. 对称正定条件A 必须满足 A = Aᵀ,且对任意非零向量 x 都有 xᵀAx > 0。
    xTAx>0x^{\mathrm{T}}Ax > 0
  2. 下三角因子L 是下三角矩阵,对角线元素为正,存储了分解得到的“底座”。
    L=(lij),lij=0  (i<j),  lii>0L = (l_{ij}), \quad l_{ij}=0\;(i<j),\; l_{ii}>0
  3. 转置镜像Lᵀ 是 L 的转置,相当于底座的镜像,自动补全上三角信息。
    LTL^{\mathrm{T}}
  4. 乘积还原L 乘 Lᵀ,严格还原原始对称矩阵 A。
    LLT=ALL^{\mathrm{T}} = A

计算复杂度

现在让三位师傅同时整理同一个 n 阶仓库,比一比谁先完工。老三 Cholesky 最快,老大 LU 居中,老二 QR 最慢。这个差距不是感觉,而是有严格的浮点运算次数(flops)作为依据。

对同样规模的稠密矩阵,三种分解的大致计算量分别为:Cholesky 约 (1/3)n³,LU 约 (2/3)n³,QR 约 (4/3)n³。也就是说,Cholesky 比 LU 快一倍,LU 又比 QR 快一倍左右。当 n 增大时,n³ 会让差距急剧拉大。

比赛结果一目了然:老三最快、老大其次、老二最慢。存储上,三者都需要 O(n²) 的空间,但 LU 可以原地覆盖原矩阵,QR 的 Q 常以隐式形式保存。效率排序在工程选型中始终是第一把尺子。

flopsLU≈23n3,flopsQR≈43n3,flopsCholesky≈13n3\mathrm{flops_{LU}} \approx \frac{2}{3}n^3, \quad \mathrm{flops_{QR}} \approx \frac{4}{3}n^3, \quad \mathrm{flops_{Cholesky}} \approx \frac{1}{3}n^3
这个不等式是选型的重要参考:在条件允许时优先选计算量更小的分解,而性能要求不高时可牺牲速度换取稳定性。
  1. 问题规模 nn 是矩阵的阶数,代表仓库里货架的边长。
    nn
  2. 三次方增长稠密矩阵分解的主导项是 n³,规模翻倍,成本变成 8 倍。
    n3n^3
  3. LU 的系数LU 约需 2/3 n³ 次浮点运算,作为中等成本基准。
    23n3\frac{2}{3}n^3
  4. QR 的系数QR 约需 4/3 n³ 次浮点运算,因为正交化额外消耗成本。
    43n3\frac{4}{3}n^3
  5. Cholesky 的系数Cholesky 约需 1/3 n³,得益于对称性,工作量减半。
    13n3\frac{1}{3}n^3

数值稳定性

仓库地面未必平整,箱子一碰就可能倒。数值稳定性研究的就是“箱子倒不倒”——即舍入误差在计算过程中会不会被放大。地面的平整度用条件数 κ(A) 来衡量。条件数越大,地面越不平,同样的误差会被放大得越夸张。

面对不平整的地面,三位师傅的应对方式不同。LU 必须用“选主元”——像在倾斜地面垫上最重的箱子,把大元素换到对角线位置,从而减小误差;QR 的正交托盘天然不放大误差,所以更稳;Cholesky 因为正定条件本身就像一块平坦的弹簧垫,天然稳定,不需要额外垫东西。稳定性往往是用计算量换来的:QR 最稳但也最贵。

κ(A)=∥A∥⋅∥A−1∥\kappa(A) = \|A\| \cdot \|A^{-1}\|
条件数刻画了方程组本身对误差的敏感程度:κ(A) 越大,问题越“病态”,任何算法都很难消除误差放大的风险。
  1. 矩阵范数‖A‖ 衡量矩阵对向量长度的最大放大倍数,可以理解为“货架的最大承重变化”。
    ∥A∥\lVert A \rVert
  2. 逆矩阵范数‖A⁻¹‖ 衡量反向操作对误差的放大程度,相当于“地面坑洞的深度”。
    ∥A−1∥\lVert A^{-1} \rVert
  3. 乘积得到条件数两者相乘,得到整体误差放大倍数。
    ∥A∥⋅∥A−1∥\lVert A \rVert \cdot \lVert A^{-1} \rVert

适用场景

选师傅不是看谁快,而是看货物长什么样和你要做什么。如果货物对称且正定,直接请老三 Cholesky,又快又稳;如果只是一个普通方阵、要解线性方程组,找老大 LU 最合适;如果数据有噪声、要做拟合或问题很病态,老二的 QR 虽然慢,但结果最可靠。

更形式化地说,工程决策遵循三条主线:一是矩阵特征,A 对称正定就优先 Cholesky;二是一般方阵求解 Ax=b,LU 是默认选择;三是最小二乘与病态问题,用 QR 而不是直接求正规方程。为什么最小二乘不推荐正规方程?因为它会把条件数从 κ(A) 放大到 κ(A)²,等于把地面又挖深了一层。

所以选师傅的核心口诀是:对称正定找老三,一般方阵找老大,最小二乘找老二。这是每个数值计算工程师的默认决策树。

ATAx=ATbA^{\mathrm{T}}Ax = A^{\mathrm{T}}b
正规方程虽然数学上简洁,但会放大条件数的平方;QR 通过正交变换避免构造 AᵀA,是工程中更稳的替代方案。
  1. 转置矩阵Aᵀ 是把 A 的行列互换得到的矩阵,相当于把货架旋转 90 度观察。
    ATA^{\mathrm{T}}
  2. 正规矩阵AᵀA 是构造出的对称矩阵,但它的条件数变成原矩阵的平方,地面更不平了。
    ATAA^{\mathrm{T}}A
  3. 右端项Aᵀb 是原数据与目标向量的内积组合,把原问题压成一个方阵问题。
    ATbA^{\mathrm{T}}b
  4. 求解目标x 是让误差平方和最小的参数向量,即最小二乘解。
    xx

综合实战

真实订单往往不是单一任务,而是多个工种的配合。假设你在机器学习平台做线性回归,设计矩阵 X 通常是“样本多、特征少”的长条形,这时 QR 或 SVD 是首选,因为直接构造 XᵀX 会放大病态风险;而在结构力学有限元软件里,刚度矩阵对称正定,工程师几乎无脑选 Cholesky 来加速。数值计算库的内部也常遵循这套决策逻辑。

以 LU 分工为例,解 Ax=b 的完整流程分三步:第一步做 LU 分解,第二步用前代求解 Ly=b,第三步用回代求解 Ux=y。整个过程可以写成链式箭头,清晰展示了“拆开再拼装”的实战价值。

三位师傅各怀绝技,配合起来才能应对真实世界的复杂订单:先识别矩阵特征,再选择合适的分解,最后高效求解。掌握这套流程,你就能在科学计算与机器学习底层优化中从容选型。

x=U−1(L−1b)x = U^{-1}(L^{-1}b)
这个式子把解方程拆成“先解底座、再解盖子”两个动作,一次分解可重复服务多个右端项,是工程中批量计算的核心技巧。
  1. 前代L⁻¹b 表示通过下三角方程组 Ly=b 求出中间变量 y。
    L−1bL^{-1}b
  2. 回代U⁻¹ 作用在 y 上,通过上三角方程组 Ux=y 求出最终解。
    U−1U^{-1}
  3. 链式求解组合起来就是 x = U⁻¹(L⁻¹b),从左到右依次完成。
    x=U−1(L−1b)x = U^{-1}(L^{-1}b)

AI 应用场景

机器学习中的线性回归求解

阶段:模型训练与参数估计

解决的问题:传统方式直接解正规方程 AᵀAx=Aᵀb 会把条件数平方放大,导致回归系数对噪声极度敏感。QR 分解通过正交变换避免构造 AᵀA,让最小二乘解在病态数据下依然稳定。

具体案例:在风控评分卡建模中,特征矩阵往往存在强相关性,直接求逆得到权重容易爆炸。工程师调用 numpy.linalg.qr 将特征矩阵分解为 Q、R,再回代求解,最终得到稳定的系数向量。

有限元仿真中的大规模方程组求解

阶段:数值仿真与物理引擎求解

解决的问题:结构力学和流体仿真中,刚度矩阵通常是对称正定的大型稀疏矩阵。Cholesky 分解利用对称性把计算量减半,且无需选主元,让仿真迭代速度大幅提升。

具体案例:桥梁载荷模拟中,有限元软件组装出几十万阶的刚度矩阵 K,调用 Cholesky 分解 K=LLᵀ 后,每一步载荷变化只需两次三角回代,实时交互仿真得以实现。

控制系统中的实时线性方程求解

阶段:在线推理与状态估计

解决的问题:机器人运动控制要求每一帧都快速解 Ax=b。LU 分解一次分解、多次回代的特点非常适合多右端项场景,配合选主元兼顾稳定与速度。

具体案例:四足机器人逆动力学计算中,需要频繁求解关节力矩方程。工程师预先对惯量矩阵做 LU 分解,之后每次控制循环只做两次三角回代,满足 1kHz 控制频率要求。

Python 演示

python43 行
import timeimport numpy as np  def solve_lu(A, b):    # NumPy 的 solve 在 LAPACK 内部走 LU 分解路径    return np.linalg.solve(A, b)  def solve_qr(A, b):    Q, R = np.linalg.qr(A)    return np.linalg.solve(R, Q.T @ b)  def solve_cholesky(A, b):    L = np.linalg.cholesky(A)    y = np.linalg.solve(L, b)    return np.linalg.solve(L.T, y)  def main():    np.random.seed(42)    n = 300    B = np.random.rand(n, n)    # 构造对称正定矩阵    A = B @ B.T + n * np.eye(n)    b = np.random.rand(n)     solvers = [        ("LU", solve_lu),        ("QR", solve_qr),        ("Cholesky", solve_cholesky),    ]    for name, fn in solvers:        t0 = time.perf_counter()        x = fn(A, b)        elapsed = time.perf_counter() - t0        residual = np.linalg.norm(A @ x - b)        print(f"{name:9s} 耗时 {elapsed*1000:6.2f} ms, 残差 {residual:.2e}")  if __name__ == "__main__":    main()
目的:在同一对称正定矩阵上分别用 LU、QR、Cholesky 三种路径解线性方程组,对比耗时与数值残差,直观验证正文中的复杂度与稳定性结论。
  1. B = np.random.rand(n, n)生成随机矩阵作为“货物原料”。
  2. A = B @ B.T + n * np.eye(n)通过 B·Bᵀ 加对角占优项保证矩阵对称正定,满足 Cholesky 的前提。
  3. np.linalg.solve(A, b)LAPACK 底层使用 LU 分解并自动选主元,是老大 LU 的工程实现。
  4. Q, R = np.linalg.qr(A)对矩阵做 QR 分解,得到正交矩阵 Q 与上三角矩阵 R。
  5. Q.T @ b利用正交性把右端项投影到 Q 的列空间,完成“转正”这一步。
  6. np.linalg.cholesky(A)直接调用 Cholesky 分解,如果 A 不对称正定会抛异常。
  7. np.linalg.norm(A @ x - b)计算残差范数,衡量解是否精确满足原方程。

常见误区

误区我听说 Cholesky 分解计算量只有 LU 的一半,那遇到任何矩阵,直接用 Cholesky 不就行了?反正都是分解。

正解Cholesky 分解有硬性前提——矩阵必须对称正定。如果矩阵不对称,LLᵀ 无法还原;如果只是对称但不正定,分解过程会出现负数开根号,直接崩溃。就像老三的“镜像折叠”法只适用于整齐对称的箱子,硬塞给他不规则货物,根本拆不动。

为何常见:因为初学者往往只记住了“Cholesky 最快”这个结论,忽略了它成立的条件,属于典型的“只记结论、不记前提”。

误区QR 分解的计算量差不多是 LU 的两倍,既然更慢,那 LU 一定更优秀,QR 可以淘汰了。

正解速度只是指标之一。QR 的正交矩阵 Q 天然不放大误差,在病态方程组和最小二乘问题中稳定性远超 LU。如果问题本身地面很“不平”,LU 即使选了主元也可能给出不可用的结果,这时多花两倍成本买稳定性是完全值得的。

为何常见:很多人比较算法时只看 flops,忽略了数值稳定性对实际解的影响,而稳定性恰恰是数值计算的核心考量。

误区只要矩阵可逆,就一定能直接得到 A=LU,中间不会出任何问题。

正解当消元过程中某个主元恰好为 0 时,标准 LU 分解会当场失败。实际工程中使用的往往是带排列矩阵 P 的 PA=LU,通过“选主元”把大元素换到对角位置。就像搬运货物时遇到倾斜地面,必须先把最重的箱子垫到支撑点,才能继续搭货架。

为何常见:教科书为了推导简洁,常先讲不带选主元的理想情况,导致学生忽略了工程实现中的关键细节。

误区同样一个矩阵,无论谁来分解,得到的 L、U、Q、R 都应该完全相同。

正解LU 分解在不同选主元策略下会得到不同的 L、U 和排列矩阵 P;QR 分解的 Q 在列空间相同的条件下也有多种选择;只有 Cholesky 在对角线取正数时结果是唯一的。三位师傅手法不同,拆出来的零件自然可能不同,但只要乘积还原成原矩阵,都是合格的分解。

为何常见:初学者习惯把线性代数中的“解唯一”惯性迁移到所有问题,忽略了矩阵分解作为一种算法有很多合法实现。

误区教材里最小二乘的标准解法就是解正规方程,那我直接照做就行,为什么要绕远路用 QR?

正解正规方程会把条件数放大成原来的平方,相当于把原本只是微斜的地面挖成陡坡,小误差会被放大到不可接受。QR 分解通过正交变换避免了构造 AᵀA 这一步,在病态数据上更稳定,是现代数值计算库的主流选择。

为何常见:因为入门教材通常先教正规方程的代数推导,很多工程实践者沿用到生产环境才发现数值问题,却不知道根本原因是条件数被平方放大。

面试题

Q1. 关于 LU 分解,下列说法正确的是?

单选题 · easy

  • A.主要用于求矩阵秩
  • B.主要用于解线性方程组← 正确答案
  • C.主要用于计算特征值
  • D.主要用于求奇异值

答案:B。LU 分解把方阵拆成下三角和上三角,核心用途是高效解 Ax=b。求秩更多用行变换,特征值和奇异值有专门的分解方法。就像老大 LU 的绝活是“拆完再拼”服务取货,而不是盘点仓库。

Q2. Cholesky 分解要求矩阵满足什么条件?

单选题 · easy

  • A.任意可逆方阵
  • B.对称正定矩阵← 正确答案
  • C.正交矩阵
  • D.上三角矩阵

答案:B。Cholesky 分解 A=LLᵀ 成立的前提是 A 必须对称正定。可逆但不对称、或对称但不正定的矩阵都无法保证分解成功。老三 Cholesky 只接“对称且弹性良好”的货物,这是他的接单条件。

Q3. 对 n 阶稠密矩阵,理论上哪种分解的计算量最小?

单选题 · easy

  • A.LU 分解
  • B.QR 分解
  • C.Cholesky 分解← 正确答案
  • D.三种分解一样快

答案:C。Cholesky 约 1/3n³,LU 约 2/3n³,QR 约 4/3n³。Cholesky 利用对称性把工作量减半,是三者中最快的。三位师傅比赛整理仓库,老三总是第一个完工。

Q4. QR 分解中的 Q 矩阵满足下列哪个性质?

单选题 · mid

  • A.QᵀQ = I,列向量两两正交← 正确答案
  • B.QQ = I,矩阵平方为单位阵
  • C.Q 是对称矩阵
  • D.Q 是上三角矩阵

答案:A。正交矩阵的关键性质是 QᵀQ=I 且列向量两两正交、长度均为 1。QQ=I 不正确,对称和上三角都不是正交矩阵的必要特征。老二 QR 的“旋转托盘”正因如此才稳。

Q5. 条件数 κ(A) 很大说明什么问题?

单选题 · mid

  • A.矩阵一定能分解成功
  • B.方程组对误差不敏感
  • C.方程组是病态的,误差会被放大← 正确答案
  • D.该矩阵一定是正交矩阵

答案:C。条件数衡量误差放大倍数,κ(A) 越大,解对输入误差越敏感,问题越病态。条件数大不代表分解失败,也不表示矩阵正交。地面越不平,箱子越容易倒,这就是条件数的直观含义。

Q6. 以下关于 Cholesky 分解的说法,正确的有?

多选题 · mid

  • A.要求矩阵对称正定← 正确答案
  • B.对任意非奇异矩阵都适用
  • C.计算量约为 LU 分解的一半← 正确答案
  • D.必须依赖选主元才能保持稳定

答案:AC。Cholesky 严格要求对称正定,所以 B 错误;它利用对称性,计算量约 1/3n³,是 LU 的 2/3n³ 的一半,C 正确;正定条件天然稳定,无需选主元,D 错误。老三只接对称正定的单,而且不用垫箱子。

Q7. LU 分解中引入部分选主元的主要目的是?

单选题 · mid

  • A.减少存储空间
  • B.提高数值稳定性← 正确答案
  • C.让分解结果唯一
  • D.加快计算速度

答案:B。选主元把大元素换到对角线位置,避免小主元带来的舍入误差爆炸,主要作用是提高稳定性。它不会减少存储,也不会让结果唯一,更不能加速,甚至还会多花少量时间。

Q8. 关于 QR 分解,下列说法正确的有?

多选题 · hard

  • A.可用于求解最小二乘问题← 正确答案
  • B.对任意形状的矩阵都适用← 正确答案
  • C.比 Cholesky 分解计算量更小
  • D.Q 是正交矩阵,不放大误差← 正确答案

答案:ABD。QR 通过正交变换稳定求解最小二乘,A 正确;QR 不要求方阵,B 正确;QR 约 4/3n³,Cholesky 约 1/3n³,C 错误;Q 正交所以 ‖Qx‖=‖x‖,误差不放大,D 正确。老二的托盘既适应各种形状,又能稳住货物,但成本确实更高。

Q9. 要稳定求解病态最小二乘问题,通常优先选择哪种方法?

单选题 · hard

  • A.直接解正规方程 AᵀAx=Aᵀb
  • B.使用 QR 分解← 正确答案
  • C.先求 A 的逆再乘 b
  • D.使用 Cholesky 分解

答案:B。正规方程会把条件数平方放大,C 选项计算逆矩阵更不稳定,D 的 Cholesky 只适用于对称正定方阵,对最小二乘的长条形矩阵并不适用。QR 分解的正交变换能避免构造 AᵀA,是病态最小二乘的首选。

Q10. 关于三种分解的计算复杂度,正确的有?

多选题 · extreme

  • A.LU 约需 2/3n³ 次浮点运算← 正确答案
  • B.QR 约需 4/3n³ 次浮点运算← 正确答案
  • C.Cholesky 约需 1/3n³ 次浮点运算← 正确答案
  • D.三者浮点运算次数完全相同

答案:ABC。LU 约 2/3n³、QR 约 4/3n³、Cholesky 约 1/3n³,三者并不相同,D 错误。效率排序是 Cholesky < LU < QR,最终选型还要结合矩阵特征与稳定性要求。