區間運算(interval arithmetic)
一般的浮點計算給你一個單一數字,外加一份「但願它接近真值」的模糊期望。區間運算給的是保證:它不攜帶一個近似值,而是攜帶整個區間 [low, high],並在數學上確定這個區間含有真值。把它想成:你追蹤的不是一個點,而是一個「保證包住真值」的盒子,盒子隨計算推進而縮小或放大,使最終的盒子嚴格地框住精確答案。
其機制是把每個數字換成一個區間,並重新定義算術,使結果區間保證包住每一個可能的精確結果。例如 [a, b] + [c, d] = [a + c, b + d],而 [a, b] 乘 [c, d] 是含有「各取一端點之所有乘積」的最小區間。為了在真實電腦上保持嚴格,每個下界都向下捨入、每個上界都向上捨入(向外捨入),使浮點捨入永遠無法讓真值逃出區間。整個演算法這樣跑下來,輸出區間就是對答案的、由機器證明的認證界——一種事後(a posteriori)誤差控制。
要坦白說出取捨。區間運算給出嚴格、有保證的界,這對電腦輔助證明與安全關鍵的結果極為寶貴——但天真的版本受困於「相依性問題」:因為它忘記同一變數出現了不只一次,區間會悲觀地變寬,誇大真實的不確定性(例如 x - x 被算成一個寬區間,而非恰好為 0)。它也比純浮點貴上數倍。熟練的運用(中心形式、分割定義域)能收緊界限;它是一個專家工具,用於「需要的是認證的包圍,而不只是一個好估計」之時。
要界定 sqrt(2),你可以攜帶區間 [1.41421356, 1.41421357](下端點向下捨入、上端點向上捨入)並讓它傳播;任何後續步驟都能可證地把真實的 sqrt(2) 留在裡面。區間方法著名地支撐了克卜勒猜想的電腦輔助證明。
一個有保證的包圍,而不只是一個抱著希望的估計。
區間界限是嚴格的,但常因相依性問題(重複變數使區間變寬)而鬆。天真的區間運算可能大幅高估真實誤差。在你需要認證界限時用它,而非在尖銳估計就夠用時。