病态矩阵

求解方程组时如果对数据进行较小的扰动,则得出的结果具有很大波动,这样的矩阵称为病态矩阵。
例如:

解为:x1=-100, x2=-200
而其中加入一点点的误差

则解变为:x1=40000, x2=79800
当解集 x 对 A 和 b 的系数高度敏感,那么这样的方程组就是病态的 (ill-conditioned).矩阵A为病态矩阵。

条件数

由于“ill condition”中的condition译为状态而不是条件,所以“condition number”应该译为“状态表征值”而不是“条件数”。
条件数容易让人误解为“条件的个数”。实际上它与个数没有状态,它是用来衡量这个矩阵有没有处于“病态”这个状态的一种指标。因此理解为“状态表征值”更合适。
既然所有的材料都把它称为条件数,我这里也就这么用了。但是一定不要被这个名字给误导了。它与“条件”和“个数”没有半毛钱关系。

条件数K(A):判定矩阵是否病态以及衡量矩阵的病态程度,计算公式为:

  • 常用的公式:
    $$ K(A)=||A^{-1}||*||A|| $$

其中||||表示对矩阵取某一种范数

  • deep learning book中定义的公式:
    $$ K(A) = \max_{i,j} \frac{|\lambda_i|}{|\lambda_j|} $$

其中$\lambda$是A的特征值。

当K(A)很大时,称 A 为病态,否则称良态。K(A)越大,A的病态程度就越严重。
这两个计算公式表达的是一个意思,[?]但我不知道怎么把它们联系到一起。

参考文献

百度百科
csdn