Skip to content

问题条件性与条件数

Conditioning of a problem · Condition number

度量问题真解对输入微扰的局部敏感性,并把这种固有敏感性与算法误差分开。

形式陈述

设数值问题为映射 F:DS,输入与输出空间配有指定范数。Fx 处的绝对局部条件数可定义为

κabs(F,x)=limε0sup0<ΔxεF(x+Δx)F(x)Δx,

其中扰动必须保持 x+ΔxD。当 x0F(x)0 时,相对局部条件数相应为

κrel(F,x)=limε0sup0<ΔxεxF(x+Δx)F(x)/F(x)Δx/x.

F 在有限维空间中可微,则

κabs(F,x)=DF(x),κrel(F,x)=xF(x)DF(x),

其中算子范数由输入、输出范数诱导。非光滑点可能只有方向条件数,或条件数为无穷。条件数依赖问题表示、允许的扰动结构、尺度和考察点;脱离这些信息说某个矩阵或数据“条件数大”并不完整。

直觉

条件数问的是:即使有一位理想计算者精确解题,只把输入轻轻移动,正确答案会移动多远?若答案剧烈变化,问题病态;若变化同量级,问题良态。它评价的是问题地图的局部伸缩,而不是某段程序跑得好不好。

输入数据通常已经含有测量或表示误差。条件数给出这些误差能被真解放大的尺度,因此是任何算法都绕不过去的精度上限。稳定算法能避免再制造远大于这一上限的误差,却不能从不确定数据中恢复不存在的信息。

例子与边界

F(x)=1/x,绝对条件数为 1/|x|2,在零附近迅速增大;相对条件数却恒为 1,因为输入和输出都按自身尺度归一化。同一个例子说明“病态”必须连同绝对或相对度量一起说,不能只看导数大小。

多项式 p(t) 的简单根 r 对函数值扰动的一阶敏感性含有 1/|p(r)|。当两个根合并成重根时 p(r)=0,根对系数或函数扰动会异常敏感;这属于求根问题的条件性,不是 Newton 或其他算法单独造成。

参数化也会改变相对条件数。正数可直接用 x 表示,也可写成 x=ez;在 z 坐标中加性扰动对应 x 上的乘性扰动。两种问题输入空间的度量不同,所得条件数自然不同,不能跨表示直接比较。

推论与应用

若算法产生大小为 η 的相对后向误差,一阶上常得到“相对前向误差约不超过 κη”。精确关系见前向误差与后向误差;它说明后向稳定算法遇到良态问题时通常前向准确,而遇到病态问题时仍可能丢失许多数字。

线性方程、最小二乘和特征值问题会各自发展结构化条件数。它们都应从本页的通用定义出发,再指定允许扰动哪些数据、使用什么范数;不能把算法的增长因子、迭代次数或残差大小冒充条件数。

参考资料
  • Nicholas J. Higham, “What Is a Condition Number?”, 2020, nhigham.com.
  • Nicholas J. Higham, Accuracy and Stability of Numerical Algorithms, 2nd ed., SIAM, 2002, Ch. 1.
  • Lloyd N. Trefethen and David Bau III, Numerical Linear Algebra, SIAM, 1997, Lectures 12–14.