数值分析中,一个问题的条件数是该问题在数值计算中的容易程度的衡量,也就是该问题的适定性。一个低条件数的问题称为良态的,而高条件数的问题称为病态(或者说非良态)的。
例如,
线性方程Ax=b的条件数给出了数值求解得到一个解 x有多不精确的一个上限。
条件数也会增大b中存在的误差。这个放大的程度可以使得一个低条件数的系统(通常是件好事情)变得不精确而使得一个高条件数的系统(通常是件坏事情)变得精确,这取决于b的数据知道得多清楚。对于这个问题,条件数定义为
条件数事实上表示了矩阵计算对于误差的敏感性。对于
线性方程组Ax=b,如果A的条件数大,b的微小改变就能引起解x较大的改变,数值稳定性差。如果A的条件数小,b有微小的改变,x的改变也很微小,数值稳定性好。它也可以表示b不变,而A有微小改变时,x的变化情况。
可见b很小的扰动就引起了x很大的变化,这就是A
矩阵条件数大的表现。一个极端的例子,当A奇异时,条件数为无穷,这时即使不改变b,x也可以改变。奇异的本质原因在于矩阵有0
特征值,x在对应
特征向量的方向上运动不改变Ax的值。如果一个特征值比其它特征值在
数量级上小很多,x在对应特征向量方向上很大的移动才能产生b微小的变化,这就解释了为什么这个矩阵为什么会有大的条件数,事实上,正规阵在
二范数下的条件数就可以表示成 abs(最大特征值/最小特征值)。