5.5线性方程组的误差分析与矩阵的条件数
线性方程组的误差分析与矩阵的条件数 详细讲解与推导
各位同学,今天我们系统讲解线性方程组求解中的误差分析核心知识点,这是数值线性代数中判断解的可靠性、区分方程组“病态/良态”的核心理论。我会从问题背景出发,完成全流程的推导证明,最后用表格归纳核心知识点。
一、问题背景:为什么要做误差分析?
我们求解线性方程组 \(Ax=b\) 时,理论上只要 \(A\) 是非奇异矩阵(可逆),就存在唯一精确解 \(x=A^{-1}b\)。但在实际工程计算、科学实验中:
- 系数矩阵 \(A\) 的元素往往来自测量、实验观测,不可避免带有观测误差;
- 常数项 \(b\) 同样存在测量误差,且计算过程中会产生舍入误差;
- 我们实际处理的是带扰动的矩阵 \(A+\delta A\)、带扰动的常数项 \(b+\delta b\),而非理论上的精确值。
我们的核心目标是:研究 \(A\) 或 \(b\) 的微小误差(扰动),会对解 \(x\) 产生多大的影响,并找到刻画这种“影响程度”的量化指标。
二、直观认知:病态方程组与良态方程组
我们先通过一个经典例子,建立对“病态”的直观理解。
例5.7 病态方程组示例
设有线性方程组:
记为 \(Ax=b\),可验证其精确解为 \(x=(2,0)^T\)。
现在对常数项 \(b\) 做一个极其微小的扰动:\(\delta b=(0,0.0001)^T\),得到新的方程组:
可验证新的解为 \(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\) 为解的误差。
推导过程
- 展开扰动方程:\(Ax + A\delta x = b + \delta b\);
- 代入精确方程 \(Ax=b\),两边消去 \(Ax\) 和 \(b\),得:\(A\delta x = \delta b\);
- 因 \(A\) 非奇异,两边左乘 \(A^{-1}\),得解的误差核心表达式:\[\delta x = A^{-1}\delta b \]
- 对两边取从属范数,由范数相容性得:\[\|\delta x\| = \|A^{-1}\delta b\| \leq \|A^{-1}\| \cdot \|\delta b\| \tag{5.31} \]
- 对精确方程 \(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} \] - 将(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\),则
定理意义:\(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\) 可逆。
推导过程
- 展开扰动方程:\(Ax + A\delta x + \delta A x + \delta A \delta x = b\);
- 代入精确方程 \(Ax=b\),消去 \(Ax\) 和 \(b\),整理得:\[(A+\delta A)\delta x = -\delta A \cdot x \]
- 在 \(\|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 \]
- 对两边取范数,结合范数相容性与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\|} \]
- 两边除以 \(\|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\),则
定理意义:\(A\) 的相对误差 \(\frac{\|\delta A\|}{\|A\|}\),同样被 \(\|A^{-1}\| \|A\|\) 放大;且当 \(\|A^{-1}\| \|A\|\) 足够大时,分母会趋近于0,解的相对误差会急剧增大,对应矩阵的病态特性。
四、核心概念:矩阵的条件数
从两个定理可以看出:\(\|A^{-1}\| \|A\|\) 这个量,完全刻画了方程组解对输入扰动的敏感程度,也就是矩阵的“病态”程度,我们将其定义为矩阵的条件数。
定义5.5 矩阵的条件数
设 \(A\) 为非奇异矩阵,对于从属范数 \(\|\cdot\|_v\)(\(v=1,2,\infty\)),称
为矩阵 \(A\) 的条件数。
关键说明:条件数与选取的范数相关,不同范数对应不同的条件数,但其刻画的病态特性是一致的。
常用的三类条件数与推导
1. 无穷范数条件数(行和范数条件数)
其中 \(\|A\|_\infty = \max_{1\leq i\leq n} \sum_{j=1}^n |a_{ij}|\)(矩阵行和的最大值)。
2. 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|\) 为绝对值最小的特征值,则:
条件数的核心性质与证明
性质1 非奇异矩阵的条件数恒大于等于1
结论:对任意非奇异矩阵 \(A\),都有 \(\text{cond}(A)_v \geq 1\)。
证明:
由从属范数的相容性,\(\|A^{-1}\| \cdot \|A\| \geq \|A^{-1}A\| = \|I\|\),而单位矩阵的从属范数 \(\|I\|=1\),因此:
等号当且仅当 \(A\) 为正交矩阵(2-范数)或单位矩阵的非零常数倍时成立。
性质2 非零常数缩放不改变矩阵的条件数
结论:设 \(A\) 为非奇异矩阵,\(c\neq0\) 为常数,则 \(\text{cond}(cA)_v = \text{cond}(A)_v\)。
证明:
性质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\) 列的元素为:
矩阵完整形式为:
2. 3阶希尔伯特矩阵 \(H_3\) 的条件数计算(例5.8详解)
我们以 \(n=3\) 为例,完整计算其无穷范数条件数 \(\text{cond}(H_3)_\infty\),步骤如下:
步骤1:写出 \(H_3\) 与逆矩阵 \(H_3^{-1}\)
逆矩阵验证:\(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:计算条件数
根据条件数定义:
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位有效数字的微小舍入扰动,得到扰动方程组:
计算得扰动后的解为 \(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个经验特征快速判别矩阵是否可能病态:
- 三角约化时出现极小主元:用高斯消去法(尤其是列主元消去法)做三角分解时,若出现量级远小于其他元素的主元,大概率是病态矩阵;
- 行列式值极小,或行/列近似线性相关:行列式是矩阵所有特征值的乘积,行列式极小说明存在接近0的特征值,而对称矩阵的条件数为最大/最小特征值的绝对值之比,最小特征值越接近0,条件数越大,病态越严重;
- 矩阵元素数量级相差极大且无规则:元素量级跨度超过3个数量级且无明确规律的矩阵,极易出现病态特性(如例5.9的矩阵)。
三、行均衡法:改善矩阵条件数的实用技巧
当矩阵元素量级差异过大时,可通过行(列)缩放(行均衡) 改善矩阵的条件数,降低病态程度,我们通过例5.9完整讲解。
例5.9 行缩放改善条件数详解
原矩阵与条件数计算
设矩阵 \(A = \begin{pmatrix}1 & 10^4 \\ 1 & 1\end{pmatrix}\),计算其无穷范数条件数:
- 计算行列式:\(\det(A) = 1\times1 - 10^4\times1 = 1-10^4\)
- 求逆矩阵:\(A^{-1} = \frac{1}{1-10^4}\begin{pmatrix}-1 & 10^4 \\ 1 & -1\end{pmatrix}\)
- 计算无穷范数:
\(\|A\|_\infty = \max(1+10^4, 1+1) = 1+10^4\)
\(\|A^{-1}\|_\infty = \frac{1+10^4}{|1-10^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')^{-1} = \frac{1}{1-10^{-4}}\begin{pmatrix}-1 & 1 \\ 1 & -10^{-4}\end{pmatrix}\)
- 无穷范数:\(\|A'\|_\infty = \max(10^{-4}+1, 1+1) = 2\),\(\|(A')^{-1}\|_\infty = \frac{2}{1-10^{-4}}\)
- 条件数:\[\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}\),则近似解的相对误差满足:
2. 严格推导证明
-
剩余向量的核心变形:
由 \(Ax=b\),代入剩余向量定义得:\[r = b - A\bar{x} = Ax - A\bar{x} = A(x - \bar{x}) \]两边左乘 \(A^{-1}\),得误差的核心表达式:
\[x - \bar{x} = A^{-1}r \] -
误差的范数上界:
对两边取从属范数,由范数相容性得:\[\|x - \bar{x}\| = \|A^{-1}r\| \leq \|A^{-1}\| \cdot \|r\| \tag{5.39} \] -
分母的范数变形:
对精确方程 \(Ax=b\) 取范数,得:\[\|b\| = \|Ax\| \leq \|A\| \cdot \|x\| \]因 \(b\neq0\)、\(A\) 非奇异,故 \(x\neq0\),变形得:
\[\frac{1}{\|x\|} \leq \frac{\|A\|}{\|b\|} \tag{5.40} \] -
联立得最终结论:
将(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. 定理的核心工程意义
- 近似解的精度不仅取决于剩余向量的大小,更取决于矩阵的条件数;
- 若 \(A\) 是良态矩阵(\(\text{cond}(A)\) 小),剩余向量 \(r\) 小则近似解误差一定小;
- 若 \(A\) 是病态矩阵(\(\text{cond}(A)\) 极大),哪怕 \(r\) 极小,解的相对误差也可能极大。例如 \(\text{cond}(A)=10^6\),\(\frac{\|r\|}{\|b\|}=10^{-6}\),则误差上界为1,即解的相对误差可达100%,完全不可信。
五、迭代改善法:病态方程组的精度优化算法
对于不过分病态的线性方程组,我们可以通过迭代改善法提升近似解的精度,该方法是工程中处理轻度病态问题的常用算法。
1. 算法核心思想
- 先用列主元三角分解法得到方程组的初始近似解 \(x_1\);
- 计算剩余向量 \(r_1 = b - Ax_1\)(需用高精度计算,避免舍入误差);
- 求解修正方程 \(Ad_1 = r_1\),得到修正量 \(d_1\);
- 修正解:\(x_2 = x_1 + d_1\);
- 重复上述过程,直到解的精度满足要求。
理想情况下,若计算无误差,\(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\) 为最大迭代次数):
- 高精度计算剩余向量:\(r_k = b - Ax_k\)(用原始矩阵 \(A\)、双精度计算,避免舍入误差);
- 求解修正方程:\(LUd_k = Pr_k\),即先解下三角方程组 \(Ly=Pr_k\),再解上三角方程组 \(Ud_k=y\)(单精度计算);
- 收敛判断:若 \(\frac{\|d_k\|_\infty}{\|x_k\|_\infty} \leq 10^{-t}\)(精度阈值),则输出 \(x_k\),停机;
- 解的修正:\(x_{k+1} = x_k + d_k\)(单精度计算)。
步骤3:异常处理
若迭代 \(N_0\) 次仍不收敛,说明矩阵过于病态,迭代改善法失效,输出失败信息。
3. 算法关键细节与适用范围
- 三角分解仅需一次:后续迭代仅需解两次三角方程组,计算量极低,效率远高于重新求解;
- 剩余向量必须高精度计算:\(r_k\) 是两个接近的数相减,单精度计算会丢失有效数字,导致修正失效,必须用双精度;
- 适用范围:仅适用于不过分病态的方程组;若矩阵条件数过大(如 \(\text{cond}(A)>10^8\)),舍入误差会主导计算,迭代无法收敛。
4. 算例验证(例5.10)
用迭代改善法求解方程组:
- 精确解:\(x^*=(1.2240, 1.2454)^T\)
- 矩阵条件数:\(\text{cond}(A)_\infty \approx 4000\),属于轻度病态矩阵
- 计算精度:5位浮点数运算
迭代过程
- 初始解:\(x_1=(1.2363, 1.2326)^T\)
- 第一次迭代:计算 \(r_1\),求解得 \(d_1=(-0.012226, 0.012720)^T\),修正得 \(x_2=(1.2241, 1.2453)^T\)
- 第二次迭代:计算 \(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) 收藏 举报
浙公网安备 33010602011771号