矩阵范数与扰动
前向误差
前向误差是“出错”最朴素直观的度量:计算出的答案 x_hat 与真实答案 x 之间的距离。作为相对量它是 ||x_hat - x|| / ||x||。它才是你真正在意的——但令人沮丧的是,它通常最难直接得知,因为算出它需要你已经知道 x。
数值分析的核心关系把它与你能估计的两样东西联系起来:前向误差 <= 条件数乘以后向误差。后向误差可由残差证明;条件数可由矩阵估计。两者之积界定了你计算出的答案与真相能相距多远。
这一分解很有启发。后向稳定的算法让后向误差保持在机器精度附近,所以前向误差本质上是条件数乘以机器精度。若问题良态,答案就准确;若病态,同一个优秀算法会产生很大的前向误差,而这并非它的过错。
所以当答案不准确时,这个不等式告诉你该往哪看。大的后向误差指向应更换的不稳定算法。小的后向误差但大的前向误差则指向应重新表述的病态问题。这两种诊断需要完全不同的对策。
rel. forward error <= kappa(A) x rel. backward error
把经验法则说精确:条件是把算法质量换算为答案质量的乘子。
要背下的口号:前向误差 <= 条件数 x 后向误差。三个量,一个不等式,实用数值线性代数的大半都围绕它各就各位。
又称
另见