電腦算術
當 x 非常大時,以浮點數計算 √(x + 1) − √x 會發生位數消去。為了精確求得結果,下列何者是正確的改寫方式?
- A改為 1 ÷ (√(x + 1) + √x) 來計算
- B改為 √(x + 1 − x) 來計算
- C先將 √(x + 1) 與 √x 分別改為雙精度,再以相同的算式相減
查看答案與解析
正確答案:A. 改為 1 ÷ (√(x + 1) + √x) 來計算
√(x + 1) 與 √x 幾乎相等,因此直接相減時高位的位數會互相抵消。若將分子與分母同乘以 √(x + 1) + √x,便成為 (x + 1 − x) ÷ (√(x + 1) + √x) = 1 ÷ (√(x + 1) + √x),不再有相近數之間的減法,因此能精確計算。√(x + 1 − x) 會變成1,作為算式是錯誤的。改用雙精度雖然會有所改善,但若x更大,仍會發生相同的問題,因此並非根本的對策。
- A. 正確。透過消除減法的變形,可避免位數消去。
- B. √(x + 1 − x) 會成為1,與原算式並不相等。
- C. 即使是雙精度,x更大時仍會發生相同的問題。