[其他] 數值分析 - 非整數次方 (幕次)
看板Prob_Solve (計算數學 Problem Solving)作者EdisonX (閉上眼的魚)時間13年前 (2011/09/02 18:12)推噓1(1推 0噓 1→)留言2則, 2人參與討論串1/1
※ [本文轉錄自 Math 看板 #1EOARBpm ]
作者: EdisonX (閉上眼的魚) 看板: Math
標題: [其他] 數值分析 - 非整數次方 (幕次)
時間: Fri Sep 2 17:49:56 2011
大家好,我想知道一些非整數次方的算法,不用計算機,用手算即可,
只考慮實數係即可,可假設容許誤差為 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) * ( 2.5 ** 0.01 ) )
這樣是先化成 (整數 + 小數),再將小數化成分數去計算,
但還是卡在 2.5 ** 0.01 (開 100 次根) 該如何算?
若真如此計算,速度略嫌慢,且在小數化為分數再計算時,
又怕誤差更大了。
--- 分隔線 --- 分隔線 ---
其實這是要寫 math.h 裡面的東西, 在完全不調用 math.h 函式下,
是否有什麼演算法可做?謝謝大家。
--
If there is no tomorrow,
I want to see u last time.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.177.78.41
推
09/02 22:27, , 1F
09/02 22:27, 1F
→
09/02 22:31, , 2F
09/02 22:31, 2F
謝謝 ledia 不吝出手相助, 但最後似乎還是會卡在 (x) ^ (0.01) 怎麼求,
這是我目前疑或的地方。
另想再多問的是, 若化簡到 x^ 0.234,是否可不用化成 x^(234)^(0.01)
或 x^234 * x^0.01 ,就直接算的算法?我怕化簡後誤差會大得太誇張 XD
--- 分隔線 --- 分隔線 ---
下面再補一下我的想法,我想過用 a^b = ln (b * exp (a) ),
exp(a) 用 Taylor 逼近, ln (b * exp(a) ) ,假設 b * exp(a) = x
去算 (1/t) 從 (1~x) dt 的積分, 這應就是結果.
但上面, Taylor 逼近 exp , 積分法求 ln , 這似乎非常耗時,
雖還沒實做過, 但比起一般 compiler 應慢十倍以上吧?
還是,要達到與 math.h 相仿,精度 DBL_EPS ,除了 _asm 沒第二條路?
上面, 不知我的想法有沒有暇疵?或是有其它不同方面的想法可供參考?
謝謝各位。
※ 編輯: EdisonX 來自: 180.177.78.41 (09/02 23:19)
Prob_Solve 近期熱門文章
PTT數位生活區 即時熱門文章