前向误差与后向误差
前向误差比较算法输出与正确输出,后向误差衡量怎样扰动输入,才能使算法输出成为扰动后问题的精确答案。两者关注的位置不同:一个在输出端,一个在输入端。
设问题为 ,定义域为 ,算法返回 。选定输入、输出所用的范数后,绝对前向误差为 把同时满足以下两个条件的输入扰动 组成集合 : 绝对后向误差定义为 若最小值能够取得,下确界就是最小值;若 为空,这里约定误差为正无穷。明确哪些输入允许改变、是否必须保持结构,是后向误差定义的一部分。
输入和正确输出都非零时,可以分别除以 、,得到对应的相对后向、前向误差;分母为零时,这种相对定义不能直接使用,接近零时也可能变得很大。
开平方的一次近似
精确输入 ,问题取非负输入上的主平方根 ,正确输出为二。若算法给 ,绝对前向误差为 。这个答案的平方是 由于主平方根单调,只有这一个可行输入,所以绝对后向误差为 。相对误差则是 两种绝对误差的单位不同:前者是“根”的单位,后者是“被开方数”的单位,不能只比较数值大小。上例中相对前向误差约为相对后向误差的一半,对应平方根在正输入处的相对条件数 。
变式。 对问题 ,原输入为一,近似答案为 。可行的新输入有 和 ,输入扰动分别为 、。因此绝对后向误差是 ,并非随意找到一个扰动后就报告它的大小;输出端的绝对误差则是 。
小后向误差与输入敏感性
看减法问题 ,取 ,正确结果为 。若输入 被略微扰动为一,计算得到零;输入的相对变化约百万分之一,但输出的相对误差为百分之百。原因是被减两数接近时,问题本身对相对输入误差敏感。
在适当可微条件与小扰动范围内,前向误差可由局部条件数和后向误差联系起来。条件数刻画问题,后向稳定性刻画算法:若算法误差能解释为很小的输入扰动,仍要看问题会把这个扰动放大多少,才知道输出是否准确。
线性方程组给出一个可逐项核验的例子。取 真解为 。假设近似解为 ,则 若固定 、只允许改变右端,所需扰动正好为 。二范数下,相对右端扰动约为 ,但解的相对前向误差为 。矩阵的二范数条件数为 ,解释了小残差仍可对应大解误差。若同时允许扰动 ,需要另行定义允许的扰动尺度,不能把这一右端误差原样当成所有后向误差。
可行输入与下确界的边界
对主平方根问题,若算法竟返回 ,无论如何改变非负输入,都得不到这个输出。此时 为空,后向误差按上述约定为无穷;前向误差仍是可算的四。并非每个近似答案都能解释成邻近输入的精确答案。
一般问题还不保证最小扰动一定存在。例如取 (),(),原输入为零而近似输出为一。可行扰动是所有正数,其大小能任意接近零,却没有最小的正数;下确界为零且不能取得。这个不连续例子说明定义中使用下确界的原因,也说明“小后向误差推出输出接近”需要问题自身的连续性与敏感度条件。
参考资料与相关词条
- Nicholas J. Higham,What Is Backward Error?:前向与后向误差、允许扰动的选择,以及可能不存在可行后向解释的情形。本文对一般问题用下确界,并明确空集约定。
- MIT 18.335J:前向、后向误差与条件数。
- 相关:浮点数与舍入误差、条件数、数值稳定性。