矩陣範數與擾動
前向誤差
前向誤差是「出錯」最樸素直觀的度量:計算出的答案 x_hat 與真實答案 x 之間的距離。作為相對量它是 ||x_hat - x|| / ||x||。它才是你真正在意的——但令人沮喪的是,它通常最難直接得知,因為算出它需要你已經知道 x。
數值分析的核心關係把它與你能估計的兩樣東西聯繫起來:前向誤差 <= 條件數乘以後向誤差。後向誤差可由殘差證明;條件數可由矩陣估計。兩者之積界定了你計算出的答案與真相能相距多遠。
這一分解很有啟發。後向穩定的演算法讓後向誤差保持在機器精度附近,所以前向誤差本質上是條件數乘以機器精度。若問題良態,答案就準確;若病態,同一個優秀演算法會產生很大的前向誤差,而這並非它的過錯。
所以當答案不準確時,這個不等式告訴你該往哪看。大的後向誤差指向應更換的不穩定演算法。小的後向誤差但大的前向誤差則指向應重新表述的病態問題。這兩種診斷需要完全不同的對策。
rel. forward error <= kappa(A) x rel. backward error
把經驗法則說精確:條件是把演算法品質換算為答案品質的乘子。
要背下的口號:前向誤差 <= 條件數 x 後向誤差。三個量,一個不等式,實用數值線性代數的大半都圍繞它各就各位。
又稱
另見