看板 Math 關於我們 聯絡資訊
我有一個電腦模擬要計算相對誤差的平均值,也就是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