Conditioning of a problem
该博客是学习《Numerical Linear Algebra with Applications Using MATLAB》的一些总结,仅供学习使用。
通常即使使用一个稳定的算法来解决一个问题,该问题对数据中小的改变或扰动仍然是敏感的。这些扰动可能来自舍入误差(roundoff error),收集实验数据时的小的测量误差,没有被信号过滤的噪音,近似无穷级数时的截断误差等。如果该问题落入此类,则称该问题为ill-conditioned(病态的)。
Def 1: 不管用什么算法来解决一个问题,如果它的数据中的一个小的相对变化会导致它的计算解的一个大的相对误差, 则称这个问题是病态的(ill-conditioned),如果问题数据中的小扰动导致计算解的小相对误差,则称问题是良态的(well-conditioned)。
需要搞清楚两个概念:stability 和 conditioning。
- Stable or unstable 是对于算法而言的;
- Well or ill-conditioned 是指特定的问题而非使用的算法。
显然,将不稳定的算法应用于病态的问题是在自找麻烦。(asking for disaster).
但是,对于求解某个问题而言,一个稳定的算法也会产生差的结果,如果输入数据时病态的。 我们假定f(x)f(x)f(x)表示一个算法,xxx表示数据。 我们可以利用f(x)f(x)f(x)来定义well 和ill-conditioning.
Def 2. 定义xxx和xˉ\bar{x}xˉ分别是初始数据和扰动数据, f(x)f(x)f(x)和f(xˉ)f(\bar{x})f(xˉ)是对应的解,则有
如果∣x−xˉ∣|x-\bar{x}|∣x−xˉ∣很小,∣f(x)−f(xˉ)∣|f(x)-f(\bar{x})|∣f(x)−f(xˉ)∣也很小,则该问题关于数据xxx是well-conditioned.
如果∣x−xˉ∣|x-\bar{x}|∣x−xˉ∣很小,∣f(x)−f(xˉ)∣|f(x)-f(\bar{x})|∣f(x)−f(xˉ)∣很大,则该问题关于数据xxx是ill-conditioned. 如下图*

问题对数据的敏感性可以通过定义条件数(condition number)来测量。 条件数越大,则该问题对数据的改变的敏感性越高。
对于一个特定的数据xx

文章讨论了在数值计算中,即使是使用稳定的算法,数据的微小变化可能导致大误差的问题,这类问题被称为病态问题。条件数是衡量问题对数据敏感性的指标,高条件数意味着问题对数据扰动更敏感。文章举例说明不同函数的条件数,指出矩阵条件数在判断矩阵是否病态中的作用,并提到了在MATLAB中计算条件数的不同方法。
最低0.47元/天 解锁文章
2047

被折叠的 条评论
为什么被折叠?



