0%

conditional-Number-of-Matrix

Conditional Number of Matrix

In This post, I will comb the inference of the conditional number of Matrix

WHAT

不得不说,咱们语言文化的博大精深。所谓“千里之堤,溃于蚁穴”,则正是条件数的表示,旨在对某件事物进行轻微的扰动,那么其会产生巨大的影响。

Defenition

所以对于方程组 , 如果我们给一个轻微的扰动,其解x变化仍在我们可接受的范围之内的话,那么就说这个矩阵是良好的矩阵(Well Done!),否则,它就是一个病态的矩阵。

针对上述定义,我们引出两个问题

  • 什么是轻微的扰动?
  • 如何评测一个矩阵是否是病态的?
  • 所谓轻微的扰动,并不是指整个矩阵中所有元素变化量的大小,而是说变化元素的个数。通常,我们用

    来表示仅在位置的元素为,其余位置为的矩阵。而轻微扰动,即在的基础之上 append 一些的元素。

    下面进行条件数的推导。

    Inference of the Conditional Number

    Neumann Series

    在这里只能说诺伊曼牛逼, If , 那么就是非奇异的,并且

    这个直接相乘即可验证出来了,诺伊曼给了我们一个估算的级数,太棒了。

    Perturbation Term

    现在我们假设给予矩阵一些轻微的扰动, 即,现在来考虑的解,与的解的gap。因为可逆,且是轻微扰动,所以说是可逆的,所以

    从而,我们仅要看的差异即可。下面由诺伊曼级数进行导出。

    假设,(这个其实很好满足嘛,直觉上只要不要太大就好,因为是轻微扰动项,所以说本身很小很小的,这样说不太严谨,但是intuitive)。

    为了方便起见,我们仅考虑其一阶估计

    可见,右边儿的第二项就是扰动项:

    扰动项 => 条件数

    首先我们先得到的上界

    这肯定是上界嘛,因为只估算到了一阶。那么,只要这个上界足够小,那么其误差就可能大

    由于解本身有大有小,所以我们不能直接用其差值进行误差的估量,进而采用

    其中,由于B是扰动,所以 本身很小,所以其上界如果很大,那么肯定是出了问题。

    我们称为矩阵的条件数。如果很小,那么其差值上界定然小,如果很大,那么其差值上界就很大,从而其真实的差值就可能大,就是病态矩阵。(注意定然和可能)。

    至于这个“小”还是“大”,因为已经经过模的规范化了,所以不同矩阵之间也可以比较。

    条件数为多少时才是凉态的?

    这里其实可以做一个实验,编写代码画图,构造一些指定条件数的矩阵出来,观察其轻微扰动之后的差值。给出网友的结论:(第一步骤实验!)

    首先奇异和病态没有必然的联系,良态、病态、条件数都要针对求解的问题而言,比如说矩阵求逆的性态和矩阵求特征值的性态就完全是两码事  在2-范数扰动的意义下,矩阵求逆或者解线性方程组的时候奇异矩阵可以认为是最病态(无限病态)的矩阵,因为它有零奇异值(注意,这个问题的性态体现在奇异值而不是特征值)  至于什么样的矩阵算病态,没有绝对的标准,因为大和小是相对的概念  通常病态与否也与实际计算的机器精度有关,比如IEEE单精度下K=10^4算比较病态了,但在IEEE双精度下就算比较良态