数值计算基础
数值计算基础研究如何在有限精度计算机上稳定、高效地求解线性方程组、非线性方程、积分与特征值等问题。它是几乎所有建模方法的“底层水电”:优化迭代、微分方程离散、回归求解、主成分分析,最终都落到这些基本运算上。
如果只会调用 A\b、fzero、integral、eig,在顺利时没有问题;一旦遇到不收敛、结果离谱或条件数爆炸,就需要本门类的概念来诊断:问题病态、算法不稳,还是实现写错?
这一门类解决什么问题
建模过程中你会反复遇到:
- 解 (法方程、有限差分、网络流线性化、牛顿步等);
- 求根 (平衡点、隐含方程、临界阈值);
- 计算积分 (期望、面积、概率、弱形式组装的一维原型);
- 求特征值/特征向量(振动模态、PageRank、PCA、稳定性、马尔可夫谱隙)。
本门类不追求把你训练成数值分析专家,但要求你能:
- 选出合适量级的算法;
- 设置合理容差与停止准则;
- 用残差、条件数、收敛曲线解释结果;
- 在病态时知道该缩放、换模型还是加正则。
如何选择方法
| 问题信号 | 优先考虑 |
|---|---|
| 中小规模稠密 ,直接法 | 高斯消去 / LU 分解 |
| 大型稀疏、对角占优 | Jacobi / Gauss-Seidel(及后续 Krylov 阅读) |
| 连续函数变号求根 | 二分法(稳) |
| 光滑且导数可得、初值较好 | 牛顿法(快) |
| 导数难求 | 割线法 |
| 光滑积分、节点可自由选 | Gauss 求积 |
| 简单实现、函数表积分 | 梯形 / Simpson |
| 主特征值 | 幂法 |
| 全部或大量特征值 | QR 算法(或 eig) |
口诀:直接法问稳定,迭代法问收敛,求根问初值/括号,积分问光滑,特征值问要几个。
推荐学习顺序
- 浮点与误差直觉、条件数;
- 线性方程组直接法(高斯、LU)与主元;
- 迭代法与收敛条件;
- 非线性求根(二分、牛顿、割线);
- 数值积分(梯形、Simpson、Gauss);
- 特征值(幂法、QR)。
每学一个算法,至少做两件事:与 MATLAB 内置函数对照;人为制造一个失败例子(病态、坏初值、奇异积分)。
与其他门类的关系
- 优化:牛顿法、最小二乘法方程、KKT 线性系统;
- 微分方程数值解:每步都在解线性/非线性方程;
- 统计与 PCA:特征值与线性最小二乘;
- 仿真:积分与随机量估计的数值误差要分开报告。
使用提醒
- 先估条件数再谈算法:病态问题任何算法都难救;
- 直接法重稳定性(主元),迭代法重收敛判据;
- 求根与优化都依赖初值与括号区间;
- 积分要区分方法误差与函数奇性/振荡;
- 论文中写清容差、迭代次数、残差,而不是只给最终数字;
- 避免
inv(A)*b,优先A\b。
最小诊断清单
当结果“看起来不对”时,依次检查:
- 量纲与缩放是否让矩阵元素相差 以上?
cond/ 主元是否异常?- 残差 与解误差是否被混淆?
- 迭代是否其实在发散?
- 积分区间是否含奇点?
- 特征值问题要的是全部谱还是极端特征值?
进入具体方法页后,建议对同一问题用两种算法对照,观察精度、迭代与稳定性差异。