看板 MATLAB 關於我們 聯絡資訊
就是我會碰到一個情況 我的變數 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
aada: 我會加個0.0000001來避免照問題 04/06 20:23
worcdlo: 原本就不是準的吧? 光是42!就可以把mantissa塞爆了 04/06 21:16
worcdlo: 自己開個function寫個加法和乘法運算 想開幾格就開幾格 04/06 21:17
worcdlo: 我是說開矩陣陣列 取代原本參數型態精度的限制 04/06 21:19
lavifoxbat: 只是要近似值的話 取log變成加法 最後再exp回來? 04/07 02:27
worcdlo: exp回來還是會爆掉 不過樓上提供很好的想法 其實要分析 04/08 14:40
worcdlo: 的話 log後再分析也可以吧 單純空間不同 04/08 14:40