計算器算出的值絕對正確嗎?
01-04
例如:計算0.02除以360再乘以360=?
理論上,積(或商)是等於原數(被除數)0.02但,用你的計算器算算,你會發現……所得值並非其原數,它與原數的差值叫什麼呢? 鄙人孤陋寡聞,請高人解答,在下不勝感激。
這種差值稱為截斷誤差。普通的計算器只能作數值計算,在計算器的內部計算的有效位數有限的情況下,每一次計算的時候就會受到這個位數的限制。例如使用一台內部計算位數是10位的計算器(這裡使用的10位內部計算位數的計算器是CASIO在1977年生產的fx-31)來計算0.02÷360,準確的結果為1/18000,但計算器會將其表示為5.555555555e-05,由於8位數的顯示限制只能顯示為「5.55555-05」(如第一張圖所示,即5.55555×10^-5,至於剩下的位數我們可以減去顯示的結果,得到5.555e-11,如第二張圖所示),本來是無限循環的小數結果截斷成了一個十位有效數字的中間結果,再乘上360之後,計算器的顯示結果就成了0.0199999,如第三張圖所示。
所以,造成這樣的現象大多是計算器的內部有效計算位數有限導致的,如果使用一台內部計算精度足夠的計算器,這樣的情況就會大為減少,但不會完全消除。例如下圖的計算器(fx-991CN X),內部有效計算位數是15位,得到的結果就仍然是0.02。
另外一種情況是現在有很多計算器能夠對截斷處採取一定的補救措施,通過一定的演算法來挽回截斷誤差。實際上,我們檢測計算器的計算精度,就是利用了計算器有截斷誤差的這一特性。例如計算1234567890+0.123456789-1234567890,理論上應該得到0.123456789,而因為內部有效計算位數有限,導致結果為0.12345。
推薦閱讀:
※純數科研對於本科生是否可能?
※數學家尤其是現代數學家對於哲學的主流態度有哪些?
※三維空間中套在一起的兩個圓環,放到高維空間,有可能解開嗎?
※請問龐加萊猜想為什麼看上去容易理解,卻這麼難證明?
※求適合入門的數學分析書?
TAG:數學 |