小數轉換平方根
Conversion of decimal into square root
程式參考了網友 roviury 及 monday 提供的修改建議。
程式更新日期: 2015年3月15日
程式可以將一個計算後小數答案(答案記憶Ans)轉換為一個平方根 (a/b)√c,其中a, b及c為整數。這個程式亦可用於平方根式的化簡。
網頁尾附加的附錄程式是這個程式的簡化版本(現時一些類似程式慣常寫法),簡化版程式雖然會簡短很多(82 bytes),但計算某些 簡單問題會很慢(包括答案是細小平方根的情況),詳情請參考例題4,另外簡化版本容許計算誤差亦較小,因此成功轉化為平方根的機會亦會較低,所以在程式容量許可的情況請盡量不要選用附錄程式。
程式 (123 bytes)
Ans→D: D2 →A: Ans→B: π Pol(1,0: Fix 0:
While Ans - Rnd( Ans: X + YRnd( A→C:
A - Rnd( A => Ans-1→A: Y→X: C→Y: Sci 9:
Rnd( BY: Fix 0: WhileEnd: AnsY→C: 1:
While Ans: Rnd( . 5 - √( C÷Ans→A: C ÷ A2→X:
X - Rnd( X => Rnd( X + . 5: WhileEnd: Norm 1:
-A┘( D Abs( Y ) ÷ Abs( D◢ X
例題1: 將計數機的 tan 30°的數值以平根形式表示。
注意: 計算時要使用DEG MODE
按 tan( 30 EXE 再按 Prog 1 (顯示 1/3) EXE (顯示3)
所以 tan 30° = (1/3)√3
例題2: 化簡 √18
按 √( 18 EXE 再按 Prog 1 (顯示 3) EXE (顯示 2)
所以 √18 = 3√2
例題3: 化簡 √(8/27)
按 √(8÷27 EXE 再按 Prog 1 (顯示 2/9) EXE (顯示 6)
所以 √(8/27) = (2/9) √6
例題4: 化簡 (√8) / 400
按 √( 8 ) ÷ 400 EXE 再按 Prog 1 (顯示 1/200) EXE (顯示 2)
所以 (√8) / 400 = (√2) / 200
現時不少同類程式在計算例4問題時,速度會非常慢,甚至可以說無法求得答案(時間實在太長),亦可能會因此誤會是無法轉化為平方根形式,本程式解決了這方面問題,能夠很快得出正確答案。
例題5: 將 100 + 1 ÷ √( 11 ) - 100 的小數答案轉化為簡化平方根。
按 100 + 1 ÷ √( 11 ) - 100 EXE 再按 Prog 1 (顯示 1/11) EXE (顯示 11)
所以答案 = (√11) / 11
若果使用網頁尾的附錄程式或現時流行同類程式寫法,則無法得出例5的正確答案,甚至某些情況出現錯誤答案0,本程式經過特別的調整,克服了一般常見計算的誤差問題,增加了成功轉化為平方根的機會率。
註1: 若果小數不能轉化為 (a/b)√c的形式(其中a,b及c為整數),程式會長時間顯示空白,這時請按AC終止程式。另外,由於程式要化簡平方根所以時間會較長,特別是c的數值較大時。
註2: 這個程式改為以答案記憶(Ans)輸入數值,與傳統使字母記憶輸入不同,主要是考慮到一般算式運算不是在程式中進行,而且可以先觀察算式計算結果Ans,在有需要情況下才執行程式 (答案為整數、分數或簡單小數等情況(例如: sin 30=0.5),那麼根本就不需要使用程式進行轉化為平方根,減慢運算速度)。若果希望程式改為傳統字母記憶輸入,可以將程式開始的 "Ans→D" 改為 "?→D"即可。
註3: 若在程式執行中(顯示空白時)按AC終止程式,計數機會保持在小數零位(Fix 0)的設定。
附錄程式(簡化版程式,現時不少類似程式慣常寫法,某些情況速度會很慢,誤差稍大時會無法得出答案)
程式編寫日期: 2008年8月7日
程式 (82 bytes)
Ans→D: MM-: D2→C: Fix 0: While Ans: 1M+:
CM - Rnd( CM: WhileEnd: MCM→A: Rnd( √( A ) - . 5→B:
While Ans: A ÷ Ans2→C: C - Rnd( Ans
=> B - 1→B: WhileEnd: Norm 1: B┘M( D÷Abs( D◢ C