昆仑山:眼中无形心中有穴之穴人合一

夫君子之行,静以修身,俭以养德;非澹泊无以明志,非宁静无以致远。夫学须静也,才须学也;非学无以广才,非志无以成学。怠慢则不能励精,险躁则不能冶性。年与时驰,意与岁去,遂成枯落,多不接世。悲守穷庐,将复何及!

 

5.5线性方程组的误差分析与矩阵的条件数

线性方程组的误差分析与矩阵的条件数 详细讲解与推导

各位同学,今天我们系统讲解线性方程组求解中的误差分析核心知识点,这是数值线性代数中判断解的可靠性、区分方程组“病态/良态”的核心理论。我会从问题背景出发,完成全流程的推导证明,最后用表格归纳核心知识点。


一、问题背景:为什么要做误差分析?

我们求解线性方程组 \(Ax=b\) 时,理论上只要 \(A\) 是非奇异矩阵(可逆),就存在唯一精确解 \(x=A^{-1}b\)。但在实际工程计算、科学实验中:

  1. 系数矩阵 \(A\) 的元素往往来自测量、实验观测,不可避免带有观测误差;
  2. 常数项 \(b\) 同样存在测量误差,且计算过程中会产生舍入误差;
  3. 我们实际处理的是带扰动的矩阵 \(A+\delta A\)、带扰动的常数项 \(b+\delta b\),而非理论上的精确值。

我们的核心目标是:研究 \(A\)\(b\) 的微小误差(扰动),会对解 \(x\) 产生多大的影响,并找到刻画这种“影响程度”的量化指标。


二、直观认知:病态方程组与良态方程组

我们先通过一个经典例子,建立对“病态”的直观理解。

例5.7 病态方程组示例

设有线性方程组:

\[\begin{pmatrix} 1 & 1 \\ 1 & 1.0001 \end{pmatrix} \begin{pmatrix} x_1 \\ x_2 \end{pmatrix} = \begin{pmatrix} 2 \\ 2 \end{pmatrix} \]

记为 \(Ax=b\),可验证其精确解为 \(x=(2,0)^T\)

现在对常数项 \(b\) 做一个极其微小的扰动:\(\delta b=(0,0.0001)^T\),得到新的方程组:

\[\begin{pmatrix} 1 & 1 \\ 1 & 1.0001 \end{pmatrix} \begin{pmatrix} y_1 \\ y_2 \end{pmatrix} = \begin{pmatrix} 2 \\ 2.0001 \end{pmatrix} \]

可验证新的解为 \(y=(1,1)^T\)

结果分析

  • 常数项的相对误差:\(\frac{\|\delta b\|_\infty}{\|b\|_\infty} = \frac{0.0001}{2} = 5\times10^{-5}\)(仅万分之0.5的微小变化);
  • 解的相对误差:\(\frac{\|\delta x\|_\infty}{\|x\|_\infty} = \frac{\|y-x\|_\infty}{\|x\|_\infty} = \frac{1}{2} = 50\%\)(解发生了量级的巨大变化)。

这个例子说明:部分线性方程组,输入的微小扰动会被急剧放大,导致解完全失真。由此我们给出核心定义:

定义5.4 病态与良态方程组

如果矩阵 \(A\) 或常数项 \(b\) 的微小变化,引起线性方程组 \(Ax=b\) 解的巨大变化,则称此线性方程组为病态方程组,系数矩阵 \(A\) 称为病态矩阵;反之则称方程组为良态方程组\(A\)良态矩阵

关键说明:矩阵的“病态”是矩阵本身的固有属性,和求解算法无关——哪怕用精度再高的算法,病态矩阵的解也会对输入扰动极度敏感。


三、核心理论:扰动误差的定量推导

我们分两种最核心的场景,完成解的误差上界的严格推导,所有推导均基于矩阵从属范数的相容性\(\|AB\|\leq\|A\|\|B\|\)\(\|Ax\|\leq\|A\|\|x\|\))。

场景1:\(A\) 精确无误差,\(b\) 存在扰动 \(\delta b\)

已知条件

  • 精确方程:\(Ax=b\)\(A\) 非奇异,\(b\neq0\),精确解为 \(x\)
  • 扰动方程:\(A(x+\delta x)=b+\delta b\),解为 \(x+\delta x\)\(\delta x\) 为解的误差。

推导过程

  1. 展开扰动方程:\(Ax + A\delta x = b + \delta b\)
  2. 代入精确方程 \(Ax=b\),两边消去 \(Ax\)\(b\),得:\(A\delta x = \delta b\)
  3. \(A\) 非奇异,两边左乘 \(A^{-1}\),得解的误差核心表达式:

    \[\delta x = A^{-1}\delta b \]

  4. 对两边取从属范数,由范数相容性得:

    \[\|\delta x\| = \|A^{-1}\delta b\| \leq \|A^{-1}\| \cdot \|\delta b\| \tag{5.31} \]

  5. 对精确方程 \(Ax=b\) 取范数,得:\(\|b\| = \|Ax\| \leq \|A\| \cdot \|x\|\)
    \(b\neq0\)\(A\) 非奇异,故 \(x\neq0\)\(\|x\|\neq0\),变形得:

    \[\frac{1}{\|x\|} \leq \frac{\|A\|}{\|b\|} \tag{5.32} \]

  6. 将(5.31)与(5.32)相乘,得到解的相对误差上界

    \[\frac{\|\delta x\|}{\|x\|} \leq \|A^{-1}\| \cdot \|A\| \cdot \frac{\|\delta b\|}{\|b\|} \]

定理5.18(b的扰动对解的影响)

\(A\) 是非奇异矩阵,\(Ax=b\neq0\),且 \(A(x+\delta x)=b+\delta b\),则

\[\boldsymbol{\frac{\|\delta x\|}{\|x\|} \leq \|A^{-1}\| \|A\| \cdot \frac{\|\delta b\|}{\|b\|}} \]

定理意义:\(b\) 的相对误差 \(\frac{\|\delta b\|}{\|b\|}\),在解中被放大了 \(\|A^{-1}\| \|A\|\) 倍,这个放大倍数就是解的相对误差的上界。


场景2:\(b\) 精确无误差,\(A\) 存在扰动 \(\delta A\)

已知条件

  • 精确方程:\(Ax=b\)\(A\) 非奇异,\(b\neq0\),精确解为 \(x\)
  • 扰动方程:\((A+\delta A)(x+\delta x)=b\),解为 \(x+\delta x\)\(\delta x\) 为解的误差。

前置引理(Banach引理)

若方阵 \(B\) 满足 \(\|B\|<1\),则 \(I+B\) 可逆,且 \(\|(I+B)^{-1}\| \leq \frac{1}{1-\|B\|}\)

本引理保证了扰动后的矩阵 \(A+\delta A\) 可逆:
\(A+\delta A = A(I + A^{-1}\delta A)\),当 \(\|A^{-1}\delta A\| <1\) 时,\(I + A^{-1}\delta A\) 可逆,故 \(A+\delta A\) 可逆。

推导过程

  1. 展开扰动方程:\(Ax + A\delta x + \delta A x + \delta A \delta x = b\)
  2. 代入精确方程 \(Ax=b\),消去 \(Ax\)\(b\),整理得:

    \[(A+\delta A)\delta x = -\delta A \cdot x \]

  3. \(\|A^{-1}\delta A\| <1\) 的条件下,\(A+\delta A\) 可逆,两边左乘 \((A+\delta A)^{-1}\),得:

    \[\delta x = -(A+\delta A)^{-1} \delta A x = -(I + A^{-1}\delta A)^{-1} A^{-1} \delta A x \]

  4. 对两边取范数,结合范数相容性与Banach引理,得:

    \[\|\delta x\| \leq \|(I + A^{-1}\delta A)^{-1}\| \cdot \|A^{-1}\| \cdot \|\delta A\| \cdot \|x\| \leq \frac{\|A^{-1}\| \cdot \|\delta A\| \cdot \|x\|}{1 - \|A^{-1}\delta A\|} \]

  5. 两边除以 \(\|x\|\)\(x\neq0\)),再利用 \(\|A^{-1}\delta A\| \leq \|A^{-1}\| \cdot \|\delta A\|\) 放大分母,得到解的相对误差上界

    \[\frac{\|\delta x\|}{\|x\|} \leq \frac{\|A^{-1}\| \|A\| \cdot \frac{\|\delta A\|}{\|A\|}}{1 - \|A^{-1}\| \|A\| \cdot \frac{\|\delta A\|}{\|A\|}} \]

定理5.19(A的扰动对解的影响)

\(A\) 为非奇异矩阵,\(Ax=b\neq0\),且 \((A+\delta A)(x+\delta x)=b\),若 \(\|A^{-1}\| \|\delta A\| <1\),则

\[\boldsymbol{\frac{\|\delta x\|}{\|x\|} \leq \frac{\|A^{-1}\| \|A\| \cdot \frac{\|\delta A\|}{\|A\|}}{1 - \|A^{-1}\| \|A\| \cdot \frac{\|\delta A\|}{\|A\|}}} \]

定理意义:\(A\) 的相对误差 \(\frac{\|\delta A\|}{\|A\|}\),同样被 \(\|A^{-1}\| \|A\|\) 放大;且当 \(\|A^{-1}\| \|A\|\) 足够大时,分母会趋近于0,解的相对误差会急剧增大,对应矩阵的病态特性。


四、核心概念:矩阵的条件数

从两个定理可以看出:\(\|A^{-1}\| \|A\|\) 这个量,完全刻画了方程组解对输入扰动的敏感程度,也就是矩阵的“病态”程度,我们将其定义为矩阵的条件数

定义5.5 矩阵的条件数

\(A\) 为非奇异矩阵,对于从属范数 \(\|\cdot\|_v\)\(v=1,2,\infty\)),称

\[\boldsymbol{\text{cond}(A)_v = \|A^{-1}\|_v \cdot \|A\|_v} \]

为矩阵 \(A\) 的条件数。

关键说明:条件数与选取的范数相关,不同范数对应不同的条件数,但其刻画的病态特性是一致的。


常用的三类条件数与推导

1. 无穷范数条件数(行和范数条件数)

\[\text{cond}(A)_\infty = \|A\|_\infty \cdot \|A^{-1}\|_\infty \]

其中 \(\|A\|_\infty = \max_{1\leq i\leq n} \sum_{j=1}^n |a_{ij}|\)(矩阵行和的最大值)。

2. 2-范数条件数(谱条件数,最常用)

\[\text{cond}(A)_2 = \|A\|_2 \cdot \|A^{-1}\|_2 \]

谱条件数的表达式推导
  • 矩阵的2-范数(谱范数)定义:\(\|A\|_2 = \sqrt{\lambda_{\text{max}}(A^T A)}\),即 \(A^T A\) 的最大特征值的平方根(也等于 \(A\) 的最大奇异值);
  • \(A^{-1}\) 的2-范数:\(\|A^{-1}\|_2 = \sqrt{\lambda_{\text{max}}((A^{-1})^T A^{-1})} = \sqrt{\lambda_{\text{max}}((AA^T)^{-1})}\)
  • 矩阵逆的特征值是原矩阵特征值的倒数,因此 \(\lambda_{\text{max}}((AA^T)^{-1}) = \frac{1}{\lambda_{\text{min}}(AA^T)}\)
  • 又因 \(A^T A\)\(AA^T\) 的非零特征值完全相同,故 \(\lambda_{\text{min}}(AA^T)=\lambda_{\text{min}}(A^T A)\)
  • 最终得到谱条件数的标准表达式:

    \[\boldsymbol{\text{cond}(A)_2 = \sqrt{\frac{\lambda_{\text{max}}(A^T A)}{\lambda_{\text{min}}(A^T A)}}} \]

对称矩阵的谱条件数简化

\(A\) 为对称矩阵时,\(A^T=A\),故 \(A^T A = A^2\),其特征值为 \(A\) 的特征值的平方。设 \(|\lambda_1|\)\(A\) 绝对值最大的特征值,\(|\lambda_n|\) 为绝对值最小的特征值,则:

\[\boldsymbol{\text{cond}(A)_2 = \frac{|\lambda_1|}{|\lambda_n|}} \]


条件数的核心性质与证明

性质1 非奇异矩阵的条件数恒大于等于1

结论:对任意非奇异矩阵 \(A\),都有 \(\text{cond}(A)_v \geq 1\)
证明
由从属范数的相容性,\(\|A^{-1}\| \cdot \|A\| \geq \|A^{-1}A\| = \|I\|\),而单位矩阵的从属范数 \(\|I\|=1\),因此:

\[\text{cond}(A) = \|A^{-1}\| \|A\| \geq 1 \]

等号当且仅当 \(A\) 为正交矩阵(2-范数)或单位矩阵的非零常数倍时成立。

性质2 非零常数缩放不改变矩阵的条件数

结论:设 \(A\) 为非奇异矩阵,\(c\neq0\) 为常数,则 \(\text{cond}(cA)_v = \text{cond}(A)_v\)
证明

\[\text{cond}(cA) = \|(cA)^{-1}\| \cdot \|cA\| = \left|\frac{1}{c}\right| \|A^{-1}\| \cdot |c| \|A\| = \|A^{-1}\| \|A\| = \text{cond}(A) \]

性质3 正交变换不改变矩阵的2-范数条件数

结论1:若 \(A\) 为正交矩阵,则 \(\text{cond}(A)_2 = 1\)
证明
正交矩阵满足 \(A^T A = AA^T = I\),故 \(A^{-1}=A^T\)\(\|A\|_2 = \sqrt{\lambda_{\text{max}}(I)}=1\)\(\|A^{-1}\|_2=\|A^T\|_2=1\),因此 \(\text{cond}(A)_2=1\times1=1\)

结论2:若 \(A\) 为非奇异矩阵,\(Q\) 为正交矩阵,则 \(\text{cond}(QA)_2 = \text{cond}(AQ)_2 = \text{cond}(A)_2\)
证明
正交矩阵不改变矩阵的2-范数:\(\|QA\|_2 = \sqrt{\lambda_{\text{max}}((QA)^T QA)} = \sqrt{\lambda_{\text{max}}(A^T A)} = \|A\|_2\)
同理 \(\|(QA)^{-1}\|_2 = \|A^{-1}Q^T\|_2 = \|A^{-1}\|_2\),因此 \(\text{cond}(QA)_2 = \text{cond}(A)_2\)\(\text{cond}(AQ)_2\) 同理可证。


五、核心知识点归纳总结表

分类 核心内容 公式/结论 关键意义
基础定义 病态方程组 \(A\)\(b\) 的微小变化引起解的巨大变化的方程组 刻画方程组解对扰动的敏感性,是矩阵固有属性
良态方程组 \(A\)\(b\) 的微小变化仅引起解的微小变化的方程组 解的可靠性高,受计算误差影响小
矩阵的条件数 \(\text{cond}(A)_v = |A^{-1}|_v |A|_v\)\(v=1,2,\infty\) 量化矩阵病态程度的核心指标,值越大越病态
误差估计定理 \(A\) 精确、\(b\) 有扰动 \(\frac{|\delta x|}{|x|} \leq \text{cond}(A) \cdot \frac{|\delta b|}{|b|}\) \(b\) 的相对误差被条件数放大,得到解的相对误差上界
\(b\) 精确、\(A\) 有扰动 \(\frac{|\delta x|}{|x|} \leq \frac{\text{cond}(A) \cdot \frac{|\delta A|}{|A|}}{1 - \text{cond}(A) \cdot \frac{|\delta A|}{|A|}}\)\(|A^{-1}\delta A|<1\) \(A\) 的相对误差被条件数放大,条件数过大时误差上界急剧增长
常用条件数 无穷范数条件数 \(\text{cond}(A)_\infty = |A|_\infty |A^{-1}|_\infty\) 计算简便,适合低阶矩阵手动计算
2-范数谱条件数 \(\text{cond}(A)_2 = \sqrt{\frac{\lambda_{\text{max}}(A^T A)}{\lambda_{\text{min}}(A^T A)}}\) 最常用,与矩阵奇异值直接相关,适合数值计算
对称矩阵谱条件数 $\text{cond}(A)_2 = \frac{ \lambda_{\text{max}}
条件数核心性质 下界性质 \(\text{cond}(A) \geq 1\) 条件数最小为1,对应最优良态矩阵
常数缩放不变性 \(\text{cond}(cA) = \text{cond}(A)\)\(c\neq0\) 矩阵整体缩放不改变其病态程度
正交变换不变性 \(\text{cond}(QA)_2 = \text{cond}(AQ)_2 = \text{cond}(A)_2\)\(Q\) 正交) 正交变换不会恶化矩阵的病态程度,是数值计算中优选的变换方式

补充:例5.7的条件数验证

例5.7中 \(A=\begin{pmatrix}1&1\\1&1.0001\end{pmatrix}\),计算得:

  • \(A^{-1} = \begin{pmatrix}10001&-10000\\-10000&10000\end{pmatrix}\)
  • \(\|A\|_\infty = 2.0001\)\(\|A^{-1}\|_\infty = 20001\)
  • \(\text{cond}(A)_\infty = 2.0001 \times 20001 \approx 40002\)

条件数高达4万量级,完美解释了为什么 \(b\) 的万分之0.5的扰动,会导致解50%的巨大误差——扰动被条件数放大了4万倍,这就是病态矩阵的核心特征。


病态矩阵实例、事后误差估计与迭代改善法 详细讲解与推导

各位同学,我们承接上一节矩阵条件数与误差分析的核心理论,今天通过经典病态矩阵实例深化对病态特性的理解,讲解近似解的事后误差估计方法,并介绍针对病态方程组的迭代改善算法,完成线性方程组误差分析模块的完整闭环。所有内容均包含严格推导、实例详解与核心结论归纳。


一、经典病态矩阵:希尔伯特(Hilbert)矩阵详解

希尔伯特矩阵是数值线性代数中最经典的对称正定高度病态矩阵,是验证病态特性、测试数值算法稳定性的标准算例。

1. 希尔伯特矩阵的定义

n阶希尔伯特矩阵 \(H_n\) 是一个n阶方阵,其第 \(i\) 行第 \(j\) 列的元素为:

\[H_n(i,j) = \frac{1}{i+j-1}, \quad i,j=1,2,\dots,n \]

矩阵完整形式为:

\[H_n = \begin{pmatrix} 1 & \frac{1}{2} & \dots & \frac{1}{n} \\ \frac{1}{2} & \frac{1}{3} & \dots & \frac{1}{n+1} \\ \vdots & \vdots & & \vdots \\ \frac{1}{n} & \frac{1}{n+1} & \dots & \frac{1}{2n-1} \end{pmatrix}\]

2. 3阶希尔伯特矩阵 \(H_3\) 的条件数计算(例5.8详解)

我们以 \(n=3\) 为例,完整计算其无穷范数条件数 \(\text{cond}(H_3)_\infty\),步骤如下:

步骤1:写出 \(H_3\) 与逆矩阵 \(H_3^{-1}\)

\[H_3 = \begin{pmatrix} 1 & \frac{1}{2} & \frac{1}{3} \\ \frac{1}{2} & \frac{1}{3} & \frac{1}{4} \\ \frac{1}{3} & \frac{1}{4} & \frac{1}{5} \end{pmatrix}, \quad H_3^{-1} = \begin{pmatrix} 9 & -36 & 30 \\ -36 & 192 & -180 \\ 30 & -180 & 180 \end{pmatrix}\]

逆矩阵验证:\(H_3 H_3^{-1} = I\),可通过矩阵乘法直接验证正确性。

步骤2:计算无穷范数(行和范数)

无穷范数定义:\(\|A\|_\infty = \max_{1\leq i\leq n} \sum_{j=1}^n |a_{ij}|\),即矩阵每行元素绝对值和的最大值。

  • \(H_3\)
    第一行和:\(1 + \frac{1}{2} + \frac{1}{3} = \frac{11}{6} \approx 1.833\)
    第二行和:\(\frac{1}{2} + \frac{1}{3} + \frac{1}{4} = \frac{13}{12} \approx 1.083\)
    第三行和:\(\frac{1}{3} + \frac{1}{4} + \frac{1}{5} = \frac{47}{60} \approx 0.783\)
    因此 \(\|H_3\|_\infty = \frac{11}{6}\)

  • \(H_3^{-1}\)
    第一行和:\(9 + 36 + 30 = 75\)
    第二行和:\(36 + 192 + 180 = 408\)
    第三行和:\(30 + 180 + 180 = 390\)
    因此 \(\|H_3^{-1}\|_\infty = 408\)

步骤3:计算条件数

根据条件数定义:

\[\text{cond}(H_3)_\infty = \|H_3\|_\infty \cdot \|H_3^{-1}\|_\infty = \frac{11}{6} \times 408 = 748 \]

3. 希尔伯特矩阵的病态特性与实例验证

核心特性

希尔伯特矩阵的条件数随阶数 \(n\)指数级增长

  • \(n=3\)\(\text{cond}(H_3)_\infty=748\)
  • \(n=6\)\(\text{cond}(H_6)_\infty \approx 2.9 \times 10^7\)
  • \(n=7\)\(\text{cond}(H_7)_\infty \approx 9.85 \times 10^8\)

阶数越高,矩阵病态程度越严重,哪怕是计算机舍入级别的微小误差,也会导致解完全失真。

扰动误差验证

我们构造方程组 \(H_3 x = b\),其中 \(b=(\frac{11}{6}, \frac{13}{12}, \frac{47}{60})^T\),其精确解为 \(x=(1,1,1)^T\)

\(H_3\)\(b\) 做3位有效数字的微小舍入扰动,得到扰动方程组:

\[\begin{pmatrix} 1.00 & 0.500 & 0.333 \\ 0.500 & 0.333 & 0.250 \\ 0.333 & 0.250 & 0.200 \end{pmatrix} (x+\delta x) = \begin{pmatrix} 1.83 \\ 1.08 \\ 0.783 \end{pmatrix}\]

计算得扰动后的解为 \(x+\delta x=(1.0895, 0.48797, 1.4910)^T\),误差分析如下:

  • 矩阵相对误差:\(\frac{\|\delta H_3\|_\infty}{\|H_3\|_\infty} \approx 0.18\times10^{-4} < 0.02\%\)
  • 常数项相对误差:\(\frac{\|\delta b\|_\infty}{\|b\|_\infty} \approx 0.182\%\)
  • 解的相对误差:\(\frac{\|\delta x\|_\infty}{\|x\|_\infty} \approx 51.2\%\)

结论验证:输入的相对误差不到0.2%,但解的相对误差超过50%,完全符合上一节的误差估计定理——扰动被条件数 \(\text{cond}(H_3)_\infty=748\) 放大,完美印证了条件数对病态程度的刻画能力。


二、病态矩阵的经验判别方法

实际工程计算中,计算矩阵的逆再求条件数的成本较高,我们可以通过以下3个经验特征快速判别矩阵是否可能病态:

  1. 三角约化时出现极小主元:用高斯消去法(尤其是列主元消去法)做三角分解时,若出现量级远小于其他元素的主元,大概率是病态矩阵;
  2. 行列式值极小,或行/列近似线性相关:行列式是矩阵所有特征值的乘积,行列式极小说明存在接近0的特征值,而对称矩阵的条件数为最大/最小特征值的绝对值之比,最小特征值越接近0,条件数越大,病态越严重;
  3. 矩阵元素数量级相差极大且无规则:元素量级跨度超过3个数量级且无明确规律的矩阵,极易出现病态特性(如例5.9的矩阵)。

三、行均衡法:改善矩阵条件数的实用技巧

当矩阵元素量级差异过大时,可通过行(列)缩放(行均衡) 改善矩阵的条件数,降低病态程度,我们通过例5.9完整讲解。

例5.9 行缩放改善条件数详解

原矩阵与条件数计算

设矩阵 \(A = \begin{pmatrix}1 & 10^4 \\ 1 & 1\end{pmatrix}\),计算其无穷范数条件数:

  1. 计算行列式:\(\det(A) = 1\times1 - 10^4\times1 = 1-10^4\)
  2. 求逆矩阵:\(A^{-1} = \frac{1}{1-10^4}\begin{pmatrix}-1 & 10^4 \\ 1 & -1\end{pmatrix}\)
  3. 计算无穷范数:
    \(\|A\|_\infty = \max(1+10^4, 1+1) = 1+10^4\)
    \(\|A^{-1}\|_\infty = \frac{1+10^4}{|1-10^4|}\)
  4. 条件数:

    \[\text{cond}(A)_\infty = \|A\|_\infty \|A^{-1}\|_\infty = \frac{(1+10^4)^2}{10^4-1} \approx 10^4 \]

    条件数约1万,属于病态矩阵。

行均衡缩放处理

\(A\) 的第一行引入比例因子 \(s_1=10^4\)(第一行元素的最大绝对值),用 \(s_1\) 除第一个方程,得到等价方程组 \(A'x = b'\),其中:

\[A' = \begin{pmatrix}10^{-4} & 1 \\ 1 & 1\end{pmatrix} \]

缩放后条件数计算

  1. 求逆矩阵:\((A')^{-1} = \frac{1}{1-10^{-4}}\begin{pmatrix}-1 & 1 \\ 1 & -10^{-4}\end{pmatrix}\)
  2. 无穷范数:\(\|A'\|_\infty = \max(10^{-4}+1, 1+1) = 2\)\(\|(A')^{-1}\|_\infty = \frac{2}{1-10^{-4}}\)
  3. 条件数:

    \[\text{cond}(A')_\infty = 2 \times \frac{2}{1-10^{-4}} \approx 4 \]

核心结论:通过行均衡缩放,矩阵条件数从10⁴降至4,从病态变为良态,大幅降低了求解误差。
注意:行/列缩放仅能改善因元素量级不均导致的病态,无法改变矩阵本身的固有病态(如希尔伯特矩阵),且缩放需保证方程组等价,不能改变解的真值。


四、事后误差估计定理(定理5.20)

实际计算中,我们无法得到方程组的精确解 \(x\),只能得到近似解 \(\bar{x}\),如何定量估计近似解的误差?事后误差估计定理给出了核心方法。

1. 定理内容

\(A\) 为非奇异矩阵,\(x\) 是线性方程组 \(Ax=b\neq0\) 的精确解,\(\bar{x}\) 是方程组的近似解,定义剩余向量 \(r = b - A\bar{x}\),则近似解的相对误差满足:

\[\frac{\|x - \bar{x}\|}{\|x\|} \leq \text{cond}(A) \cdot \frac{\|r\|}{\|b\|} \]

2. 严格推导证明

  1. 剩余向量的核心变形:
    \(Ax=b\),代入剩余向量定义得:

    \[r = b - A\bar{x} = Ax - A\bar{x} = A(x - \bar{x}) \]

    两边左乘 \(A^{-1}\),得误差的核心表达式:

    \[x - \bar{x} = A^{-1}r \]

  2. 误差的范数上界:
    对两边取从属范数,由范数相容性得:

    \[\|x - \bar{x}\| = \|A^{-1}r\| \leq \|A^{-1}\| \cdot \|r\| \tag{5.39} \]

  3. 分母的范数变形:
    对精确方程 \(Ax=b\) 取范数,得:

    \[\|b\| = \|Ax\| \leq \|A\| \cdot \|x\| \]

    \(b\neq0\)\(A\) 非奇异,故 \(x\neq0\),变形得:

    \[\frac{1}{\|x\|} \leq \frac{\|A\|}{\|b\|} \tag{5.40} \]

  4. 联立得最终结论:
    将(5.39)与(5.40)相乘,左边为相对误差,右边代入条件数定义 \(\text{cond}(A)=\|A^{-1}\|\|A\|\),得:

    \[\frac{\|x - \bar{x}\|}{\|x\|} \leq \|A^{-1}\|\|A\| \cdot \frac{\|r\|}{\|b\|} = \text{cond}(A) \cdot \frac{\|r\|}{\|b\|} \]

    定理得证。

3. 定理的核心工程意义

  1. 近似解的精度不仅取决于剩余向量的大小,更取决于矩阵的条件数
  2. \(A\) 是良态矩阵(\(\text{cond}(A)\) 小),剩余向量 \(r\) 小则近似解误差一定小;
  3. \(A\) 是病态矩阵(\(\text{cond}(A)\) 极大),哪怕 \(r\) 极小,解的相对误差也可能极大。例如 \(\text{cond}(A)=10^6\)\(\frac{\|r\|}{\|b\|}=10^{-6}\),则误差上界为1,即解的相对误差可达100%,完全不可信。

五、迭代改善法:病态方程组的精度优化算法

对于不过分病态的线性方程组,我们可以通过迭代改善法提升近似解的精度,该方法是工程中处理轻度病态问题的常用算法。

1. 算法核心思想

  1. 先用列主元三角分解法得到方程组的初始近似解 \(x_1\)
  2. 计算剩余向量 \(r_1 = b - Ax_1\)(需用高精度计算,避免舍入误差);
  3. 求解修正方程 \(Ad_1 = r_1\),得到修正量 \(d_1\)
  4. 修正解:\(x_2 = x_1 + d_1\)
  5. 重复上述过程,直到解的精度满足要求。

理想情况下,若计算无误差,\(A(x_1+d_1)=Ax_1 + Ad_1 = Ax_1 + r_1 = b\)\(x_2\) 就是精确解;实际计算存在舍入误差,因此需要迭代修正。

2. 算法完整步骤(算法5.3)

设方程组 \(Ax=b\)\(A\in\mathbb{R}^{n\times n}\) 非奇异,为不过分病态的矩阵,计算机采用 \(\beta\) 进制,字长为 \(t\)

步骤1:一次性列主元三角分解

用列主元三角分解实现 \(PA = LU\),其中 \(P\) 为置换矩阵,\(L\) 为单位下三角矩阵,\(U\) 为上三角矩阵,求解初始近似解 \(x_1\)(单精度计算)。

步骤2:迭代修正过程

\(k=1,2,\dots,N_0\)\(N_0\) 为最大迭代次数):

  1. 高精度计算剩余向量\(r_k = b - Ax_k\)(用原始矩阵 \(A\)、双精度计算,避免舍入误差);
  2. 求解修正方程\(LUd_k = Pr_k\),即先解下三角方程组 \(Ly=Pr_k\),再解上三角方程组 \(Ud_k=y\)(单精度计算);
  3. 收敛判断:若 \(\frac{\|d_k\|_\infty}{\|x_k\|_\infty} \leq 10^{-t}\)(精度阈值),则输出 \(x_k\),停机;
  4. 解的修正\(x_{k+1} = x_k + d_k\)(单精度计算)。

步骤3:异常处理

若迭代 \(N_0\) 次仍不收敛,说明矩阵过于病态,迭代改善法失效,输出失败信息。

3. 算法关键细节与适用范围

  1. 三角分解仅需一次:后续迭代仅需解两次三角方程组,计算量极低,效率远高于重新求解;
  2. 剩余向量必须高精度计算\(r_k\) 是两个接近的数相减,单精度计算会丢失有效数字,导致修正失效,必须用双精度;
  3. 适用范围:仅适用于不过分病态的方程组;若矩阵条件数过大(如 \(\text{cond}(A)>10^8\)),舍入误差会主导计算,迭代无法收敛。

4. 算例验证(例5.10)

用迭代改善法求解方程组:

\[\begin{pmatrix}1.0303 & 0.99030 \\ 0.99030 & 0.95285\end{pmatrix}\begin{pmatrix}x_1 \\ x_2\end{pmatrix} = \begin{pmatrix}2.4944 \\ 2.3988\end{pmatrix} \]

  • 精确解:\(x^*=(1.2240, 1.2454)^T\)
  • 矩阵条件数:\(\text{cond}(A)_\infty \approx 4000\),属于轻度病态矩阵
  • 计算精度:5位浮点数运算

迭代过程

  1. 初始解:\(x_1=(1.2363, 1.2326)^T\)
  2. 第一次迭代:计算 \(r_1\),求解得 \(d_1=(-0.012226, 0.012720)^T\),修正得 \(x_2=(1.2241, 1.2453)^T\)
  3. 第二次迭代:计算 \(r_2\),求解得 \(d_2=(-3.60138\times10^{-3}, -3.74685\times10^{-4})^T\),修正得 \(x_3=(1.2240, 1.2454)^T\),与精确解完全一致。

结论:仅2次迭代,就将初始解的误差修正到精确值,验证了迭代改善法对轻度病态方程组的有效性。


六、核心知识点归纳总结表

分类 核心内容 关键公式/结论 工程意义
经典病态矩阵 希尔伯特矩阵 \(H_n(i,j)=\frac{1}{i+j-1}\),条件数随n指数增长 数值算法稳定性测试的标准算例,是病态矩阵的典型代表
病态矩阵判别 经验判别方法 1. 三角分解出现小主元;2. 行列式极小/行近似线性相关;3. 元素量级差异极大 无需计算逆矩阵,快速预判矩阵病态风险
条件数改善 行均衡法 对行/列做缩放,使行/列范数大致相等 可大幅改善因元素量级不均导致的病态,降低求解误差
误差估计 事后误差估计定理 \(\frac{|x-\bar{x}|}{|x|} \leq \text{cond}(A)\cdot\frac{|r|}{|b|}\) 实际计算中,通过剩余向量定量估计近似解的误差上界
病态方程组求解 迭代改善法 核心步骤:三角分解→计算剩余→求解修正量→迭代修正 低成本提升轻度病态方程组的解精度,工程实用性极强
核心结论 病态特性本质 矩阵的病态是固有属性,与求解算法无关;条件数越大,病态越严重 病态方程组的核心问题是输入误差被急剧放大,仅靠算法优化无法根治,需采用高精度运算或预处理

posted on 2026-03-01 06:56  Indian_Mysore  阅读(0)  评论(0)    收藏  举报

导航