矩阵对变化的敏感程度可以用Condition Number来评估,本文对其进行简略介绍。
定义
直白来说就是描述一个矩阵是否变化率在可控范围内,下方这个示例程序可以看到,当调整
a
,b
,c
的值使得条件数很大时,二次型描述的曲面在某个方向上会拉的很长;在这种情况下,曲面上的点沿着某个方向会得到巨大的变化率,而沿着某些方向变化率又很小,当条件数为无穷大时甚至这个比值甚至会变得无穷大。
- 在我的个人站点上有一个动态演示,有兴趣的同学可以移步去感受一下。
以优化二次型为例,我们的目的时找到矩阵的极值,然而在摸索过程中,沿着有些方向走一小步结果就产生了巨大的变化,如果往另一个方向还走这么大步子又可能对结果没什么影响,这样的二次型矩阵相对那些各个方向变化率差异小的二次型就更加难以优化。
- 矩阵
A
(
n
×
n
)
{\bf{A} } (n\times n)
A(n×n)的
条件数
,用 C o n d ( A ) Cond(\bf{A}) Cond(A)表示,数学上的定义为矩阵绝对值最大的奇异值(用 λ \lambda λ表示)与绝对值最小的奇异值的商:
C o n d ( A ) = λ 1 λ n Cond({\bf{A} }) = \frac{ { {\lambda _1} } } { { {\lambda _n} } } Cond(A)=λnλ1
这个定义的解释是直观的,最大的奇异值表示矩阵的能量主轴,表示可能产生的最大变化率:
max ∥ A x ∥ ∥ x ∥ = λ 1 \max \frac{ {\left\| { {\bf{A}}x} \right\|} }{ {\left\| x \right\|} } = {\lambda _1} max∥x∥∥Ax∥=λ1
然后最小奇异值 λ n \lambda _n λn对应最小的变化率:
min ∥ A x ∥ ∥ x ∥ = λ n \min \frac{ {\left\| { {\bf{A}}x} \right\|} }{ {\left\| x \right\|} } = {\lambda _n} min∥x∥∥Ax∥=λn
二者的商就是矩阵的
条件数
。
另一种推导思路
-
在衡量某个函数敏感度与稳定性时,常使用的一种方法是求导。即观察导数 d f ( x ) / d x df(x)/dx df(x)/dx 的大小。
-
考虑线性系统 A x = b \bf{A}x=b Ax=b,其中矩阵 A \bf{A} A为 n n n阶可逆方阵
-
在 x \bf{x} x上加入一个小扰动 δ \delta δ,系统变为:
A ( x + δ ) = b + A δ {\bf{A} }( {\bf{x}} + {\bf{\delta } }) = b + {\bf{A\delta } } A(x+δ)=b+Aδ
- 用在 b \bf{b} b上的变化率与 x \bf{x} x上的变化率的比值表示线性系统的稳定程度,这个稳定程度我们用字母 C C C表示:
C = ∣ ∣ A δ ∣ ∣ / ∣ ∣ b ∣ ∣ ∣ ∣ δ ∣ ∣ / ∣ ∣ x ∣ ∣ = ∣ ∣ A δ ∣ ∣ ∣ ∣ δ ∣ ∣ ⋅ ∣ ∣ x ∣ ∣ ∣ ∣ b ∣ ∣ = ∣ ∣ A δ ∣ ∣ ∣ ∣ δ ∣ ∣ ⋅ ∣ ∣ A − 1 b ∣ ∣ ∣ ∣ b ∣ ∣ \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} C=∣∣δ∣∣/∣∣x∣∣∣∣Aδ∣∣/∣∣b∣∣=∣∣δ∣∣∣∣Aδ∣∣⋅∣∣b∣∣∣∣x∣∣=∣∣δ∣∣∣∣Aδ∣∣⋅∣∣b∣∣∣∣A−1b∣∣
- 其中模长为范数操作,根据范数的相容性,有:
C = ∣ ∣ A δ ∣ ∣ ∣ ∣ δ ∣ ∣ ⋅ ∣ ∣ A − 1 b ∣ ∣ ∣ ∣ b ∣ ∣ ≤ ∣ ∣ A ∣ ∣ ∣ ∣ δ ∣ ∣ ∣ ∣ δ ∣ ∣ ⋅ ∣ ∣ A − 1 ∣ ∣ ∣ ∣ b ∣ ∣ ∣ ∣ b ∣ ∣ = ∣ ∣ A ∣ ∣ ∣ ∣ A − 1 ∣ ∣ \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} C=∣∣δ∣∣∣∣Aδ∣∣⋅∣∣b∣∣∣∣A−1b∣∣≤∣∣δ∣∣∣∣A∣∣∣∣δ∣∣⋅∣∣b∣∣∣∣A−1∣∣∣∣b∣∣=∣∣A∣∣∣∣∣∣A−1∣∣∣∣
条件数的性质
-
对任何非零矩阵 A \bf{A} A, C o n d ( A ) ≥ 1 Cond{\rm{ } }\left( A \right){\rm{ } } \ge {\rm{ } }1 Cond(A)≥1
-
C o n d ( I ) = 1 Cond\left( \bf{I} \right){\rm{ } } = {\rm{ } }1 Cond(I)=1, I \bf{I} I 是单位矩阵
-
C o n d ( s A ) = C o n d ( A ) Cond\left( {s{\bf{A} } } \right){\rm{ } } = {\rm{ } }Cond\left( {\bf{A} } \right) Cond(sA)=Cond(A), 其中 s s s是一个标量
-
对于任何对角矩阵 A = d i a g ( d ) {\bf{A} }{\rm{ } } = {\rm{ } }diag\left( {\bf{d} } \right) A=diag(d), C o n d ( A ) = m a x ( d ) / m i n ( d ) Cond\left( {\bf{A} } \right){\rm{ } } = {\rm{ } }max({\bf{d} }){\rm{ } }/{\rm{ }}min({\bf{d} }) Cond(A)=max(d)/min(d)
参考资料
- https://blog.youkuaiyun.com/bitcarmanlee/article/details/51945271
- https://blog.youkuaiyun.com/adminabcd/article/details/46619627
- https://zhuanlan.zhihu.com/p/81053589