Appearance
第1章:浮点运算、条件数与稳定性
数值计算的主要问题
数值方法处理的对象不只有一个数。线性方程求向量,插值和逼近求函数的有限表示,微分方程求随时间变化的轨迹。不同对象最终常被转换为有限维计算,因此线性代数是许多方法的共同组成部分。
| 数学问题 | 数值方法操作的对象 | 需要控制的误差 |
|---|---|---|
| 线性方程与最小二乘 | 矩阵分解、残差、搜索方向 | 数据扰动与浮点误差 |
| 特征值问题 | 不变子空间、特征对近似 | 谱的敏感性与迭代误差 |
| 非线性方程 | 局部模型与逐次近似 | 初值影响、线性化与停止误差 |
| 插值、逼近与积分 | 节点、基函数、求积权重 | 离散采样与近似误差 |
| 常微分方程 | 时间网格与离散状态 | 单步误差的积累和传播 |
例如隐式微分方程方法每一步可能产生非线性方程,Newton 法又把它转成线性方程组。外层离散方法、非线性迭代和内层线性求解各有误差;把内层解到机器精度,未必能改善由粗时间步主导的总误差。
有限精度表示
浮点数用符号、有效数字与指数表示。相邻可表示数的绝对间距随数量级变化,因此通常用相对误差描述舍入。在正常范围内,一次基本运算常建模为
其中 u 是单位舍入误差, 为适用的基本运算。结果溢出、落入某些下溢情形或数学运算无定义时,不能直接套用这个模型。
浮点加法不结合:舍去的小量以后不能因为数学表达式重新分组就自动恢复。求和顺序、补偿求和和更高精度会影响误差,但也有不同计算代价。
问题的敏感性
对标量函数 y=f(x),小相对扰动的一阶放大约为
要求分母等量有意义。条件数大表示输入微小变化就可能显著改变输出,是问题性质,不是某个实现写得差。
线性系统的相对敏感性由矩阵条件数 控制。在二范数下,它是最大与最小奇异值之比。
前向与后向误差
前向误差比较计算结果与精确解;后向误差问计算结果是否是某个邻近输入问题的精确解。后向稳定算法使所需输入扰动与舍入误差同阶,但若问题病态,前向误差仍可能很大。
对 ,残差 很小,只说明 精确解了右端为 的系统;若 A 病态, 仍可能远离原解。
相消与等价改写
计算 ,当 x 很大时两个近似数相减会损失相对有效位。代数改写为
避免直接相减,通常更稳定。这个改写修复算法中的相消,不会改变原问题对 x 的条件数。
练习
- 用二进制双精度比较上述两个公式在大 x 时的结果,以高精度作为参考。
- 构造小残差却大前向误差的病态线性系统。
- 区分“题目本身敏感”和“算法引入额外误差”。