更新时间:2024-02-22 17:48
数值分析中,一个问题的条件数是该问题在数值计算中的容易程度的衡量,也就是该问题的适定性。一个低条件数的问题称为良态的,而高条件数的问题称为病态(或者说非良态)的。
当然,这个定义依赖于范数的选取。
若是 矩阵范数则
其中分别是A的极大和极小奇异值。因此
若A是正规矩阵则
分别是A的极大和极小(根据模数)特征值)
若A是酉矩阵则
奇异值分解,多项式求根,特征值和其它许多问题的条件数也可以有定义。
通常,如果一个数值问题是适定的,它可以表达为一个函数 f映射它的数据(一个实数的m元组x)到它的解(一个实数的 n元组y)。
它的条件数则定义为解中的相对误差的半径和数据中的相对误差的比的最大值,取遍整个问题的定义域:
其中是问题中的数据的偏差的某个合理的小数值。
如果 f也是可微的,这可以近似的表示为
cond(A,2)或cond(A):2范数
cond(A,inf):无穷范数
condest(A)用来计算方阵1范数条件数的下界 rcond(A)用来计算矩阵逆的条件数,数值接近1时为良好条件矩阵,接近0时为坏条件矩阵
条件数事实上表示了矩阵计算对于误差的敏感性。对于线性方程组Ax=b,如果A的条件数大,b的微小改变就能引起解x较大的改变,数值稳定性差。如果A的条件数小,b有微小的改变,x的改变也很微小,数值稳定性好。它也可以表示b不变,而A有微小改变时,x的变化情况。
比如线性方程组
〔1 2 [x = [4 3.999 1] y] 7.999] 的解是(x,y)=(2,1)
而 〔1 2 [x = [4.001 3.999 1] y] 7.998] 的解是(x,y)=(-3.999,4.000)
可见b很小的扰动就引起了x很大的变化,这就是A矩阵条件数大的表现。一个极端的例子,当A奇异时,条件数为无穷,这时即使不改变b,x也可以改变。奇异的本质原因在于矩阵有0特征值,x在对应特征向量的方向上运动不改变Ax的值。如果一个特征值比其它特征值在数量级上小很多,x在对应特征向量方向上很大的移动才能产生b微小的变化,这就解释了为什么这个矩阵为什么会有大的条件数,事实上,正规阵在二范数下的条件数就可以表示成 abs(最大特征值/最小特征值)。