混合向前向後穩定性(mixed forward-backward stability)
純粹的向後穩定是個嚴苛的承諾:算出的答案是某個鄰近問題的「精確」答案,而不只是一個接近的答案。有些完全良好的演算法做不到這個承諾,卻仍然值得信任。混合向前向後穩定性就是涵蓋它們的、稍微放寬的標準:算出的答案「幾乎」就是某個「鄰近」問題的精確答案——在輸出與輸入兩端都允許一點小抖動。
謹慎地說:一個計算 y = f(x) 的演算法,若其算出的 y-hat 滿足 y-hat + delta-y = f(x + delta-x),且「輸出擾動」||delta-y|| / ||y|| 與「輸入擾動」||delta-x|| / ||x|| 「兩者都」為單位捨入等級,則稱為混合向前向後穩定。對比兩個更純粹的概念:向後穩定強制 delta-y = 0(對擾動輸入完全正確);向前穩定則會強制 delta-x = 0(對精確輸入幾乎正確)。混合穩定允許各有一小份,這就是為什麼它在真實的數值分析中是最自然、最常見的穩定保證——許多演算法即使達不到完整的向後穩定,也能達到它。
令人安心的事實是,混合穩定給出與向後穩定相同的實務準確度界:向前誤差仍為(條件數乘以單位捨入)等級。所以就「信任一個答案」而言,混合穩定的演算法基本上和向後穩定的一樣好——這份放寬換來了分析上的喘息空間,卻不犧牲準確度。一如既往,結果的準確度仍以問題的條件性所允許者為限;混合穩定就像它較純粹的表親一樣,認證的是演算法,不是問題。
許多特徵值問題的演算法是混合穩定,而非純粹向後穩定:算出的特徵對,接近某個稍受擾動矩陣的精確特徵對。實務上的準確度保證不變——向前誤差為 kappa 乘以單位捨入等級。
兩端各有一點小抖動,仍給出相同的準確度判決。
混合穩定弱於向後穩定,但給出相同的準確度界;它是許多實務演算法的現實保證。它對病態問題的向前誤差仍然什麼都沒說。