計算器為什麼能實現保留根式、分數或含π的結果的功能?


首先要區分計算器是否擁有計算機代數系統(CAS),然後分情況討論。

一、對於絕大多數沒有CAS功能的函數計算器,實際上任何計算結果都是以數值的形式給出的。在一般的函數計算器上顯示平方根、π、分數等結果的功能,其實是CASIO、TI、SHARP三家公司在本世紀初計算器研發的技術成果,這種功能分別被稱為「NATURAL DISPLAY(CASIO)」、「MathPrint(TI)」、「WriteView(SHARP)」,而其他的計算器品牌若有此功能即為盜版。以CASIO的fx-991CN X為例:

實際上,由於計算器內部的計算位數有限制,再加上只能作數值運算,所以計算器在內部仍舊是將結果表示為數值。從理論上講,在計算的結果達到一定的精度,並且符合某些條件,才可顯示為這樣的結果,也就是說計算器會在內部將結果作一個簡單的運算後,再判斷是否能夠替換成根號、π、分數等形式。例如CASIO的函數計算器平方根顯示的條件如下圖所示(源自ES系列說明書):

一個很經典的例子就是,輸入「3.14159265358979323846264338327950288……」,隨著輸入的位數增加,達到一定的位數之後按【=】就會顯示「π」。還有一個很有趣的例子可以參考這個答案:https://www.zhihu.com/question/52342583/answer/140008529

這種表示方法有非常多的局限性,例如立方根、含「e」的結果對於這一類計算器就無能為力。

二、擁有代數功能的計算器就完全是另一種演算法了,CAS的精髓在於將整數、字母、常數等都視為符號來作運算,因此這樣的計算器不僅是能夠顯示根號、π、分數等結果,許多計算都是以符號的形式作內部的計算,且能給出符號解。例如計算定積分 int_{0}^{pi }mathrm{e}^{x}mathrm{sin}xmathrm{d}x ,沒有代數功能的計算器就不可能給出像 frac{mathrm{e}^{pi }+1}{2} 這樣的結果。

沒有代數功能的計算器,給出近似值結果(下圖為fx-991CN X和fx-CG20):

擁有代數功能的計算器,給出符號解(下圖為fx-CP400和TI-Nspire CX CAS):


哪有上面這個答主說的這麼麻煩,一個波蘭表達式足以,你自己如果有一定編程基礎都能實現一個功能齊全的計算器。


推薦閱讀:

程序員得痔瘡算工傷嗎?
C語言中連續定義兩個變數,為什麼地址是這樣的?
為什麼單機遊戲的啟動時間一般都比較長?有沒有辦法進行縮短?
python2.7.9 安裝錯誤 there is a problem with...該怎麼解決?
如何利用python讀取特定目錄下的特定文件的倒數兩行?

TAG:數學 | 文具 | 程序 | 單片機 | 計算器 |