相對條件數(relative condition number)
假設我告訴你某個價格「變動了 5」。一杯咖啡漲 5 分錢微不足道;一輛車變動 5 千也算不上什麼;但對一件 5 元的商品來說,變動 5 元就是天差地別。一個變化重不重要,取決於它相對於本身的大小。相對條件數正是用這種「相對」的尺度衡量敏感度,而這對計算來說才是正確的尺度,因為浮點數保留的是固定的有效位數,而不是固定的絕對精度。
精確地說,對於問題 y = f(x),相對條件數 kappa 是當擾動 delta-x 縮小到零時,比值(||delta-y|| / ||y||)/(||delta-x|| / ||x||)在 delta-x 方向上取最大值的極限。分子是輸出的相對變化;分母是輸入的相對變化。對於可微的純量 f,這恰好是 kappa = |x f'(x) / f(x)|。所以你把原始導數 f'(x) 乘上 x/f(x),就把它從一個絕對斜率換成了相對增益。(絕對條件數則去掉 x/y 這個比例因子,只用 |f'(x)|。)
預設就用相對版本。相對條件數為 10 表示:輸入 1% 的相對誤差可能變成輸出 10% 的相對誤差——大約損失一位十進位有效數字。這就是「損失 log10(kappa) 位數」法則背後的量。它直接連到那條主不等式:向前誤差至多等於條件數乘以向後誤差,而其中的「條件數」指的正是相對條件數。
對 f(x) = e^x,f'(x) = e^x,所以 kappa = |x e^x / e^x| = |x|。計算 x = 50 時的 e^x,相對條件數是 50:輸入 0.01% 的誤差可能放大到輸出 0.5% 的誤差。指數函數在 0 附近溫和,但對於大引數則越來越敏感。
同一個函數,條件數取決於你在哪裡求值。
在真實輸出為零之處,相對條件性會失效(你無法除以 ||y|| = 0);在這類點附近,只有絕對誤差界才有意義。