作者zxvc (眾生都是未來佛)
看板Math
標題[問題] 計算相對誤差平均值
時間Wed Sep 28 12:47:56 2016
我有一個電腦模擬要計算相對誤差的平均值,也就是E[Δh/h]。
我的作法是計算每個Δh/h取樣值,並累積後最後再除樣本數。
但一個問題是Δh或h都個別有可能趨近0,
所以無論是算h/Δh或算Δh/h,都有可能得到很大的值,
又累積好幾筆後常常得到無窮大值Inf。
請問有沒有一種轉換T可以把這種很大的Δh/h,
轉成較趨近0的值(這樣才不容易累加爆掉),
並且仍維持相對的大小關係:
Δh1/h1 < Δh2/h2 -> T(Δh1/h1) < T(Δh2/h2)
?
我想過用log,但不幸Δh/h可能是0,MATLAB中log(0) = -Inf,
就無法作圖...(而且h/Δh也有機會是0)
--
楞嚴咒(附注音):
http://1drv.ms/1c0YbNt
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.161.193.81
※ 文章網址: https://www.ptt.cc/bbs/Math/M.1475038079.A.E4C.html
※ 編輯: zxvc (118.161.193.81), 09/28/2016 12:50:35
※ 編輯: zxvc (118.161.193.81), 09/28/2016 12:52:33
推 LPH66 : Δh趨近 0 可能還好, h 趨近 0 要小心浮點數精準度 09/28 13:02
→ LPH66 : 不管是你的誤差計算或模擬都是一樣的 09/28 13:02
→ LPH66 : 這個精準度很有可能是為何你的Δh/h會很大的原因 09/28 13:03
推 arthurduh1 : 看你的 Δh/h 有沒有更好的算法 09/28 13:14
→ arthurduh1 : 若實際上精確值也會爆掉,嘗試忽略這些 sample 09/28 13:16
→ arthurduh1 : 若忽略這些 sample 會讓結果不合預期,這個問題可能 09/28 13:16
→ arthurduh1 : 本身就不是一個 stable 的問題 09/28 13:17
→ arthurduh1 : 至於你考慮的轉換,直接把 Δh/h 除個很大的值就好 09/28 13:30
→ arthurduh1 : 但相對的,本來正常的Δh/h就會變不正常 09/28 13:31
謝謝各位建議。
後來我發現我程式有bug,才導致有些h為0。修掉後就沒有Inf的問題 XD
※ 編輯: zxvc (118.161.193.81), 09/28/2016 18:50:44