矩阵对变化的敏感程度评价指标 Condition Number

163 阅读2分钟

这是我参与11月更文挑战的第21天,活动详情查看:2021最后一次更文挑战

矩阵对变化的敏感程度可以用Condition Number来评估,本文对其进行简略介绍。

定义

  • 数值分析中,一个问题的条件数是该数量在数值计算中的容易程度的衡量,也就是该问题的适定性。一个低条件数的问题称为良置的,而高条件数的问题称为病态(或者说非良置)的。 —— 维基百科

直白来说就是描述一个矩阵是否变化率在可控范围内,下方这个示例程序可以看到,当调整a, b, c的值使得条件数很大时,二次型描述的曲面在某个方向上会拉的很长;在这种情况下,曲面上的点沿着某个方向会得到巨大的变化率,而沿着某些方向变化率又很小,当条件数为无穷大时甚至这个比值甚至会变得无穷大。

以优化二次型为例,我们的目的时找到矩阵的极值,然而在摸索过程中,沿着有些方向走一小步结果就产生了巨大的变化,如果往另一个方向还走这么大步子又可能对结果没什么影响,这样的二次型矩阵相对那些各个方向变化率差异小的二次型就更加难以优化。

  • 矩阵A(n×n){\bf{A} } (n\times n)条件数,用Cond(A)Cond(\bf{A})表示,数学上的定义为矩阵绝对值最大的奇异值(用λ\lambda表示)与绝对值最小的奇异值的商:
Cond(A)=λ1λnCond({\bf{A} }) = \frac{ { {\lambda _1} } } { { {\lambda _n} } }

这个定义的解释是直观的,最大的奇异值表示矩阵的能量主轴,表示可能产生的最大变化率:

maxAxx=λ1\max \frac{ {\left\|\| { {\bf{A}}x} \right\|\|} }{ {\left\|\| x \right\|\|} } = {\lambda _1}

然后最小奇异值λn\lambda _n对应最小的变化率:

minAxx=λn\min \frac{ {\left\|\| { {\bf{A}}x} \right\|\|} }{ {\left\|\| x \right\|\|} } = {\lambda _n}

二者的商就是矩阵的条件数

另一种推导思路

  • 在衡量某个函数敏感度与稳定性时,常使用的一种方法是求导。即观察导数 df(x)/dxdf(x)/dx 的大小。

  • 考虑线性系统Ax=b\bf{A}x=b,其中矩阵A\bf{A}nn阶可逆方阵

  • x\bf{x}上加入一个小扰动δ\delta ,系统变为:

A(x+δ)=b+Aδ{\bf{A} }( {\bf{x}} + {\bf{\delta } }) = b + {\bf{A\delta } }
  • 用在b\bf{b}上的变化率与x\bf{x}上的变化率的比值表示线性系统的稳定程度,这个稳定程度我们用字母CC表示:

{% raw %}

C=Aδ/bδ/x=Aδδxb=AδδA1bb\begin{array}{l} C &= \frac{{\left| {\left| {{\bf{A\delta }}} \right|} \right|/\left| {\left| {\bf{b}} \right|} \right|}}{{\left| {\left| {\bf{\delta }} \right|} \right|/\left| {\left| {\bf{x}} \right|} \right|}}\\ &= \frac{{\left| {\left| {{\bf{A\delta }}} \right|} \right|}}{{\left| {\left| {\bf{\delta }} \right|} \right|}} \cdot \frac{{\left| {\left| {\bf{x}} \right|} \right|}}{{\left| {\left| {\bf{b}} \right|} \right|}}\\ &= \frac{{\left| {\left| {{\bf{A\delta }}} \right|} \right|}}{{\left| {\left| {\bf{\delta }} \right|} \right|}} \cdot \frac{{\left| {\left| {{{\bf{A}}^{ - 1}}{\bf{b}}} \right|} \right|}}{{\left| {\left| {\bf{b}} \right|} \right|}} \end{array}

{% endraw %}

  • 其中模长为范数操作,根据范数的相容性,有:

{% raw %}

C=AδδA1bbAδδA1bb=AA1\begin{array}{l} C &= \frac{{\left| {\left| {{\bf{A\delta }}} \right|} \right|}}{{\left| {\left| {\bf{\delta }} \right|} \right|}} \cdot \frac{{\left| {\left| {{{\bf{A}}^{ - 1}}{\bf{b}}} \right|} \right|}}{{\left| {\left| {\bf{b}} \right|} \right|}}\\ &\le \frac{{\left| {\left| {\bf{A}} \right|} \right|\left| {\left| {\bf{\delta }} \right|} \right|}}{{\left| {\left| {\bf{\delta }} \right|} \right|}} \cdot \frac{{\left| {\left| {{{\bf{A}}^{ - 1}}} \right|} \right|\left| {\left| {\bf{b}} \right|} \right|}}{{\left| {\left| {\bf{b}} \right|} \right|}}\\ &= \left| {\left| {\bf{A}} \right|} \right|\left| {\left| {{{\bf{A}}^{ - 1}}} \right|} \right| \end{array}

{% endraw %}

条件数的性质

  • 对任何非零矩阵A \bf{A}, Cond(A)1Cond{\rm{ } }\left( A \right){\rm{ } } \ge {\rm{ } }1

  • Cond(I)=1Cond\left( \bf{I} \right){\rm{ } } = {\rm{ } }1, I\bf{I} 是单位矩阵

  • Cond(sA)=Cond(A)Cond\left( {s{\bf{A} } } \right){\rm{ } } = {\rm{ } }Cond\left( {\bf{A} } \right), 其中ss是一个标量

  • 对于任何对角矩阵A=diag(d){\bf{A} }{\rm{ } } = {\rm{ } }diag\left( {\bf{d} } \right)Cond(A)=max(d)/min(d)Cond\left( {\bf{A} } \right){\rm{ } } = {\rm{ } }max({\bf{d} }){\rm{ } }/{\rm{ }}min({\bf{d} })

参考资料