小數轉換平方根

Conversion of decimal into square root

程式參考了網友 roviurymonday 提供的修改建議。

程式更新日期: 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

 

返回 CASIO fx-50FH、fx-3650P II、fx-50FH II及fx-50F PLUS 程式集