这是我参与11月更文挑战的第21天,活动详情查看:2021最后一次更文挑战
矩阵对变化的敏感程度可以用Condition Number来评估,本文对其进行简略介绍。
定义
- 数值分析中,一个问题的条件数是该数量在数值计算中的容易程度的衡量,也就是该问题的适定性。一个低条件数的问题称为良置的,而高条件数的问题称为病态(或者说非良置)的。 —— 维基百科
直白来说就是描述一个矩阵是否变化率在可控范围内,下方这个示例程序可以看到,当调整a, b, c的值使得条件数很大时,二次型描述的曲面在某个方向上会拉的很长;在这种情况下,曲面上的点沿着某个方向会得到巨大的变化率,而沿着某些方向变化率又很小,当条件数为无穷大时甚至这个比值甚至会变得无穷大。
以优化二次型为例,我们的目的时找到矩阵的极值,然而在摸索过程中,沿着有些方向走一小步结果就产生了巨大的变化,如果往另一个方向还走这么大步子又可能对结果没什么影响,这样的二次型矩阵相对那些各个方向变化率差异小的二次型就更加难以优化。
- 矩阵A(n×n)的
条件数,用Cond(A)表示,数学上的定义为矩阵绝对值最大的奇异值(用λ表示)与绝对值最小的奇异值的商:
Cond(A)=λnλ1
这个定义的解释是直观的,最大的奇异值表示矩阵的能量主轴,表示可能产生的最大变化率:
max∥∥x∥∥∥∥Ax∥∥=λ1
然后最小奇异值λn对应最小的变化率:
min∥∥x∥∥∥∥Ax∥∥=λn
二者的商就是矩阵的条件数。
另一种推导思路
-
在衡量某个函数敏感度与稳定性时,常使用的一种方法是求导。即观察导数 df(x)/dx 的大小。
-
考虑线性系统Ax=b,其中矩阵A为n阶可逆方阵
-
在x上加入一个小扰动δ,系统变为:
A(x+δ)=b+Aδ
- 用在b上的变化率与x上的变化率的比值表示线性系统的稳定程度,这个稳定程度我们用字母C表示:
{% raw %}
C=∣∣δ∣∣/∣∣x∣∣∣∣Aδ∣∣/∣∣b∣∣=∣∣δ∣∣∣∣Aδ∣∣⋅∣∣b∣∣∣∣x∣∣=∣∣δ∣∣∣∣Aδ∣∣⋅∣∣b∣∣∣∣A−1b∣∣
{% endraw %}
{% raw %}
C=∣∣δ∣∣∣∣Aδ∣∣⋅∣∣b∣∣∣∣A−1b∣∣≤∣∣δ∣∣∣∣A∣∣∣∣δ∣∣⋅∣∣b∣∣∣∣A−1∣∣∣∣b∣∣=∣∣A∣∣∣∣∣∣A−1∣∣∣∣
{% endraw %}
条件数的性质
-
对任何非零矩阵A, Cond(A)≥1
-
Cond(I)=1, I 是单位矩阵
-
Cond(sA)=Cond(A), 其中s是一个标量
-
对于任何对角矩阵A=diag(d),Cond(A)=max(d)/min(d)
参考资料