[討論] 有辦法避免計算結果是inf嗎

看板MATLAB作者 (rffvb)時間7年前 (2017/04/06 20:18), 編輯推噓1(106)
留言7則, 3人參與, 最新討論串1/1
就是我會碰到一個情況 我的變數 product = (47!46!45!44!43!42!)^(-1) ( ! : factorial ) 47!46!45!44!43! 在matlab上算出來是兩百多位數 假如再乘上42! 在matlab上運算後會出現 Inf , Inf^(-1) = 0 這樣我的product 算出來等於0 , 帶進去equation算 就沒意義了 想請問當遇到這種 "很小很小" 或 "很大很大" 的值 要做運算的時候 是要去拆解那個值跟equation其他變數去做運算嗎 ? ( 還是這樣也沒有用?因為到時候那些值還是會乘在一起,然後最後在matlab上就會顯示I nf ) 還是有甚麼解決方法,可以朝那個方向去做? 我有嘗試過用 digits() ,vpa() 去控制運算的位數 但這樣是不是有點像把那個值truncate後去做運算 這樣精準度是不是就不是原本equation跑出來那麼準了 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.136.121.150 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1491481082.A.888.html

04/06 20:23, , 1F
我會加個0.0000001來避免照問題
04/06 20:23, 1F

04/06 21:16, , 2F
原本就不是準的吧? 光是42!就可以把mantissa塞爆了
04/06 21:16, 2F

04/06 21:17, , 3F
自己開個function寫個加法和乘法運算 想開幾格就開幾格
04/06 21:17, 3F

04/06 21:19, , 4F
我是說開矩陣陣列 取代原本參數型態精度的限制
04/06 21:19, 4F

04/07 02:27, , 5F
只是要近似值的話 取log變成加法 最後再exp回來?
04/07 02:27, 5F

04/08 14:40, , 6F
exp回來還是會爆掉 不過樓上提供很好的想法 其實要分析
04/08 14:40, 6F

04/08 14:40, , 7F
的話 log後再分析也可以吧 單純空間不同
04/08 14:40, 7F
文章代碼(AID): #1OvZ7wY8 (MATLAB)