浮點數運算與數值表示

單位捨入

若機器 epsilon 是浮點網格在 1 附近一個步距的寬度,那麼單位捨入(unit roundoff)本質上就是那步距的「一半」——當你把一個實數捨入到最近的機器鄰居時,所能遭受的最壞誤差。最近捨入頂多只會偏離半個間隔,所以這半步距正是陳述一切捨入誤差界限時最自然的單位。

形式上,在最近捨入下,單位捨入為 u = (1/2) * 2^(1-p) = 2^(-p),其中 p 是尾數位元數。雙精度中 u = 2^(-53) ~ 1.11 * 10^(-16);單精度中 u = 2^(-24) ~ 5.96 * 10^(-8)。它的定義角色就是運算的標準模型:每個基本運算都滿足 fl(x op y) = (x op y)(1 + delta) 且 |delta| <= u。換言之,每次加、減、乘、除都精確到只差一個不大於 u 的相對擾動。

整座誤差分析的大廈都從這個界限流出。把 n 個運算串起來,相對誤差大致累積,給出像 n*u 的最壞界限(實際上,經統計平均的成長往往更像 sqrt(n)*u)。它也設定了準確度上限:結合條件數,經驗法則是 向前相對誤差約為 (條件數) * u,所以在雙精度(u ~ 10^(-16))下,一個條件數為 10^8 的問題會損失約 8 位(共 16 位中),無論演算法多謹慎。單位捨入是最小的磚塊;條件數決定這些磚塊堆出多高的誤差之塔。

把 n 個正雙精度數一個接一個相加,最壞情形的相對誤差界限約為 (n-1)*u;當 n = 10^6 時,約為 10^6 * 1.1e-16 ~ 1e-10,所以你可能損失約 6 位(共 16 位中)——這正是為什麼對長求和而言,保留被丟失低位位元的 Kahan 補償求和值得一用。

u 界定每個運算;條件數縮放最終的誤差。

單位捨入(u = 2^(-p))與機器 epsilon(常為 2^(1-p),即整整一步)在許多參考中相差 2 倍——而有些來源把 u 本身稱作「機器 epsilon」。「概念」是相同的;務必確認某篇論文或函式庫用的是哪個常數。

又称
unit round-offurounding unit單位捨入誤差