看板 Math 關於我們 聯絡資訊
※ 引述《driftseed (阿輝)》之銘言: : ※ 引述《EdisonX (閉上眼的魚)》之銘言: : : 大家好,我想知道一些非整數次方的算法,不用計算機,用手算即可, : : 只考慮實數係即可,可假設容許誤差為 10 ** -3。 : : 我找過一些資料了,目前比較有用的想法,以下面例子帶出 (恕數學不好)。 : : 2.5 ** 3.12 : : = 2.5 ** (3.0 + 0.12) : : = (2.5 ** 3.0) * (2.5 ** 0.12) : : = (2.5 ** 3.0) * (2.5 ** (12 / 100) ) : : = (2.5 ** 3.0) * ( (2.5 ** 12) ** 0.01 ) : : 這樣是先化成 (整數 + 小數),再將小數化成分數去計算, : : 但還是卡在 2.5 ** 0.01 (開 100 次根) 該如何算? : : 若真如此計算,速度略嫌慢,且在小數化為分數再計算時, : : 又怕誤差更大了。 : : 不知各位對於這問題有什麼想法?謝謝大家。 : 2.5^0.12 按計算機的結果為 1.116227714 : 計算方式為: : 估計一: : 2.5^0.12 ≒ (1.5*1.66667)^0.12 = (1.5^0.12) * (1.66667^0.12) : 而 1.5^0.12 ≒ 1+0.5*0.12 = 1.006 : 1.66667^0.12 ≒ 1+0.66667*0.12 ≒ 1.0800004 : 故 2.5^0.12 ≒ 1.006*1.0800004 = 1.08648 誤差2.7% : 估計二: : 2.5^0.12 ≒ {(1.2^5)*1.00469}^0.12 = (1.2^0.6) * (1.00469^0.12) : 而 1.2^0.6 ≒ 1+0.2*0.6 = 1.12 : 1.00469^0.12 ≒ 1+0.00469*0.12 = 1.0005628 : 故 2.5^0.12 ≒1.12*1.0005628=1.12063 誤差0.4% : 若 a、b 趨近於 0 時則有: : b : (1+a) ≒ 1 + ab 當底數是 a=e 的時候, a^b 是很容易計算的, 利用自然對數, 可以得到 2.5^0.12 = e^0.12*(2.5/e)^0.12 ~ e^0.12 *[ 1+ 0.12*(2.5/e - 1)] e^0.12=1+0.12+0.12^2/2 +0.12^3/6+... ~1.12+0.0072+0.0003 = 1.1275 Thus, 2.5^0.12 ~ 1.1275*(1 - 0.0096) ~ 1.1275-0.0108 = 1.1166 誤差 0.03% -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 131.215.220.164
EdisonX :耶,這樣的話不就可以直接用換底算就好,都不用化簡了? 09/03 17:09
Sfly :換底其實要算一下log 09/03 17:42
EdisonX :嗯嗯, 謝謝您的指教, 受益匪淺 09/03 17:44
driftseed :好方法 09/03 21:09